151

Odp: Skrypt /sbin/sysinfo.sh

-n jeszcze

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

152 (edytowany przez wojtula 2015-09-12 22:56:44)

Odp: Skrypt /sbin/sysinfo.sh

Ok, wszystko działa smile
Co prawda metoda z tr -d '\r' <sysinfo.sh  >sysinfo1.sh  nie zadziałała, ale... poprzez vim usunąłem zbędne znaki.
Teraz działa sysinfo. Nie rozumiem jeszcze tylko jednej kwestii - podobno można wyświetlić ten skrypt za pomocą html. Czy wynik tego skryptu zapisuje się w pliku html? Jak to ustawic?

Ok, cofam pytanie. W php wystarczy wywołać ten skrypt a wynik sam sie pokaże - super smile

153

Odp: Skrypt /sbin/sysinfo.sh

CC i skrypt Rafciq'a, wynik kończy się tak:

 | Machine: TP-Link TL-MR3420 v2, Name: Openwrt_TP              |
 | System uptime: 3d 03:43:27, Now: 2016-08-13 23:47:04         |
 | System load: 0.37, 0.25, 0.10                                |
 | RootFS: total: 12.4MB, used: 3.0MB, 24.3%, free: 9.4MB       |
 | Memory: total: 59.6MB, used: 19.1MB, 32.0%, free: 40.6MB     |
 | WAN: 192.168.1.10/24(eth0), gateway: 192.168.1.1             |
 | proto: static, uptime: 10:46:49, rx/tx: 1.1GB/86.9MB         |
 | dns: 8.8.8.8                                                 |
 | WAN: 192.168.8.10/24(eth2), gateway: 192.168.8.1             |
 | proto: dhcp, uptime: 12:18:47, rx/tx: 711.8MB/191.3MB        |
 | dns: 192.168.8.1 192.168.8.1                                 |
 | LAN: 192.168.2.1/24(br-lan), dhcp: n/a                       |
 ----------------------------------------------------------------

Nie wiem, czemu tak wyświetla się dhcp i brakuje radia. Później już ostatnie błędy normalnie.
Zakładam, że nieco się zmieniło w temacie pobierania danych z systemu od ostatnich aktualizacji, czy ktoś może to sobie poprawił i chciałby się podzielić?

154 (edytowany przez manguscik 2016-08-14 11:37:07)

Odp: Skrypt /sbin/sysinfo.sh

Działające radio skopiowałem z skryptu Cezarego sysinfo.sh i powinno działać :

#!/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() {
    IFACES=$(uci -q show wireless | grep "device='radio" | cut -f2 -d. | sort)
for i in $IFACES; do
    SSID=$(uci -q get wireless.$i.ssid)
    DEV=$(uci -q get wireless.$i.device)
    OFF=$(uci -q get wireless.$DEV.disabled)
    OFF2=$(uci -q get wireless.$i.disabled)
    if [ -n "$SSID" ] && [ "x$OFF" != "x1" ] && [ "x$OFF2" != "x1" ]; then
        MODE=$(uci -q -P /var/state get wireless.$i.mode)
        CHANNEL=$(uci -q get wireless.$DEV.channel)
        SEC1=$(echo $i | sed 's/\[/\\[/g;s/\]/\\]/g')
        IFNAME=$(wifi status $DEV | grep -A 1 $SEC1 | awk '/ifname/ {gsub(/[",]/,"");print $2}')
        [ -n "$IFNAME" ] && CNT=$(iw dev $IFNAME station dump | grep Station | wc -l)
        print_line    "WLAN: $ValueColor$SSID$NormalColor($MODE),"\
                            "ch: $ValueColor$CHANNEL$NormalColor,"\
                            "conn: $ValueColor${CNT:-0}$NormalColor"
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
Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

155

Odp: Skrypt /sbin/sysinfo.sh

Hm...
Wydawało mi się, że robiłem to samo... ehh..
Dzięki - działa wlan, ale dalej nie mam pomysłu na dhcp.

156

Odp: Skrypt /sbin/sysinfo.sh

Co jest niby źle w dhcp ?

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

157 (edytowany przez axelf 2016-08-14 18:08:53)

Odp: Skrypt /sbin/sysinfo.sh

Z wątku - spodziewałem się czegoś w tym stylu:

 LAN: 192.168.10.1/24(br-lan), dhcp: 192.168.10.100-249

158

Odp: Skrypt /sbin/sysinfo.sh

Zobacz w interfejs LAN i zauważ że DHCP masz wyłączone masz przypisany stały adres IP więc pokazuje dobrze smile

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

159

Odp: Skrypt /sbin/sysinfo.sh

DHCP Leases
Hostname     IPv4-Address     MAC-Address     Leasetime remaining
BB-Passport    192.168.2.136    48:9d:24:c7:11:d9    20h 47m 12s
Dell           192.168.2.123    18:3d:a2:67:c2:14    15h 15m 14s

?

160

Odp: Skrypt /sbin/sysinfo.sh

Aby pokazywał pule przypisanych adresów trzeba by było przerobić skrypt aby pobrał nam potrzebne dane.

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

161

Odp: Skrypt /sbin/sysinfo.sh

Na to wygląda. W sumie - może mało potrzebne, ale ja na bazie tego skryptu stworzyłem sobie taki monitor stanu, który co 2h wędruje na maila i obecność urządzeń w DHCP byłaby dość wartościową informacją. Może coś wymyślę, dzięki za pomoc.

162 (edytowany przez manguscik 2016-08-14 19:42:11)

Odp: Skrypt /sbin/sysinfo.sh

wc /var/dhcp.leases i masz zliczone ile adresów ip jest przydzielone.

edit:

wc /var/dhcp.leases | cut -d' ' -f9

Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

163 (edytowany przez manguscik 2016-08-14 20:25:35)

Odp: Skrypt /sbin/sysinfo.sh

axelf wymyśliłeś już coś ? o takie coś Ci chodziło ?

Nowa wersja skryptu dodałem status ilości dzierżaw dhcp

#!/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
#    1.20          Zmiana odczytu radia Wlan
#    1.21          Dodanie statusu ilośći dzierżaw dhcp
#
# 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() {
    dhcp2=$(wc /var/dhcp.leases | cut -d' ' -f9) 
    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, dhcp.leases: $AddrColor$dhcp2$NormalColor "
                    [ "$IP6" != "" ] && print_line "LAN: $AddrColor$IP6$NormalColor($Iface)"
                fi
            done
        fi 
    
    
    done
}

print_wlan() {
    IFACES=$(uci -q show wireless | grep "device='radio" | cut -f2 -d. | sort)
for i in $IFACES; do
    SSID=$(uci -q get wireless.$i.ssid)
    DEV=$(uci -q get wireless.$i.device)
    OFF=$(uci -q get wireless.$DEV.disabled)
    OFF2=$(uci -q get wireless.$i.disabled)
    if [ -n "$SSID" ] && [ "x$OFF" != "x1" ] && [ "x$OFF2" != "x1" ]; then
        MODE=$(uci -q -P /var/state get wireless.$i.mode)
        CHANNEL=$(uci -q get wireless.$DEV.channel)
        SEC1=$(echo $i | sed 's/\[/\\[/g;s/\]/\\]/g')
        IFNAME=$(wifi status $DEV | grep -A 1 $SEC1 | awk '/ifname/ {gsub(/[",]/,"");print $2}')
        [ -n "$IFNAME" ] && CNT=$(iw dev $IFNAME station dump | grep Station | wc -l)
        print_line    "WLAN: $ValueColor$SSID$NormalColor($MODE),"\
                            "ch: $ValueColor$CHANNEL$NormalColor,"\
                            "conn: $ValueColor${CNT:-0}$NormalColor"
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
Stacja Pogody pracująca na LEDE / Openwrt + arduino. http://dominikowice.one.pl  Pomiar temperatury, ciśnienia, wilgotności  online + wykresy 24 godzinne, 7 dniowe, 30 dniowe, itp. A wszystko to na Routerze NETGEAR WNDR 4300 z wgranym LEDE.

164 (edytowany przez slw 2016-08-19 19:01:55)

Odp: Skrypt /sbin/sysinfo.sh

@axelf Aby naprawić wyświetlanie informacji o DHCP musisz zmienić w skrypcie definicję zmiennej DHCPConfig.

Najpierw (dla sprawdzenia wykorzystywanego w definicji ciągu znaków) wpisz w konsoli polecenie

uci show dhcp | grep .interface

Zapewne wyświetli Ci się następujący wynik

dhcp.lan.interface='lan'
dhcp.wan.interface='wan'

Jak widać wyświetlone ciągi znaków zawierają znak

'

Jeśli u Ciebie będzie podobnie, to dla sprawdzenia wpisz jeszcze w konsoli polecenie

uci show dhcp | grep .interface="'lan'" | cut -d. -f2

Powinieneś otrzymać następujący wynik

lan

Jeśli tak, to jesteś gotowy do modyfikacji skryptu sysinfo.sh.
Znajdź w skrypcie sysinfo.sh linię

local DHCPConfig=$(uci -q show dhcp | grep .interface=$Device | cut -d. -f2)

i zamień ją na

local DHCPConfig=$(uci -q show dhcp | grep .interface="'$Device'" | cut -d. -f2)

Zapisz i wykonaj skrypt. Powinien się wyświetlić zakres numerów przydzielonych w ramach DHCP.

Możesz jeszcze dokonać kosmetycznej zmiany wyświetlania wyników i zmienić wielkość liter w skrótowcu DHCP, aby zapisywany był on wielkimi literami, jak przystało na skrótowiec.

W tym celu możesz zamienić linię

[ "$IP4" != "" ] && print_line "LAN: $AddrColor$IP4$NormalColor($Iface), dhcp: $AddrColor${dhcp:-n/a}$NormalColor"

na

[ "$IP4" != "" ] && print_line "LAN: $AddrColor$IP4$NormalColor($Iface), DHCP: $AddrColor${DHCP:-n/a}$NormalColor"

**************************************
Nie wiem tylko po co jest następujący warunek

"$(uci -q get dhcp.$DHCPConfig.ignore)" != "1"

gdyż u mnie (włączony DHCP) wynik polecenia

uci -q show dhcp

nie zawiera

dhcp.lan.ignore='1'

a zamiast tego zawiera

dhcp.wan.ignore='1'

Może Cezary lub Rafciq wypowie się, czy ten warunek w ogóle jest potrzebny.

Hame MPR-A2 + Huawei E3372 HiLink

165

Odp: Skrypt /sbin/sysinfo.sh

Jak jest ignore to on nie przydziela tej klasy adresowej, więc pewnie wyświetlanie przydzielanego zakresu też po prostu nie ma sensu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

166

Odp: Skrypt /sbin/sysinfo.sh

Rafciq używa takiego warunku

if [ "$DHCPConfig" != "" ] && [ "$(uci -q get dhcp.$DHCPConfig.ignore)" != "1" ]

Możliwe, że sensem tego warunku jest sprawdzenie, czy DHCP jest włączony. Akurat u mnie DHCP jest włączony (i nie zamierzam tego zmieniać nawet dla celów testowych), więc nie mam jak sprawdzić co wyświetli skrypt, gdy DHCP jest wyłączony.

W każdym razie, po wprowadzeniu poprawki w definicji zmiennej $DHCPConfig skrypt wyświetla zakres numerów przydzielonych w ramach DHCP.

Hame MPR-A2 + Huawei E3372 HiLink

167 (edytowany przez axelf 2016-08-16 21:34:48)

Odp: Skrypt /sbin/sysinfo.sh

Ups... Przestało mnie powiadamiać, a tu się dużo dzieje - dzięki za pomoc.
DHCP wyświetlam w tej chwili po prostu z /tmp/dhcp.leases ale widzę, że jeszcze kilka rzeczy będę dodawał i poprawiał..
Btw - z tego, co widzę na github, Rafciq popełnił trochę więcej wersji, zanim porzucił Openwrt.
Dziękuję wszystkim za wskazówki i zaangażowanie, postaram się wszystko sprawdzić, gdy tylko uporam się z anteną do modemu LTE.

Edit:

slw napisał/a:

Znajdź w skrypcie sysinfo.sh linię

local DHCPConfig=$(uci -q show dhcp | grep .interface=$Device | cut -d. -f2)

i zamień ją na

local DHCPConfig=$(uci -q show dhcp | grep .interface="'$Device'" | cut -d. -f2)

Zapisz i wykonaj skrypt. Powinien się wyświetlić zakres numerów przydzielonych w ramach DHCP.

Potwierdzam, działa smile

P.s.
Właśnie odkryłem, że nagle nie mogę zaktualizować listy pakietów.
Wiem, że to nie ten wątek, ale ktoś może znać przyczyny

Bad Gateway
The process did not produce any response

?

168

Odp: Skrypt /sbin/sysinfo.sh

witam
po tych poprawkach  u mnie tak wglada :

root@Gargoyle:~# sysinfo.sh
 ----------------------------------------------------------------
 | Machine: TP-Link TL-WDR3600 v1, Name: Gargoyle               |
 | System uptime: 2d 01:34:44, Now: 2016-08-16 22:28:09         |
 | System load: 0.11, 0.17, 0.20                                |
 | RootFS: total: 707.9MB, used: 119.1MB, 16.8%, free: 588.8MB  |
 | Memory: total: 123.1MB, used: 39.5MB, 32.1%, free: 83.6MB    |
 | Swap: total: 245.0MB, used: 0B, 0.0%, free: 245.0MB          |
 | WAN: xx.xxx.xxx.164/24(eth0.2), gateway: xx.xxx.xxx.1        |
 | proto: dhcp, uptime: 2d 01:34:04, rx/tx: 18.3GB/570.8MB      |
 | dns: 208.67.222.222 208.67.220.220                           |
 | proto: none, uptime: 2d 01:34:09, rx/tx: 18.3GB/570.8MB      |
 | LAN: 192.168.1.1/24(br-lan)                                  |
 | DHCP: 192.168.1.100-117,  Biezace dzierżawy DHCP: 5          |
 | WLAN: H2O(ap), ch: 1, conn: 3                                |
 ----------------------------------------------------------------
 Tue Aug 16 21:52:58 2016 daemon.err tvheadend[19904]: epgdb: unable to open epgdb file

ustawilem to tak :

[ "$IP4" != "" ] && print_line "LAN: $AddrColor$IP4$NormalColor($Iface) "
[ "$IP4" != "" ] && print_line "DHCP: $AddrColor${DHCP:-n/a}$NormalColor,  Biezace dzierżawy DHCP: $AddrColor$dhcp2$NormalColor "
[ "$IP6" != "" ] && print_line "LAN: $AddrColor$IP6$NormalColor($Iface)"

169

Odp: Skrypt /sbin/sysinfo.sh

Nie masz czasami za dużo? Ta linia:

proto: none, uptime: 2d 01:34:09, rx/tx: 18.3GB/570.8MB

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

170 (edytowany przez ookris 2016-08-17 08:44:59)

Odp: Skrypt /sbin/sysinfo.sh

Świetny skrypt ale u mnie wywala takie błędy:

Wed Aug 17 08:33:13 2016 daemon.err uhttpd[7594]: PHP Warning:  Module 'session' already loaded in Unknown on line 0
 Wed Aug 17 08:37:15 2016 daemon.err uhttpd[7594]: PHP Warning:  Module 'json' already loaded in Unknown on line 0
 Wed Aug 17 08:37:15 2016 daemon.err uhttpd[7594]: PHP Warning:  Module 'session' already loaded in Unknown on line 0
 Wed Aug 17 09:12:44 2016 daemon.err uhttpd[7594]: PHP Warning:  Module 'json' already loaded in Unknown on line 0
 Wed Aug 17 09:12:44 2016 daemon.err uhttpd[7594]: PHP Warning:  Module 'session' already loaded in Unknown on line 0

I czy ktoś może się podzielić całym skryptem ze wszystkimi zmianami?

WinISO.pl - Archiwum polskich wersji systemów Windows, Windows Serwer i Office

171

Odp: Skrypt /sbin/sysinfo.sh

Ale co ma ten skrypt wspólnego z uhttpd i php? Przecież do zamiennik mojego sysinfo jest, do uruchomienia w konsoli.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

172

Odp: Skrypt /sbin/sysinfo.sh

Cezary a bo ja wiem. Po wywołaniu w konsoli pod koniec pokazuje takie błędy.

WinISO.pl - Archiwum polskich wersji systemów Windows, Windows Serwer i Office

173

Odp: Skrypt /sbin/sysinfo.sh

No to masz błędy w php/konfiguracji, nic wspólnego z tym skryptem to nie ma.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

174

Odp: Skrypt /sbin/sysinfo.sh

Też tak sądzę. Trzeba się chyba go pozbyć.

WinISO.pl - Archiwum polskich wersji systemów Windows, Windows Serwer i Office

175

Odp: Skrypt /sbin/sysinfo.sh

Cezary napisał/a:

Nie masz czasami za dużo? Ta linia:
proto: none, uptime: 2d 01:34:09, rx/tx: 18.3GB/570.8MB

no tak to wyglada - nie  bardzo wiem gdzie jest bląd w skrypcie  - patrzac na uptime  sa 3 wartosci  :
System uptime: 2d 01:34:44
proto: dhcp, uptime: 2d 01:34:04
proto: none, uptime: 2d 01:34:09