Odp: Skrypt /sbin/sysinfo.sh
Dzieje się tak, że bez wpisu tego kodu do pliku profiles wyświetla wszystko chyba prawidłowo. Jak dokleję tą linijkę kodu to wyświetla dwa razy tabelkę.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Oprogramowanie / Software → Skrypt /sbin/sysinfo.sh
Strony Poprzednia 1 2 3 4 5 6 … 9 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
Dzieje się tak, że bez wpisu tego kodu do pliku profiles wyświetla wszystko chyba prawidłowo. Jak dokleję tą linijkę kodu to wyświetla dwa razy tabelkę.
Jeżeli umieściłeś to w /sbin/sysinfo.sh i specjalnie dopisałeś do /etc/profile to tak będzie, bo przecież tam już się domyślnie to woła. Czyli sam specjalnie dopisałeś jeszcze raz żeby się wyświetlało.
Ok. Zmyliła mnie informacja
Aby informacja wyświetlała się automatycznie po zalogowaniu należy do pliku /etc/profile dodać na końcu linie:
Witam. Jako, że spróbowałem owego skryptu (ver. 1.16 - czyli chyba ostatnia) z racji, iż odrobinę szukałem jak to ładnie ubrać w kolory skrypt obsego i znalazłem gotowy skrypt tutaj skupię się na tutejszym skrypcie - zawiera dokładnie to wszystko co chciałem docelowo i ja zrobić.
Jest jedynie pewny mankament dla innych urządzeń z nietypowym zestawem interfejsów czy też ustawieniem pliku /etc/config/network ręcznie w oparciu o schemat:
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config interface 'lan'
option ifname 'eth0'
option type 'bridge'
option proto 'static'
option netmask '255.255.255.0'
option macaddr 'xx:xx:xx:xx:xx:xx'
option ipaddr 'xx.xx.x1.81'
option gateway 'xx.xx.x1.1'
option dns 'xx.xx.x1.1'Powyżej i poniżej "x" oznacza proste zasłonięcie części adresu.
I to cała sieć [czyli po prostu karta ethernet ustawiona jako lan w ZyXEL NSA-310(build obsego i/lub moja podobna kompilacja), który jest podpięty do routera] - nie ma WIFI i nie będzie oraz co jedynie mogę dodać to openvpn/vpn/tor.
W wyniku zastosowania owego skryptu powstała taka info w terminalu:
----------------------------------------------------------------
| Machine: n/a, Name: nsa310 |
| System uptime: 1d 01:35:58, Now: 2013-06-25 17:22:42 |
| System load: 0.06, 0.03, 0.05 |
sh: 0: unknown operand
sh: 0: unknown operand
sh: 0: unknown operand
| Flash: total: 0B, used: 0B, %, free: 0B |
| Memory: total: 250.6MB, used: 36.6MB, 14.6%, free: 214.1MB |
| Swap: total: 486.0MB, used: 4KB, 0.0%, free: 486.0MB |
| LAN: xx.xx.x1.81/24(br-lan), dhcp: n/a |
----------------------------------------------------------------Co ewentualnie poprawić w moim /etc/config/network ? Dodam, że korzystam z serwera dns na routerze, w którym adresy przypisane są spoza puli dhcp oraz są skojarzone z adresami mac urządzeń - gargoyle, oraz ustawione jest aby urządzenia korzystały tylko z serwera dns na routerze. Lub inaczej - co należy zmienić w skrypcie aby pokazał to czego nie pokazuje (machine i dhcp) ?
Po zwyczajnym zahaszowaniu opcji ( #option type 'bridge' ) dodatkowo oprócz identycznego wyświetlania jak powyżej ukazał mi się błąd:
Jun 25 17:26:37 nsa310 daemon.warn dnsmasq[1936]: no servers found in /tmp/resolv.conf.auto, will retry
Przy kolejnym restarcie network po prostu już 2 identyczne błędy jak ten pierwszy. Po restarcie całego urządzenia z nowymi ustawieniami (opis wyżej) owego pliku /etc/config/network już nie widać wspomnianego błędu lub nie wszedł w zakres tych 5-ciu (pojawiły się inne błędy dotyczące dysku ale to już inna bajka) - w każdym bądź razie ze startu urządzenia w logread widać takie info odnoście eth0:
Jan 1 01:00:36 nsa310 user.notice firewall: Reloading firewall due to ifup of lan (eth0)
Jan 1 01:00:38 nsa310 kern.info kernel: [ 44.490851] r8169 0000:00:01.0: eth0: link up
Jan 1 01:00:41 nsa310 authpriv.info dropbear[1878]: Running in background
Jan 1 01:00:41 nsa310 user.info sysinit: 1970-01-01 01:00:41: (log.c.166) server started
Jan 1 01:00:42 nsa310 user.notice dnsmasq: DNS rebinding protection is active, will discard upstream RFC1918 responses!
Jan 1 01:00:42 nsa310 user.notice dnsmasq: Allowing 127.0.0.0/8 responses
Jan 1 01:00:42 nsa310 daemon.info dnsmasq[1936]: started, version 2.66 cachesize 150
Jan 1 01:00:42 nsa310 daemon.info dnsmasq[1936]: compile time options: IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth
Jan 1 01:00:42 nsa310 daemon.info dnsmasq[1936]: using local addresses only for domain lan
Jan 1 01:00:42 nsa310 daemon.info dnsmasq[1936]: reading /tmp/resolv.conf.auto
Jan 1 01:00:42 nsa310 daemon.info dnsmasq[1936]: using nameserver xx.xx.xx.1#53
Jan 1 01:00:42 nsa310 daemon.info dnsmasq[1936]: using local addresses only for domain lan
Jan 1 01:00:42 nsa310 daemon.info dnsmasq[1936]: read /etc/hosts - 1 addressesnatomiast dmesg pokazuje to w interesujących miejscach dotyczących sieci na eth0 i ogólnie sieci:
[ 38.568474] r8169 0000:00:01.0: eth0: RTL8168d/8111d at 0xd0a2c000, 00:00:00:00:00:30, XID 083000c0 IRQ 9
[ 38.578121] r8169 0000:00:01.0: eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]
...
...
...
[ 42.318944] r8169 0000:00:01.0: eth0: link down
[ 42.323500] r8169 0000:00:01.0: eth0: link down
[ 44.490851] r8169 0000:00:01.0: eth0: link upGeneralnie przy tym jak i poprzednim, opisanym wyżej ustawieniu /etc/config/network działa dobrze. Gdy nie ustawię gateway oraz dns - w ogóle nie działa sieć - dodanie opcji o ignorowaniu dhcp na lokalnym lan jednak nie pomogło jak wspominałeś obsy. W Twoim buildzie obsy działa mi sieć tylko jak zupełnie odinstaluję dnsmasq. W moim, podobnym buildzie działa po mimo jego zainstalowania na domyślnych ustawieniach z openwrt ale tylko jak ustawię generalnie dns i gateway - także nadal nie ma żadnej automatyki przy tworzeniu prawidłowo interfejsu sieciowego oraz jego konfiguracji. I tu zmierzam do końca - jak w takich realiach jak opisałem powyżej uzyskać cały możliwy zasób informacji z tego skryptu wer. 1.16 oraz co zmienić lub może co by autor zaproponował powiedzmy w wer. 1.17 aby wszystko grało i nie było wspomnianego błędu podstawowego w samym wyświetlaniu:
sh: 0: unknown operand
sh: 0: unknown operand
sh: 0: unknown operandjak w wyżej przedstawionym listingu z terminala ?
Witaj,
wydaj proszę komendę df /overlay.
Nie ma, puste jest. Omawiany sprzęt nie ma /overalaya (nic tam nie jest montowane).
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 3366712 112596 3083220 4% /Oczywiście istnieje to wszystko (system) tylko na pendrive - generalnie mtd nieruszane - tzw. wersja live-usb
dla porządku dodam tylko wynik samego df:
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 3366712 112596 3083220 4% /
/dev/root 3366712 112596 3083220 4% /
tmpfs 128320 248 128072 0% /tmp
tmpfs 512 0 512 0% /dev
/dev/sdb2 243885200 231385968 290636 100% /homeNo, to proszę nowa wersja skryptu:
#!/bin/sh
#
# sysinfo.sh dla OpenWRT AA Cezary Jackiewicz 2013
#
# 1.00 CJ Pierwsza wersja kodu
# 1.01 RD Drobna przebudowa
# 1.02 RD Korekta błędu wyśw. zajetości Flash-a, dodanie kolorów
# 1.03 RD Dodanie nazwy routera, zmiana formatowania
# 1.04 RD Kosmetyka, sugestie @mikhnal. Zmiana przetwarzania info. o wan.
# 1.05 RD Zmiana algorytmu pobierania danych dla wan i lan
# 1.06 RD Parametryzacja kolorów i pojawiania się podkreśleń
# 1.07 RD Modyfikacja związana z poprawnym wyświetlaniem interfejsu dla prot.3g
# 1.08 RD Modyfikacja wyświetlania DNS-ów dla wan, dodanie uptime dla interfejsów
# 1.09 RD Dodanie statusu "Down" dla wyłączonego wifi, zmiana wyświetlania dla WLAN(sta)
# 1.10 RD Korekta wyświetlania dla WLAN(sta)
# 1.11 RD Korekta wyświetlania stanu pamięci, sugestie @dopsz
# 1.12 RD Zmiana kolejności wyświetlania wartości stanu pamięci + kosmetyka
# 1.13 RD Dodanie info o dhcp w LAN, zmiana sposobu wyświetlania informacji o LAN
# 1.14 RD Dodanie informacji o ostatnich 5 błędach
# 1.15 RD Zmiana stderr
# 1.16 RD Dodanie wyświetlania informacji o swap
# 1.17 RD Zmiana wyliczania informacji o flash
# 1.18 RD Zmiana wyświetlania informacji o flash
#
# Destination /sbin/sysinfo.sh
#
. /usr/share/libubox/jshn.sh
local Width=60
local StartRuler="1"
local EndRuler="1"
local LastErrors="1"
local NormalColor=""
local MachineColor=""
local ValueColor=""
local AddrColor=""
local RXTXColor=""
local ErrorColor=""
local ExtraName=""
local ExtraValue=""
initialize() { # <Script Parameters>
local ColorMode="c"
while [ -n "$1" ]; do
case "$1" in
-h|--help) echo -e "Usage: $0 [-h|--help] [[-m|--mono]|[-bw|-black-white]|[-c2|--color-2]] [-sr|--no-start-ruler] [-er|--no-end-ruler]"\
"[-w N|--width N] [-en Name|--extra-name Name] [-ev Value|--extra-value Value] [-le|--no-last-err]"\
"\n\t-h\t\tThis help,"\
"\n\t-m\t\tDisplay mono version,"\
"\n\t-bw\t\tDisplay black-white version,"\
"\n\t-c2\t\tDisplay alternative color version 2,"\
"\n\t-sr\t\tWithout start horizontal ruler,"\
"\n\t-er\t\tWithout end horizontal ruler,"\
"\n\t-w N\t\tSet width of text area to N characters (minimum 60)"\
"\n\t-en Name\tPrint extra name"\
"\n\t-ev Value\tPrint extra value"\
"\n\t-le\t\tDon't display last errors"
exit 1;;
-m|--mono) ColorMode="m";;
-bw|--black-white) ColorMode="bw";;
-c2|--color-2) ColorMode="c2";;
-sr|--no-start-ruler) StartRuler="0";;
-er|--no-end-ruler) EndRuler="0";;
-w|--width) shift; Width=$1;;
-en|--extra-name) while [ -n "$2" ] && [ "${2:0:1}" != "-" ]; do
shift
[ "$ExtraName" != "" ] && ExtraName="$ExtraName "
ExtraName="$ExtraName$1"
done;;
-ev|--extra-value) while [ -n "$2" ] && [ "${2:0:1}" != "-" ]; do
shift
[ "$ExtraValue" != "" ] && ExtraValue="$ExtraValue "
ExtraValue="$ExtraValue$1"
done;;
-le|--no-last-err) LastErrors="0";;
*) echo "Invalid option: $1. Use -h for help";;
esac
shift;
done
case "$ColorMode" in
c) NormalColor="\e[0m"
MachineColor="\e[0;33m"
ValueColor="\e[1;36m"
AddrColor="\e[1;31m"
RXTXColor="\e[2;32m"
ErrorColor="\e[0;31m";;
c2) NormalColor="\e[0m"
MachineColor="\e[0;31m"
ValueColor="\e[0;33m"
AddrColor="\e[0;35m"
RXTXColor="\e[0;36m"
ErrorColor="\e[0;31m";;
m) NormalColor="\e[0m"
MachineColor="\e[7m"
ValueColor="\e[1m"
AddrColor="\e[4m"
RXTXColor="\e[1m"
ErrorColor="\e[4";;
*) ;;
esac
([ "$Width" == "" ] || [ "$Width" -lt 60 ]) && Width=60
}
human_readable() { # <Number of bytes>
if [ $1 -gt 0 ]; then
printf "$(awk -v n=$1 'BEGIN{for(i=split("B KB MB GB TB PB",suffix);s<1;i--)s=n/(2**(10*i));printf (int(s)==s)?"%.0f%s":"%.1f%s",s,suffix[i+2]}' 2>/dev/null)"
else
printf "0B"
fi
}
device_rx_tx() { # <Device>
local RXTX=$(awk -v Device=$1 '$1==Device ":"{printf "%.0f\t%.0f",$2,$10}' /proc/net/dev 2>/dev/null)
[ "$RXTX" != "" ] && printf ", rx/tx: $RXTXColor$(human_readable $(echo "$RXTX" | cut -f 1))$NormalColor/$RXTXColor$(human_readable $(echo "$RXTX" | cut -f 2))$NormalColor"
}
uptime_str() { # <Time in Seconds>
local Uptime=$1
if [ $Uptime -gt 0 ]; then
local Days=$(expr $Uptime / 60 / 60 / 24)
local Hours=$(expr $Uptime / 60 / 60 % 24)
local Minutes=$(expr $Uptime / 60 % 60)
local Seconds=$(expr $Uptime % 60)
if [ $Days -gt 0 ]; then
Days=$(printf "%dd " $Days)
else
Days=""
fi
printf "$Days%02d:%02d:%02d" $Hours $Minutes $Seconds
fi
}
print_line() { # <String to Print>, [[<String to Print>] ...]
local Line="$@"
printf " | %-${Width}s |\r | $Line\n" 2>/dev/null
}
print_horizontal_ruler() {
printf "/%$(expr $Width + 4 )s\n" | tr ' /' '- ' 2>/dev/null
}
print_machine() {
local Machine=""
local HostName=$(uci -q get system.@system[0].hostname)
[ -e /tmp/sysinfo/model ] && Machine=$(cat /tmp/sysinfo/model 2>/dev/null)
print_line "Machine: $MachineColor${Machine:-n/a}$NormalColor,"\
"Name: $MachineColor${HostName:-n/a}$NormalColor"
}
print_times() {
local SysUptime=$(cut -d. -f1 /proc/uptime)
local Uptime=$(uptime_str $SysUptime)
local Now=$(date +'%Y-%m-%d %H:%M:%S')
print_line "System uptime: $ValueColor$Uptime$NormalColor,"\
"Now: $ValueColor$Now$NormalColor"
}
print_loadavg() {
local LoadAvg=$(awk '{printf"'$ValueColor'%s'$NormalColor', '$ValueColor'%s'$NormalColor', '$ValueColor'%s'$NormalColor'",$1,$2,$3}' /proc/loadavg 2>/dev/null)
print_line "System load: $LoadAvg"
}
print_flash() {
local Flash=$(df -k /overlay 2>/dev/null| awk 'BEGIN{Total=0;Free=0}/\/overlay/{Total=$2;Free=$4}END{Used=Total-Free;printf"%.0f\t%.0f\t%.1f\t%.0f",Total*1024,Used*1024,(Total>0)?((Used/Total)*100):0,Free*1024}' 2>/dev/null)
local Total=$(echo "$Flash" | cut -f 1)
local Used=$(echo "$Flash" | cut -f 2)
local UsedPercent=$(echo "$Flash" | cut -f 3)
local Free=$(echo "$Flash" | cut -f 4)
[ "$Total" -gt 0 ] && print_line "Flash:"\
"total: $ValueColor$(human_readable $Total)$NormalColor,"\
"used: $ValueColor$(human_readable $Used)$NormalColor, $ValueColor$UsedPercent$NormalColor%%,"\
"free: $ValueColor$(human_readable $Free)$NormalColor"
}
print_memory() {
local Memory=$(awk 'BEGIN{Total=0;Free=0}$1~/^MemTotal:/{Total=$2}$1~/^MemFree:|^Buffers:|^Cached:/{Free+=$2}END{Used=Total-Free;printf"%.0f\t%.0f\t%.1f\t%.0f",Total*1024,Used*1024,(Total>0)?((Used/Total)*100):0,Free*1024}' /proc/meminfo 2>/dev/null)
local Total=$(echo "$Memory" | cut -f 1)
local Used=$(echo "$Memory" | cut -f 2)
local UsedPercent=$(echo "$Memory" | cut -f 3)
local Free=$(echo "$Memory" | cut -f 4)
print_line "Memory:"\
"total: $ValueColor$(human_readable $Total)$NormalColor,"\
"used: $ValueColor$(human_readable $Used)$NormalColor, $ValueColor$UsedPercent$NormalColor%%,"\
"free: $ValueColor$(human_readable $Free)$NormalColor"
}
print_swap() {
local Swap=$(awk 'BEGIN{Total=0;Free=0}$1~/^SwapTotal:/{Total=$2}$1~/^SwapFree:/{Free=$2}END{Used=Total-Free;printf"%.0f\t%.0f\t%.1f\t%.0f",Total*1024,Used*1024,(Total>0)?((Used/Total)*100):0,Free*1024}' /proc/meminfo 2>/dev/null)
local Total=$(echo "$Swap" | cut -f 1)
local Used=$(echo "$Swap" | cut -f 2)
local UsedPercent=$(echo "$Swap" | cut -f 3)
local Free=$(echo "$Swap" | cut -f 4)
[ "$Total" -gt 0 ] && print_line "Swap:"\
"total: $ValueColor$(human_readable $Total)$NormalColor,"\
"used: $ValueColor$(human_readable $Used)$NormalColor, $ValueColor$UsedPercent$NormalColor%%,"\
"free: $ValueColor$(human_readable $Free)$NormalColor"
}
print_wan() {
local Zone
local Device
for Zone in $(uci -q show firewall | grep .masq= | cut -f2 -d.); do
if [ "$(uci -q get firewall.$Zone.masq)" == "1" ]; then
for Device in $(uci -q get firewall.$Zone.network); do
local Status="$(ubus call network.interface.$Device status 2>/dev/null)"
if [ "$Status" != "" ]; then
local State=""
local Iface=""
local Uptime=""
local IP4=""
local IP6=""
local Subnet4=""
local Subnet6=""
local Gateway4=""
local Gateway6=""
local DNS=""
local Protocol=""
json_load "${Status:-{}}"
json_get_var State up
json_get_var Uptime uptime
json_get_var Iface l3_device
json_get_var Protocol proto
if json_get_type Status ipv4_address && [ "$Status" = array ]; then
json_select ipv4_address
json_get_type Status 1
if [ "$Status" = object ]; then
json_select 1
json_get_var IP4 address
json_get_var Subnet4 mask
[ "$IP4" != "" ] && [ "$Subnet4" != "" ] && IP4="$IP4/$Subnet4"
fi
fi
json_select
if json_get_type Status ipv6_address && [ "$Status" = array ]; then
json_select ipv6_address
json_get_type Status 1
if [ "$Status" = object ]; then
json_select 1
json_get_var IP6 address
json_get_var Subnet6 mask
[ "$IP6" != "" ] && [ "$Subnet6" != "" ] && IP6="$IP6/$Subnet6"
fi
fi
json_select
if json_get_type Status route && [ "$Status" = array ]; then
json_select route
local Index="1"
while json_get_type Status $Index && [ "$Status" = object ]; do
json_select "$((Index++))"
json_get_var Status target
case "$Status" in
0.0.0.0)
json_get_var Gateway4 nexthop;;
::)
json_get_var Gateway6 nexthop;;
esac
json_select ".."
done
fi
json_select
if json_get_type Status dns_server && [ "$Status" = array ]; then
json_select dns_server
local Index="1"
while json_get_type Status $Index && [ "$Status" = string ]; do
json_get_var Status "$((Index++))"
DNS="${DNS:+$DNS }$Status"
done
fi
if [ "$State" == "1" ]; then
[ "$IP4" != "" ] && print_line "WAN: $AddrColor$IP4$NormalColor($Iface),"\
"gateway: $AddrColor${Gateway4:-n/a}$NormalColor"
[ "$IP6" != "" ] && print_line "WAN: $AddrColor$IP6$NormalColor($Iface),"\
"gateway: $AddrColor${Gateway6:-n/a}$NormalColor"
print_line "proto: $ValueColor${Protocol:-n/a}$NormalColor,"\
"uptime: $ValueColor$(uptime_str $Uptime)$NormalColor$(device_rx_tx $Iface)"
[ "$DNS" != "" ] && print_line "dns: $AddrColor$DNS$NormalColor"
fi
fi
done
fi
done
}
print_lan() {
local Zone
local Device
for Zone in $(uci -q show firewall | grep []]=zone | cut -f2 -d. | cut -f1 -d=); do
if [ "$(uci -q get firewall.$Zone.masq)" != "1" ]; then
for Device in $(uci -q get firewall.$Zone.network); do
local Status="$(ubus call network.interface.$Device status 2>/dev/null)"
if [ "$Status" != "" ]; then
local State=""
local Iface=""
local IP4=""
local IP6=""
local Subnet4=""
local Subnet6=""
json_load "${Status:-{}}"
json_get_var State up
json_get_var Iface device
if json_get_type Status ipv4_address && [ "$Status" = array ]; then
json_select ipv4_address
json_get_type Status 1
if [ "$Status" = object ]; then
json_select 1
json_get_var IP4 address
json_get_var Subnet4 mask
[ "$IP4" != "" ] && [ "$Subnet4" != "" ] && IP4="$IP4/$Subnet4"
fi
fi
json_select
if json_get_type Status ipv6_address && [ "$Status" = array ]; then
json_select ipv6_address
json_get_type Status 1
if [ "$Status" = object ]; then
json_select 1
json_get_var IP6 address
json_get_var Subnet6 mask
[ "$IP6" != "" ] && [ "$Subnet6" != "" ] && IP6="$IP6/$Subnet6"
fi
fi
local DHCPConfig=$(uci -q show dhcp | grep .interface=$Device | cut -d. -f2)
if [ "$DHCPConfig" != "" ] && [ "$(uci -q get dhcp.$DHCPConfig.ignore)" != "1" ]; then
local DHCPStart=$(uci -q get dhcp.$DHCPConfig.start)
local DHCPLimit=$(uci -q get dhcp.$DHCPConfig.limit)
[ "$DHCPStart" != "" ] && [ "$DHCPLimit" != "" ] && DHCP="$(echo $IP4 | cut -d. -f1-3).$DHCPStart-$(expr $DHCPStart + $DHCPLimit - 1)"
fi
[ "$IP4" != "" ] && print_line "LAN: $AddrColor$IP4$NormalColor($Iface), dhcp: $AddrColor${DHCP:-n/a}$NormalColor"
[ "$IP6" != "" ] && print_line "LAN: $AddrColor$IP6$NormalColor($Iface)"
fi
done
fi
done
}
print_wlan() {
local Iface
for Iface in $(uci -q show wireless | grep device=radio | cut -f2 -d.); do
local Device=$(uci -q get wireless.$Iface.device)
local SSID=$(uci -q get wireless.$Iface.ssid)
local IfaceDisabled=$(uci -q get wireless.$Iface.disabled)
local DeviceDisabled=$(uci -q get wireless.$Device.disabled)
if [ -n "$SSID" ] && [ "$IfaceDisabled" != "1" ] && [ "$DeviceDisabled" != "1" ]; then
local Mode=$(uci -q -P /var/state get wireless.$Iface.mode)
local Channel=$(uci -q get wireless.$Device.channel)
local RadioIface=$(uci -q -P /var/state get wireless.$Iface.ifname)
local Connection="Down"
if [ -n "$RadioIface" ]; then
if [ "$Mode" == "ap" ]; then
Connection="$(iw dev $RadioIface station dump | grep Station | wc -l 2>/dev/null)"
else
Connection="$(iw dev $RadioIface link | awk 'BEGIN{FS=": ";Signal="";Bitrate=""} $1~/signal/ {Signal=$2} $1~/tx bitrate/ {Bitrate=$2}END{print Signal" "Bitrate}' 2>/dev/null)"
fi
fi
if [ "$Mode" == "ap" ]; then
print_line "WLAN: $ValueColor$SSID$NormalColor($Mode),"\
"ch: $ValueColor${Channel:-n/a}$NormalColor,"\
"conn: $ValueColor$Connection$NormalColor$(device_rx_tx $RadioIface)"
else
print_line "WLAN: $ValueColor$SSID$NormalColor($Mode),"\
"ch: $ValueColor${Channel:-n/a}$NormalColor"
print_line "conn: $ValueColor$Connection$NormalColor$(device_rx_tx $RadioIface)"
fi
fi
done
}
print_vpn() {
local VPN
for VPN in $(uci -q show openvpn | grep .ca= | cut -f2 -d.); do
local Device=$(uci -q get openvpn.$VPN.dev)
local Enabled=$(uci -q get openvpn.$VPN.enabled)
if [ "$Enabled" == "1" ] || [ "$Enabled" == "" ]; then
local Mode=$(uci -q get openvpn.$VPN.mode)
local Connection="n/a"
if [ "$Mode" == "server" ]; then
Mode="$ValueColor$VPN$NormalColor(svr):$(uci -q get openvpn.$VPN.port)"
Status=$(uci -q get openvpn.$VPN.status)
Connection=$(awk 'BEGIN{FS=",";c=0;l=0}{if($1=="Common Name")l=1;else if($1=="ROUTING TABLE")exit;else if (l==1) c=c+1}END{print c}' $Status 2>/dev/null)
else
Mode="$ValueColor$VPN$NormalColor(cli)"
Connection="Down"
ifconfig $Device &>/dev/null && Connection="Up"
fi
print_line "VPN: $Mode,"\
"conn: $ValueColor$Connection$NormalColor$(device_rx_tx $Device)"
fi
done
}
print_extra() {
([ "$ExtraName" != "" ] || [ "$ExtraValue" != "" ]) && print_line "$ExtraName $ValueColor$ExtraValue$NormalColor"
}
print_error() {
logread | awk '/\w{3}+\.(err|warn|alert|emerg|crit)/{err[++i]=$0}END{j=i-4;j=j>=1?j:1;while(j<=i)print" '$ErrorColor'"err[j++]"'$NormalColor'"}' 2>/dev/null
}
initialize $@
[ "$StartRuler" == "1" ] && print_horizontal_ruler
print_machine
print_times
print_loadavg
print_flash
print_memory
print_swap
print_wan
print_lan
print_wlan
print_vpn
print_extra
[ "$EndRuler" == "1" ] && print_horizontal_ruler
[ "$LastErrors" == "1" ] && print_error
exit 0
# Done.Żadnych zmian - nadal wyświetla te same błędy co opisane wcześniej + nie podaje dokładnie tych samych informacji. Jednak w wersji skryptu obsego machine czyta prawidłowo - w Twoim nadal wcale Rafcik.
Generalnie pojawił sie nowy błąd lub brak info. Flash jest owszem 0 ale za to brak w ogóle info o rootfs czyli niejako dysku /, chociaż robi za niego oczywiście pendrive.
Sorki -teraz dostrzegłem - poprzednio też nie pokazywał informacji o dysku/pendrive - także i to ogólnie i o to chodzi.
Nadal jest tak
sh: 0: unknown operand
sh: 0: unknown operand
sh: 0: unknown operand?
Tak jak wspomniałem - nadal to jest - czyli identyczny wynik jak w listingu z postu nr. 79, czyli pierwszego postu o moim problemie.
Jeżeli chodzi o skrypt to ostatnia wersja nie powinna wyświetlać:
sh: 0: unknown operandPokaż sekcje lan z pliku /etc/config/dhcp i zawartość pliku /tmp/sysinfo/model.
Nie ma /tmp/sysinfo/model
Dla tej platformy jest to
MACH=$(awk -F: '/Hardware/ {print $2}' /proc/cpuinfo). Dla ramipsów - machine z /proc/cpuinfo.
/etc/config/dhcp taki sam czysty jak po instalacji - w ogóle chyba system z niego nie korzysta w pełni w tym przypadku:
config dnsmasq
option domainneeded '1'
option boguspriv '1'
option filterwin2k '0'
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option nonegcache '0'
option authoritative '1'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.auto'
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option ignore '1'
config dhcp 'wan'
option interface 'wan'
option ignore '1'co do wspomnianego drugiego pliku nie mam go - skrypt uruchomiłem z palca z innego miejsca jako root:
root@nsa310/root# ls /tmp/sysinfo/model
ls: /tmp/sysinfo/model: No such file or directory
root@nsa310/root/etc/profile w końcówce dotyczącej /sbin/sysinfo.sh oryginalny z buildu obsego:
...
[ -f /tmp/.failsafe -a -f /etc/banner.failsafe ] && cat /etc/banner.failsafe || /sbin/sysinfo.sh
export HISTFILE=/tmp/.historyNadal go używam - jedynie chciałem przetestować co pokazuje wynik działania owego sysinfo.sh.
Czy dopisanie wcześniej wspomnianej modyfikacji jest potrzebne gdy korzystam tylko póki co z uruchamiania owego skryptu (czyli Twojego Rafcik w wersji obecnie 1.18) z palca ?:
[ -x /sbin/sysinfo.sh ] && /sbin/sysinfo.sh -srW każdym bądź razie uruchomeinie tego skryptu jako root w ten sposób:
/tam/gdzie/leży/sysinfo.sh -srpowoduje identyczne wyświetlanie jak poprzednio - czyli nadal z tymi samymi błędami i brakiem wspomnianych wcześniej danych.
jego uprawnienia to:
-rwxr--r--ups...soraki...he...korzystałem jednak z wersji 1.16 (jakimś cudem kopiowanie przez sambę , czy też nadpisanie zawartości pliku w gedit sie nie powiodło) jak się okazuje - po wgraniu ostatniej wersji (1.18) na /tam/gdzie/leży (uprawnienia pliku te same) jednak nadal brak wspomnianych informacji ale już faktycznie nie pluje błędami tymi co poprzednio, może wkleję dla wyjaśnienia co mi pokazuje:
----------------------------------------------------------------
| Machine: n/a, Name: nsa310 |
| System uptime: 06:08:27, Now: 2013-06-25 23:45:28 |
| System load: 0.00, 0.01, 0.05 |
| Memory: total: 250.6MB, used: 34.0MB, 13.5%, free: 216.7MB |
| Swap: total: 486.0MB, used: 0B, 0.0%, free: 486.0MB |
| LAN: xx.xx.x1.81/24(eth0), dhcp: n/a |
----------------------------------------------------------------
Jan 1 01:00:33 nsa310 kern.err kernel: [ 8.906877] sd 0:0:0:0: [sda] Assuming drive cache: write through
Jan 1 01:00:33 nsa310 kern.err kernel: [ 8.918865] sd 0:0:0:0: [sda] No Caching mode page present
Jan 1 01:00:33 nsa310 kern.err kernel: [ 8.924395] sd 0:0:0:0: [sda] Assuming drive cache: write through
Jan 1 01:00:33 nsa310 kern.err kernel: [ 12.051873] EXT4-fs (sda1): couldn't mount as ext3 due to feature incompatibilities
Jan 1 01:00:33 nsa310 kern.warn kernel: [ 12.075624] EXT4-fs (sda1): warning: mounting unchecked fs, running e2fsck is recommended- znaki "x" to oczywiście zakryta część adresu, który jest oczywiście prawidłowy.
Generalnie teraz w ogóle brak jakiejkolwiek info o pendrive czy w ogóle dysku (czyli /dev/sdb2 jak listowałem wcześniej - /dev/sdb1 to nieużywany w tej chwili swap, główny swap mam na pendrive jako /dev/sda2 a rootfs to /dev/sda1). W chwili obecnej na stałe w systemie korzystam z takiej formy pliku /sbin/sysinfo.sh: http://openrouter.info/forum/viewtopic. … 884#p28884
Tak w ogóle w kwestiach tzw. kosmetyki wyglądu przydało by się Rafcio jednak oddalić nawias od IP (tu generalnie chyba strefy LAN ??? - w końcu to tylko adres IP z innego serwera dhcp, sam w sobie przecież nie może być lokalnym LAN, tudzież i/lub nie powinien), bo trochę to nieelegancko wygląda:
LAN: xx.xx.x1.81/24(eth0), dhcp: n/aDOPIS:
Czy u Ciebie obsy forum faktycznie z natury tak wolno się wczytuje przy pisaniu postów/edytowaniu tychże ? Tak moim skromnym zdaniem przy okazji dywagacji na temat skryptu sysinfo.sh wykazałem/odkryłem przez przypadek istotną słabość openwrt jako takiego w sensie rozwiązania różnych możliwych scenariuszy istnienia już określonej infrastruktury LAN +/lub jakiś błąd/"niedopowiedzenie"/"nieuwzglednienie" w gargoyle w sensie serwera dhcp.
Nie ma /tmp/sysinfo/model
Dla tej platformy jest to
MACH=$(awk -F: '/Hardware/ {print $2}' /proc/cpuinfo). Dla ramipsów - machine z /proc/cpuinfo.
A to ci.;-) Uczę się cały czas pilnie i głupi umre:-D
Będzie kolejna wersja.
@build dhcp dla lan w konfiguracji masz wyłączone stąd sysinfo.sh wyswietla n/a.
Błędy w logu są więc się wyświetlają.
Kolejna wersja skryptu :
#!/bin/sh
#
# sysinfo.sh dla OpenWRT AA Cezary Jackiewicz 2013
#
# 1.00 CJ Pierwsza wersja kodu
# 1.01 RD Drobna przebudowa
# 1.02 RD Korekta b³êdu wyœw. zajetoœci Flash-a, dodanie kolorów
# 1.03 RD Dodanie nazwy routera, zmiana formatowania
# 1.04 RD Kosmetyka, sugestie @mikhnal. Zmiana przetwarzania info. o wan.
# 1.05 RD Zmiana algorytmu pobierania danych dla wan i lan
# 1.06 RD Parametryzacja kolorów i pojawiania siê podkreœleñ
# 1.07 RD Modyfikacja zwi¹zana z poprawnym wyœwietlaniem interfejsu dla prot.3g
# 1.08 RD Modyfikacja wyœwietlania DNS-ów dla wan, dodanie uptime dla interfejsów
# 1.09 RD Dodanie statusu "Down" dla wy³¹czonego wifi, zmiana wyœwietlania dla WLAN(sta)
# 1.10 RD Korekta wyœwietlania dla WLAN(sta)
# 1.11 RD Korekta wyœwietlania stanu pamiêci, sugestie @dopsz
# 1.12 RD Zmiana kolejnoœci wyœwietlania wartoœci stanu pamiêci + kosmetyka
# 1.13 RD Dodanie info o dhcp w LAN, zmiana sposobu wyœwietlania informacji o LAN
# 1.14 RD Dodanie informacji o ostatnich 5 b³êdach
# 1.15 RD Zmiana stderr
# 1.16 RD Dodanie wyœwietlania informacji o swap
# 1.17 RD Zmiana wyliczania informacji o flash
# 1.18 RD Zmiana wyœwietlania informacji o flash
# 1.19 RD Zmiana wyœwietlania informacji o sprzêcie
#
# Destination /sbin/sysinfo.sh
#
. /usr/share/libubox/jshn.sh
local Width=60
local StartRuler="1"
local EndRuler="1"
local LastErrors="1"
local NormalColor=""
local MachineColor=""
local ValueColor=""
local AddrColor=""
local RXTXColor=""
local ErrorColor=""
local ExtraName=""
local ExtraValue=""
initialize() { # <Script Parameters>
local ColorMode="c"
while [ -n "$1" ]; do
case "$1" in
-h|--help) echo -e "Usage: $0 [-h|--help] [[-m|--mono]|[-bw|-black-white]|[-c2|--color-2]] [-sr|--no-start-ruler] [-er|--no-end-ruler]"\
"[-w N|--width N] [-en Name|--extra-name Name] [-ev Value|--extra-value Value] [-le|--no-last-err]"\
"\n\t-h\t\tThis help,"\
"\n\t-m\t\tDisplay mono version,"\
"\n\t-bw\t\tDisplay black-white version,"\
"\n\t-c2\t\tDisplay alternative color version 2,"\
"\n\t-sr\t\tWithout start horizontal ruler,"\
"\n\t-er\t\tWithout end horizontal ruler,"\
"\n\t-w N\t\tSet width of text area to N characters (minimum 60)"\
"\n\t-en Name\tPrint extra name"\
"\n\t-ev Value\tPrint extra value"\
"\n\t-le\t\tDon't display last errors"
exit 1;;
-m|--mono) ColorMode="m";;
-bw|--black-white) ColorMode="bw";;
-c2|--color-2) ColorMode="c2";;
-sr|--no-start-ruler) StartRuler="0";;
-er|--no-end-ruler) EndRuler="0";;
-w|--width) shift; Width=$1;;
-en|--extra-name) while [ -n "$2" ] && [ "${2:0:1}" != "-" ]; do
shift
[ "$ExtraName" != "" ] && ExtraName="$ExtraName "
ExtraName="$ExtraName$1"
done;;
-ev|--extra-value) while [ -n "$2" ] && [ "${2:0:1}" != "-" ]; do
shift
[ "$ExtraValue" != "" ] && ExtraValue="$ExtraValue "
ExtraValue="$ExtraValue$1"
done;;
-le|--no-last-err) LastErrors="0";;
*) echo "Invalid option: $1. Use -h for help";;
esac
shift;
done
case "$ColorMode" in
c) NormalColor="\e[0m"
MachineColor="\e[0;33m"
ValueColor="\e[1;36m"
AddrColor="\e[1;31m"
RXTXColor="\e[2;32m"
ErrorColor="\e[0;31m";;
c2) NormalColor="\e[0m"
MachineColor="\e[0;31m"
ValueColor="\e[0;33m"
AddrColor="\e[0;35m"
RXTXColor="\e[0;36m"
ErrorColor="\e[0;31m";;
m) NormalColor="\e[0m"
MachineColor="\e[7m"
ValueColor="\e[1m"
AddrColor="\e[4m"
RXTXColor="\e[1m"
ErrorColor="\e[4";;
*) ;;
esac
([ "$Width" == "" ] || [ "$Width" -lt 60 ]) && Width=60
}
human_readable() { # <Number of bytes>
if [ $1 -gt 0 ]; then
printf "$(awk -v n=$1 'BEGIN{for(i=split("B KB MB GB TB PB",suffix);s<1;i--)s=n/(2**(10*i));printf (int(s)==s)?"%.0f%s":"%.1f%s",s,suffix[i+2]}' 2>/dev/null)"
else
printf "0B"
fi
}
device_rx_tx() { # <Device>
local RXTX=$(awk -v Device=$1 '$1==Device ":"{printf "%.0f\t%.0f",$2,$10}' /proc/net/dev 2>/dev/null)
[ "$RXTX" != "" ] && printf ", rx/tx: $RXTXColor$(human_readable $(echo "$RXTX" | cut -f 1))$NormalColor/$RXTXColor$(human_readable $(echo "$RXTX" | cut -f 2))$NormalColor"
}
uptime_str() { # <Time in Seconds>
local Uptime=$1
if [ $Uptime -gt 0 ]; then
local Days=$(expr $Uptime / 60 / 60 / 24)
local Hours=$(expr $Uptime / 60 / 60 % 24)
local Minutes=$(expr $Uptime / 60 % 60)
local Seconds=$(expr $Uptime % 60)
if [ $Days -gt 0 ]; then
Days=$(printf "%dd " $Days)
else
Days=""
fi 2>/dev/null
printf "$Days%02d:%02d:%02d" $Hours $Minutes $Seconds
fi
}
print_line() { # <String to Print>, [[<String to Print>] ...]
local Line="$@"
printf " | %-${Width}s |\r | $Line\n" 2>/dev/null
}
print_horizontal_ruler() {
printf "/%$(expr $Width + 4 )s\n" | tr ' /' '- ' 2>/dev/null
}
print_machine() {
local Machine=""
local HostName=$(uci -q get system.@system[0].hostname)
if [ -e /tmp/sysinfo/model ]; then
Machine=$(cat /tmp/sysinfo/model 2>/dev/null)
elif [ -e /proc/cpuinfo ]; then
Machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /proc/cpuinfo 2>/dev/null)
fi
print_line "Machine: $MachineColor${Machine:-n/a}$NormalColor,"\
"Name: $MachineColor${HostName:-n/a}$NormalColor"
}
print_times() {
local SysUptime=$(cut -d. -f1 /proc/uptime)
local Uptime=$(uptime_str $SysUptime)
local Now=$(date +'%Y-%m-%d %H:%M:%S')
print_line "System uptime: $ValueColor$Uptime$NormalColor,"\
"Now: $ValueColor$Now$NormalColor"
}
print_loadavg() {
local LoadAvg=$(awk '{printf"'$ValueColor'%s'$NormalColor', '$ValueColor'%s'$NormalColor', '$ValueColor'%s'$NormalColor'",$1,$2,$3}' /proc/loadavg 2>/dev/null)
print_line "System load: $LoadAvg"
}
print_fs_summary() { # <Mount point> <Label>
local DeviceInfo=$(df -k $1 2>/dev/null| awk 'BEGIN{Total=0;Free=0} NR>1 && $6=="'$1'"{Total=$2;Free=$4}END{Used=Total-Free;printf"%.0f\t%.0f\t%.1f\t%.0f",Total*1024,Used*1024,(Total>0)?((Used/Total)*100):0,Free*1024}' 2>/dev/null)
local Total=$(echo "$DeviceInfo" | cut -f 1)
local Used=$(echo "$DeviceInfo" | cut -f 2)
local UsedPercent=$(echo "$DeviceInfo" | cut -f 3)
local Free=$(echo "$DeviceInfo" | cut -f 4)
[ "$Total" -gt 0 ] && print_line "$2:"\
"total: $ValueColor$(human_readable $Total)$NormalColor,"\
"used: $ValueColor$(human_readable $Used)$NormalColor, $ValueColor$UsedPercent$NormalColor%%,"\
"free: $ValueColor$(human_readable $Free)$NormalColor"
}
print_disk() {
local Overlay=$(awk '$3=="overlayfs"{print $2}' /proc/mounts 2>/dev/null)
if [ "$Overlay" != "" ]; then
print_fs_summary /overlay "Flash"
fi
if [ "$Overlay" == "" ] || [ "$Overlay" != "/" ]; then
print_fs_summary / "RootFS"
fi
}
print_memory() {
local Memory=$(awk 'BEGIN{Total=0;Free=0}$1~/^MemTotal:/{Total=$2}$1~/^MemFree:|^Buffers:|^Cached:/{Free+=$2}END{Used=Total-Free;printf"%.0f\t%.0f\t%.1f\t%.0f",Total*1024,Used*1024,(Total>0)?((Used/Total)*100):0,Free*1024}' /proc/meminfo 2>/dev/null)
local Total=$(echo "$Memory" | cut -f 1)
local Used=$(echo "$Memory" | cut -f 2)
local UsedPercent=$(echo "$Memory" | cut -f 3)
local Free=$(echo "$Memory" | cut -f 4)
print_line "Memory:"\
"total: $ValueColor$(human_readable $Total)$NormalColor,"\
"used: $ValueColor$(human_readable $Used)$NormalColor, $ValueColor$UsedPercent$NormalColor%%,"\
"free: $ValueColor$(human_readable $Free)$NormalColor"
}
print_swap() {
local Swap=$(awk 'BEGIN{Total=0;Free=0}$1~/^SwapTotal:/{Total=$2}$1~/^SwapFree:/{Free=$2}END{Used=Total-Free;printf"%.0f\t%.0f\t%.1f\t%.0f",Total*1024,Used*1024,(Total>0)?((Used/Total)*100):0,Free*1024}' /proc/meminfo 2>/dev/null)
local Total=$(echo "$Swap" | cut -f 1)
local Used=$(echo "$Swap" | cut -f 2)
local UsedPercent=$(echo "$Swap" | cut -f 3)
local Free=$(echo "$Swap" | cut -f 4)
[ "$Total" -gt 0 ] && print_line "Swap:"\
"total: $ValueColor$(human_readable $Total)$NormalColor,"\
"used: $ValueColor$(human_readable $Used)$NormalColor, $ValueColor$UsedPercent$NormalColor%%,"\
"free: $ValueColor$(human_readable $Free)$NormalColor"
}
print_wan() {
local Zone
local Device
for Zone in $(uci -q show firewall | grep .masq= | cut -f2 -d.); do
if [ "$(uci -q get firewall.$Zone.masq)" == "1" ]; then
for Device in $(uci -q get firewall.$Zone.network); do
local Status="$(ubus call network.interface.$Device status 2>/dev/null)"
if [ "$Status" != "" ]; then
local State=""
local Iface=""
local Uptime=""
local IP4=""
local IP6=""
local Subnet4=""
local Subnet6=""
local Gateway4=""
local Gateway6=""
local DNS=""
local Protocol=""
json_load "${Status:-{}}"
json_get_var State up
json_get_var Uptime uptime
json_get_var Iface l3_device
json_get_var Protocol proto
if json_get_type Status ipv4_address && [ "$Status" = array ]; then
json_select ipv4_address
json_get_type Status 1
if [ "$Status" = object ]; then
json_select 1
json_get_var IP4 address
json_get_var Subnet4 mask
[ "$IP4" != "" ] && [ "$Subnet4" != "" ] && IP4="$IP4/$Subnet4"
fi
fi
json_select
if json_get_type Status ipv6_address && [ "$Status" = array ]; then
json_select ipv6_address
json_get_type Status 1
if [ "$Status" = object ]; then
json_select 1
json_get_var IP6 address
json_get_var Subnet6 mask
[ "$IP6" != "" ] && [ "$Subnet6" != "" ] && IP6="$IP6/$Subnet6"
fi
fi
json_select
if json_get_type Status route && [ "$Status" = array ]; then
json_select route
local Index="1"
while json_get_type Status $Index && [ "$Status" = object ]; do
json_select "$((Index++))"
json_get_var Status target
case "$Status" in
0.0.0.0)
json_get_var Gateway4 nexthop;;
::)
json_get_var Gateway6 nexthop;;
esac
json_select ".."
done
fi
json_select
if json_get_type Status dns_server && [ "$Status" = array ]; then
json_select dns_server
local Index="1"
while json_get_type Status $Index && [ "$Status" = string ]; do
json_get_var Status "$((Index++))"
DNS="${DNS:+$DNS }$Status"
done
fi
if [ "$State" == "1" ]; then
[ "$IP4" != "" ] && print_line "WAN: $AddrColor$IP4$NormalColor($Iface),"\
"gateway: $AddrColor${Gateway4:-n/a}$NormalColor"
[ "$IP6" != "" ] && print_line "WAN: $AddrColor$IP6$NormalColor($Iface),"\
"gateway: $AddrColor${Gateway6:-n/a}$NormalColor"
print_line "proto: $ValueColor${Protocol:-n/a}$NormalColor,"\
"uptime: $ValueColor$(uptime_str $Uptime)$NormalColor$(device_rx_tx $Iface)"
[ "$DNS" != "" ] && print_line "dns: $AddrColor$DNS$NormalColor"
fi
fi
done
fi
done
}
print_lan() {
local Zone
local Device
for Zone in $(uci -q show firewall | grep []]=zone | cut -f2 -d. | cut -f1 -d=); do
if [ "$(uci -q get firewall.$Zone.masq)" != "1" ]; then
for Device in $(uci -q get firewall.$Zone.network); do
local Status="$(ubus call network.interface.$Device status 2>/dev/null)"
if [ "$Status" != "" ]; then
local State=""
local Iface=""
local IP4=""
local IP6=""
local Subnet4=""
local Subnet6=""
json_load "${Status:-{}}"
json_get_var State up
json_get_var Iface device
if json_get_type Status ipv4_address && [ "$Status" = array ]; then
json_select ipv4_address
json_get_type Status 1
if [ "$Status" = object ]; then
json_select 1
json_get_var IP4 address
json_get_var Subnet4 mask
[ "$IP4" != "" ] && [ "$Subnet4" != "" ] && IP4="$IP4/$Subnet4"
fi
fi
json_select
if json_get_type Status ipv6_address && [ "$Status" = array ]; then
json_select ipv6_address
json_get_type Status 1
if [ "$Status" = object ]; then
json_select 1
json_get_var IP6 address
json_get_var Subnet6 mask
[ "$IP6" != "" ] && [ "$Subnet6" != "" ] && IP6="$IP6/$Subnet6"
fi
fi
local DHCPConfig=$(uci -q show dhcp | grep .interface=$Device | cut -d. -f2)
if [ "$DHCPConfig" != "" ] && [ "$(uci -q get dhcp.$DHCPConfig.ignore)" != "1" ]; then
local DHCPStart=$(uci -q get dhcp.$DHCPConfig.start)
local DHCPLimit=$(uci -q get dhcp.$DHCPConfig.limit)
[ "$DHCPStart" != "" ] && [ "$DHCPLimit" != "" ] && DHCP="$(echo $IP4 | cut -d. -f1-3).$DHCPStart-$(expr $DHCPStart + $DHCPLimit - 1)"
fi
[ "$IP4" != "" ] && print_line "LAN: $AddrColor$IP4$NormalColor($Iface), dhcp: $AddrColor${DHCP:-n/a}$NormalColor"
[ "$IP6" != "" ] && print_line "LAN: $AddrColor$IP6$NormalColor($Iface)"
fi
done
fi
done
}
print_wlan() {
local Iface
for Iface in $(uci -q show wireless | grep device=radio | cut -f2 -d.); do
local Device=$(uci -q get wireless.$Iface.device)
local SSID=$(uci -q get wireless.$Iface.ssid)
local IfaceDisabled=$(uci -q get wireless.$Iface.disabled)
local DeviceDisabled=$(uci -q get wireless.$Device.disabled)
if [ -n "$SSID" ] && [ "$IfaceDisabled" != "1" ] && [ "$DeviceDisabled" != "1" ]; then
local Mode=$(uci -q -P /var/state get wireless.$Iface.mode)
local Channel=$(uci -q get wireless.$Device.channel)
local RadioIface=$(uci -q -P /var/state get wireless.$Iface.ifname)
local Connection="Down"
if [ -n "$RadioIface" ]; then
if [ "$Mode" == "ap" ]; then
Connection="$(iw dev $RadioIface station dump | grep Station | wc -l 2>/dev/null)"
else
Connection="$(iw dev $RadioIface link | awk 'BEGIN{FS=": ";Signal="";Bitrate=""} $1~/signal/ {Signal=$2} $1~/tx bitrate/ {Bitrate=$2}END{print Signal" "Bitrate}' 2>/dev/null)"
fi
fi
if [ "$Mode" == "ap" ]; then
print_line "WLAN: $ValueColor$SSID$NormalColor($Mode),"\
"ch: $ValueColor${Channel:-n/a}$NormalColor,"\
"conn: $ValueColor$Connection$NormalColor$(device_rx_tx $RadioIface)"
else
print_line "WLAN: $ValueColor$SSID$NormalColor($Mode),"\
"ch: $ValueColor${Channel:-n/a}$NormalColor"
print_line "conn: $ValueColor$Connection$NormalColor$(device_rx_tx $RadioIface)"
fi
fi
done
}
print_vpn() {
local VPN
for VPN in $(uci -q show openvpn | grep .ca= | cut -f2 -d.); do
local Device=$(uci -q get openvpn.$VPN.dev)
local Enabled=$(uci -q get openvpn.$VPN.enabled)
if [ "$Enabled" == "1" ] || [ "$Enabled" == "" ]; then
local Mode=$(uci -q get openvpn.$VPN.mode)
local Connection="n/a"
if [ "$Mode" == "server" ]; then
Mode="$ValueColor$VPN$NormalColor(svr):$(uci -q get openvpn.$VPN.port)"
Status=$(uci -q get openvpn.$VPN.status)
Connection=$(awk 'BEGIN{FS=",";c=0;l=0}{if($1=="Common Name")l=1;else if($1=="ROUTING TABLE")exit;else if (l==1) c=c+1}END{print c}' $Status 2>/dev/null)
else
Mode="$ValueColor$VPN$NormalColor(cli)"
Connection="Down"
ifconfig $Device &>/dev/null && Connection="Up"
fi
print_line "VPN: $Mode,"\
"conn: $ValueColor$Connection$NormalColor$(device_rx_tx $Device)"
fi
done
}
print_extra() {
([ "$ExtraName" != "" ] || [ "$ExtraValue" != "" ]) && print_line "$ExtraName $ValueColor$ExtraValue$NormalColor"
}
print_error() {
logread | awk '/\w{3}+\.(err|warn|alert|emerg|crit)/{err[++i]=$0}END{j=i-4;j=j>=1?j:1;while(j<=i)print" '$ErrorColor'"err[j++]"'$NormalColor'"}' 2>/dev/null
}
initialize $@
[ "$StartRuler" == "1" ] && print_horizontal_ruler
print_machine
print_times
print_loadavg
print_disk
print_memory
print_swap
print_wan
print_lan
print_wlan
print_vpn
print_extra
[ "$EndRuler" == "1" ] && print_horizontal_ruler
[ "$LastErrors" == "1" ] && print_error
exit 0@build dhcp dla lan w konfiguracji masz wyłączone stąd sysinfo.sh wyswietla n/a.
Błędy w logu są więc się wyświetlają.
...
Może to i głupio zabrzmi ale jednak z jakiegoś DHCP korzysta karta sieciowa/urządzenie bo niby jak w tej konfiguracji miało by zaistnieć połączenie z jakąkolwiek siecią (LAN/WAN/pikolot ciotki gieni..hehe) ? - Twój skrypt po prostu nie uwzględnia takiej sytuacji jak u mnie - nie korzystam w ogóle z wewnętrznego DHCP tylko zewnętrznego i li tylko z takiego. Jak widzisz na tym przykładzie obsy i openwrt to nie tylko routery.![]()
Co do błędów to jak pisałem - wiem, że są i jednocześnie jak by ich nie było - to po prostu słabość sterowników w openwrt do usb i sposób obsługi pendraive przez ten system - w praktyce to nie znaczą te błędy absolutnie nic. Wystarczy wyjąć danego pena po wyłączeniu NSA-310 i go sprawdzić pod kompem z linuchem i po ponownym włączeniu maszynki połowy tych błędów nie ma. Także to nie błędami się przejmuję w przypadku Twojego skryptu a jedynie brakiem wszystkich wskazań z racji ich nie zaimplementowania.![]()
Tak czy inaczej dzięki za odzew i trud włożony w stworzenie i dalszy rozwój skryptu i życzyć równie owocnego dopieszczania oraz dopracowania.
EDIT:
Pojawiła się prawidłowo wyświetlana informacja o rootfs - także jest postęp. machine nadal nie widać i rzeczonego dhcp (zewnętrzny).
Bo Rafciq dodał machine a zapomniał o Hardware
Jest nadzieja , że w ładnie okrągłej wersji 1.20 błąd zniknie.![]()
@build000 a co i z kąd miałoby się pokazywać apropo dhcp?
Tak na zdrowy rozum pewno trzeba by pójść drogą taką jak to robi system (openwrt AA) na NSA-310 - w końcu odnajduje ów serwer DHCP i pobiera sobie z niego adres. Tu konkretnie serwer DHCP na routerze a adres IP ustawiony na sztywno w routerze jako static i dodatkowo spoza puli DHCP routera (jakaś tablica ARP czy cuś) oraz skojarzony z MAC na sztywno oraz ujęty w ograniczeniach firewall'a na routerze, że na tym konkretnie MAC-u ruch i/o dopuszczony w całości i bez innych ograniczeń.
Jakoś to w końcu system robi bo połączenie jest z prawidłowym MAC/IP oraz lokalne połączenia w sieci LAN routera działają oraz urządzenia łączą się tez z zew. siecią WAN, czyli ogólnie Internetem.
Po prostu z tym DHCP aby skrypt był uniwersalny pewno by trzeba rozdzielić sytuację typową dla routera od faktu, że urządzenie może korzystać z innej adresacji nie oferowanej automatycznie w tym urządzeniu...czyli inna opcja DHCP, ja wiem...DHCP lokalne i/lub DHCP zewnętrzne jako wyświetlane parametry w zależności od konfiguracji/sytuacji.
Generalnie kuje w oczy, że jest to tutaj pokazywane jako "coś tam"/24 - bo "coś tam" to jest konkretnie adres zew. IP dla tego urządzenia a nie sieć LAN skoro urządzenie w tym przypadku LAN nie tworzy bo nie działa lokalny DHCP.
W tym konkretnym przypadku to faktyczny LAN jest "coś tam-pierwsze 3 sekcje".0/24.
Pewno lepiej by było aby w tym przypadku pokazywało nie LAN (lub coś ala LAN:local disabled) tylko/lub/i IP i opcja widoczna zew. DHCP i jego właśnie adres.
Ideą skryptu jest pokazanie najistotniejszych parametrów usług urządzenia na którym został wywołany. To o czym piszesz to informacje o usługach na innej maszynie.
Po co informacja o puli DHCP jak interfejs ma statyczne IP?
Co skrypt ma wyświetlić jak znajdzie więcej niż jeden serwer DHCP?
Dlaczego LAN niema nazywać się właśnie LAN?
Która z tych informacji o LAN i DHCP jest Twoim zdaniem niewłaściwa?
Chodzi mi o ten zwrot przy LAN: "******/24" sugerujący w normalnej notacji o trasie - przecież zewnętrzna trasa jest inna niż wewnętrzna wychodząca z wewnętrznego serwera DNS/DHCP (musi być inna adres serwera DHCP wewnętrznego nie może być taki sam jak zewnętrznego - urządzenie nie połączy się nigdzie jak oba serwery DHCP/DNS będą miały te same numery - lub krótko mówiąc nie mogą działać jednocześnie dwa serwery dhcp w sieci na tym samym IP) i adres IP nie może być jednocześnie serwerem DHCP zewnętrznym i zewnętrznym DNS.
Tak jak pisałem wcześniej - po wykryciu, że LAN z zewnątrz - powiedzmy napis LAN: local disabled DHCP: zew. i numer oraz dodatkowa opcja IP: tu numer.
Tak jak w innych firmwerach w routerach i nie tylko.
Generalnie w zestawieniu 3 (lub 2 jak da się to zmieścić i rozplanować dobrze) wiersze:
I IP: LAN: | -> ten 60 znak
I DHCP: DNS: | -> ......
I GATEWAY: | -> ......Jak IP to WAN w nawiasie po IP (WAN) lub (LAN) jak nie ma WAN
Na podobnej zasadzie jak DHCP - do wyboru po numerze IP w nawiasach: loc.,ext.
..................................... LAN - ..........................................................: no(lub samo NO jak nie ma IP),loc.,ext.
..................................... DNS - .......................................................... : loc., ext.
GATEWAY - po prostu numer IP bez opisu lub "NO" jak nie ma.
Jak konfiguracja jeszcze niekompletna lub wadliwa wszędzie tam gdzie jest niejasność znaki zapytania lub wykrzyknik jak jest błąd.
I wtedy dopiero będzie można mówić o podstawowym zakresie informacyjnym urządzenia jeżeli pracuje w jakiejś sieci w ogóle lub samo tworzy własną bez dostępu do świata (Internetu). Wtedy jest jasność i od razu wszystko widać jak na dłoni jak to działa.
Obsy uważam też niepotrzebnie wyszedł z założenia, że to ma być napis LAN. Bardziej właściwym i skrócającym wszystko do minimum tak jak zrobił (lub zamierzał) było by po prostu napisanie zamiast "LAN:" "IP:". Ty z kolei stworzyłeś bardziej rozbudowaną wersję więc wypadało by usystematyzować to co i jak ten skrypt pokazuje. Oczywiście to jest tylko moja wizja, pomysł i tak to ja widzę co nie oznacza, że wszyscy tak to widzą i tego potrzebują.![]()
Mniej więcej na takiej zasadzie.
EDIT: Nie wiem czy warto ale tak czy inaczej pomijając powyższe:
Brak w chwili obecnej wskazań RX/TX na tym LAN.
Generalnie gdy wiem, że nie będę korzystał z WLAN w ogóle a jest jakiś interfejs sieciowy (tu tylko eth0) też dobrze by było wiedzieć co tam się dzieje w zakresie transferu na bieżąco, szczególnie że póki co nie ma na tego typu jak moje urządzenie (NSA-310) żadnych dobrych wydajnościowo i jakościowo przeglądarkowych nakładek graficznych na openwrt oprócz OpenMediaVault czy Luci (no niby można dać ale w sumie po co przeciążać procka jak nie trzeba i się nie korzysta).
Tak też mi teraz wpadło do głowy, że dla uwieńczenia info o stanie netu na samym dole oprócz błędów (lub do wyboru jak błędy) coś o ping gdzieś na zewnątrz w sieci by się zdało zapodać - powiedzmy krótki ping, 5 odpytań.
Strony Poprzednia 1 2 3 4 5 6 … 9 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Oprogramowanie / Software → Skrypt /sbin/sysinfo.sh
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc