debug

From DCEwiki
Jump to navigation Jump to search

Aktivuje odesílání výstupu z linuxové konzole během zavádění po síti na vzdálený server, kde může být zachytáván do logu.

Princip

Zprávy které diskless vypisuje na lokální konzoli během zavádění jsou viditelné pouze na monitoru. A logy uložené v RAM se při rebootu zahodí. Proto se hodí logování po síti, které lze aktivovat zavedením modulu netconsole.

Obsah obrazovky se ale neposílá automaticky celý. Chceme-li zprávu poslat po síti, je potřeba ji zapsat do /dev/kmsg, nebo využít funkci 'message' ze sdíleného skriptu _sdileno, která udělá to samé. U víceřádkových zpráv je ovšem potřeba využít malý trik:

echo """
  XXXX  XXX  XXX
 XX  XX  XX XX
 XX  XX  XXXX
 XX  XX  XX XX
  XXXX  XXX  XXX
""" | while IFS= read -r line ; do message "${line}" ; done

A je potřeba ve skriptech ošetřit také výstup spouštěných aplikací

grep ${STORAGE} /proc/mounts >/dev/kmsg 2<&1

Parametry pro diskless konfiguraci

logserver="192.168.136.6"
#remoteport="6000"

Je-li proměnná logserver zakomentovaná, posílají se zprávy na adresu 0.0.0.0 Číslo cílového portu na stroji adresovaném v proměnné logserver, se počítá z IPv4 adresy stroje. Proměnná remoteport umožňuje posunout utomaticky generovaná čísla těchto portů podle potřeby. Je-li zakomentovaná, používá se pro výpočet portu na který se budou data posílat výchozí hodnota 6000.

Chceme-li zachytávat konkrétní port, je potřeba vypočítat hodnotu pro remoteport následovně

$ port="8888"
$ IPv4="192.168.136.200"
$ cisloip=$(echo $IPv4 | tr . '\n' | awk '{s = s*256 + $1} END{printf ("%.0f\n", s)}' | cut -c7-10)
$ remoteport=$(($port - $cisloip))
$ echo $remoteport
$ 8538
$ echo $(($remoteport + $cisloip))
$ 8888

Jaké je aktuální nastavení lokální netconsole lze zjistit přes

# mount -t configfs none /pripojny_bod

A také ho lze vypnout

Verze

MD5SUM Velikost kB Datum vytvoření
7a60226f06cf16f0ba6ff7f626120077 1586 2024-01-12 první verze