26

Odp: mwan3 - łącza backupowe konfiguracja

No własnie nie znalazłem, znalazłem jedynie skrypt taki prosty do E3131. Masz może jakiś link do tego?

pozdr,

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

27

Odp: mwan3 - łącza backupowe konfiguracja

Nie, nie mam w głowie wszystkich linków smile

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

28 (edytowany przez Payti 2015-01-18 21:13:36)

Odp: mwan3 - łącza backupowe konfiguracja

Mała przeróbka skryptu znalezionego na forum dla Huawei E3372 HiLink:

touch /bin/hilink
chmod 755 /bin/hilink

zawartość pliku /bin/hilink

#!/bin/sh
# odczyt danych z modemu HILINK bez trybu modemu 
  wget -t 25 -O /tmp/E3372-status http://192.168.8.1/api/monitoring/status > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-plmn http://192.168.8.1/api/net/current-plmn  > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal http://192.168.8.1/api/net/signal-para > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-trafic http://192.168.8.1/api/monitoring/traffic-statistics > /dev/null 2>&1


#   szukanie danych w pliku z danymi typu HTML
    Status_Polaczenia=`cat /tmp/E3372-status | grep ConnectionStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    Sila_Sygnalu=`cat /tmp/E3372-signal | grep Rscp | cut -d '<' -f 2 | cut -d '>' -f 2`
    CSQ_Sygnalu=`cat /tmp/E3372-signal | grep Ecio | cut -d '<' -f 2 | cut -d '>' -f 2` 
    Typ_Sieci=`cat /tmp/E3372-status | grep CurrentNetworkTypeEx | cut -d '<' -f 2 | cut -d '>' -f 2`
    Adres_IP=`cat /tmp/E3372-status | grep WanIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Primary=`cat /tmp/E3372-status | grep PrimaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Secendary=`cat /tmp/E3372-status | grep SecondaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    Nazwa_Sieci=`cat /tmp/E3372-plmn | grep FullName | cut -d '<' -f 2 | cut -d '>' -f 2`
    ID_Sieci=`cat /tmp/E3372-plmn | grep Numeric | cut -d '<' -f 2 | cut -d '>' -f 2`
    Nazwa_Sieci=`cat /tmp/E3372-plmn | grep FullName | cut -d '<' -f 2 | cut -d '>' -f 2`
    ID_Sieci=`cat /tmp/E3372-plmn | grep Numeric | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Polaczenia=`cat /tmp/E3372-trafic | grep CurrentConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Calkowity=`cat /tmp/E3372-trafic | grep TotalConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`


    DATE=`date "+%F  %H:%M:%S"`
    CSQ=$((CSQ_Sygnalu+32))
    Sila_Sygnalu="$((Sila_Sygnalu)) dB"
    clear

# Sprawdzanie stanu polaczanienia
      if [ $Status_Polaczenia = 900 ] 
        then 
     Polaczenie="Laczenie"
       elif [ $Status_Polaczenia = 901 ]
       then
     Polaczenie="Polaczony"
       elif [ $Status_Polaczenia = 902 ]
       then
     Polaczenie="Rozlaczony"
       elif [ $Status_Polaczenia = 903 ]
       then
     Polaczenie="Rozlaczanie"
      elif [ $Status_Polaczenia = 25 -o 26 ]
        then
     Polaczenie="BLAD LACZENIA"
      else 
     Polaczenie="Brak danych"
      fi 


# Sprawdzanie typu sieci 
      if [ $Typ_Sieci = 1 ]
         then
        Siec="EDGE"
      elif [ $Typ_Sieci = 3 ]
         then
          Siec="UMTS"
      elif [ $Typ_Sieci = 4 ]
        then
          Siec="HSPA"
      elif [ $Typ_Sieci = 46 ]
        then
          Siec="DC-HSPA+"
      elif [ $Typ_Sieci = 5 ]
        then
          Siec="HSDPA"
      elif [ $Typ_Sieci = 7 -o 9 ]
         then
          Siec="HSPA+/UMTS"
      elif [ $Typ_Sieci = 101 ]
         then
          Siec="LTE"
      else
           Siec="BRAK DANYCH"
      fi

# sprawdzanie nazwy sieci
       if [ $Nazwa_Sieci = "PLAY" ]
        then
           Nazwa_Sieci="PLUS ROAMING"
       else
           Nazwa_Sieci=$Nazwa_Sieci
        fi     

#  Liczenie czasu polaczenia 
           if [ $Czas_Polaczenia -ge 3600 ]
              then
            Czas_PH=$((Czas_Polaczenia/3600));
            Czas_PM=$(((Czas_Polaczenia-$Czas_PH*3600)/60));
            Czas_PS=$(((Czas_Polaczenia-$Czas_PH)/360));  
           
            elif [ $Czas_Polaczenia -ge 600 ]
             then
            Czas_PH="00"
            Czas_PM=$((Czas_Polaczenia/60));
            Czas_PS=$((Czas_Polaczenia-$Czas_PM*60)); 
            
             elif [ $Czas_Polaczenia -ge 60 ]
              then 
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
            
             else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
             fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_PS -lt 1 ]
                  then
                Czas_PS="00"
            elif [ $Czas_PS -lt 10 ]
                  then
                Czas_PS="0"$Czas_PS
             fi
                                                                                 
            if [ $Czas_PM -lt 1 ]
                  then
                Czas_PM="00"
            elif [ $Czas_PM -lt 10 ]
                  then
                Czas_PM="0"$Czas_PM
             fi

            if [ $Czas_PH -lt 1 ]
                  then
               Czas_PH="00"
            elif [ $Czas_PH -lt 10 ]
                  then
            Czas_PH="0"$Czas_PH
              fi
                                                               
                                      
#  Liczenie czasu calkowitego polaczenia
             if [ $Czas_Calkowity -ge 3600 ]
                    then
             Czas_CH=$((Czas_Calkowity/3600))
             Czas_CM=$(((Czas_Calkowity-$Czas_CH*3600)/60))
             Czas_CS=$((Czas_Calkowity-($Czas_CH*3600)-(Czas_CM*60)))
           
             elif [ $Czas_Calkowity -ge 600 ]
                    then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
          
             elif [ $Czas_Calkowity -ge 60 ]
           
                   then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
  
              else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))

              fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_CS -lt 1 ]
                  then
               Czas_CS="00"
            elif [ $Czas_CS -lt 10 ]
                  then
               Czas_CS="0"$Czas_CS
             fi
                           
             if [ $Czas_CM -lt 1 ]
                   then
               Czas_CM="00"
             elif [ $Czas_CM -lt 10 ]
                   then
               Czas_CM="0"$Czas_CM
             fi
                                                                                                                                                                                                                         
            if [ $Czas_CH -lt 1 ]
                 then
             Czas_CH=" 00"
           
             elif [ $Czas_CH -lt 10 ]
                 then
             Czas_CH=" 0"$Czas_CH
           
             elif [ $Czas_CH -lt 100 ]
                 then
             Czas_CH=$Czas_CH
            fi
            

            
# przygotowanie wysietlenia danych o polaczeniu GSM  
     
    (echo "======================================") 
    (echo "       $DATE")
    (echo "--------------------------------------")
    (echo "     MODEM  HUAWEI  E3372  HILINK     ")
    (echo "--------------------------------------")
    (echo "Stan Lacza z BTS  :  $Polaczenie")
    (echo "Nazwa Sieci       :  $Nazwa_Sieci")
    (echo "ID_Sieci          :  $ID_Sieci")
    (echo "Sila Sygnalu      :  $Sila_Sygnalu")
    (echo "CSQ               :  $CSQ")
    (echo "Czas polaczenia   :  $Czas_PH:$Czas_PM:$Czas_PS")
    (echo "Czas calkowity    :  $Czas_CH:$Czas_CM:$Czas_CS")
    (echo "Typ Sieci         :  $Siec")
    (echo "Adres IP          :  $Adres_IP")
    (echo "DNS podstawowy    :  $DNS_Primary")
    (echo "DNS rezerwowy     :  $DNS_Secendary")
    (echo "======================================")
#    sleep 1
# FUT
# ostania korekta  26.02.2014
# Koniec skryptu
# 

Pozdr,

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

29 (edytowany przez Payti 2015-01-22 01:19:29)

Odp: mwan3 - łącza backupowe konfiguracja

Wersja v2 skryptu dla Huawei E3372 HiLink pracującego z driverem cdc_ether (HiLink):
- dodane dalsze informacje z API
- generujemy plik CLF v. 3.0 btsearch.clf na http://btsearch.pl/nobbimonitor.php i umieszczamy w katalogu /mnt/btsearch.clf  - im mniejszy plik tym szybciej wyszukiwanie BTS'a działa, proponuje zrzucić swoje województwo i operatora
- poprawa obliczania jakości sygnału CSQ wg skali:

Przelicznik % dBm CSQ
0% -113dBm CSQ=0
3% -111dBm CSQ=1
6% -109dBm CSQ=2
9% -107dBm CSQ=3
12% -105dBm CSQ=4
16% -103dBm CSQ=5
19% -101dBm CSQ=6
23% -99dBm CSQ=7
26% -97dBm CSQ=8
29% -95dBm CSQ=9
32% -93dBm CSQ=10
35% -91dBm CSQ=11
38% -89dBm CSQ=12
41% -87dBm CSQ=13
45% -85dBm CSQ=14
48% -83dBm CSQ=15
51% -81dBm CSQ=16
54% -79dBm CSQ=17
58% -77dBm CSQ=18
61% -75dBm CSQ=19
64% -73dBm CSQ=20
67% -71dBm CSQ=21
70% -69dBm CSQ=22
74% -67dBm CSQ=23
77% -65dBm CSQ=24
80% -63dBm CSQ=25
83% -61dBm CSQ=26
87% -59dBm CSQ=27
90% -57dBm CSQ=28
93% -55dBm CSQ=29
96% -53dBm CSQ=30
100% -51dBm CSQ=31

Skrypt v2:

#!/bin/sh

CLF='/mnt/btsearch.clf'

# odczyt danych z modemu HILINK bez trybu modemu 
  wget -t 25 -O /tmp/E3372-status http://192.168.8.1/api/monitoring/status > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-plmn http://192.168.8.1/api/net/current-plmn  > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal-para http://192.168.8.1/api/net/signal-para > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal http://192.168.8.1/api/device/signal > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-trafic http://192.168.8.1/api/monitoring/traffic-statistics > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-token http://192.168.8.1/api/webserver/token > /dev/null 2>&1
  token=`cat /tmp/E3372-token | grep token | cut -d '<' -f 2 | cut -d '>' -f 2`
  wget -t 25 -O /tmp/E3372-information "http://192.168.8.1/api/device/information" --header "__RequestVerificationToken: $token" > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-dhcp http://192.168.8.1/api/dhcp/settings > /dev/null 2>&1

#   szukanie danych w pliku z danymi typu HTML
    Status_Polaczenia=`cat /tmp/E3372-status | grep ConnectionStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    RoamingStatus=`cat /tmp/E3372-status | grep RoamingStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSSI=`cat /tmp/E3372-signal | grep rssi | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSCP=`cat /tmp/E3372-signal | grep rscp | cut -d '<' -f 2 | cut -d '>' -f 2`
    ECIO=`cat /tmp/E3372-signal-para | grep Ecio | cut -d '<' -f 2 | cut -d '>' -f 2` 
    SC=`cat /tmp/E3372-signal | grep '<sc' | cut -d '<' -f 2 | cut -d '>' -f 2`
    LAC=`cat /tmp/E3372-signal-para | grep Lac | cut -d '<' -f 2 | cut -d '>' -f 2`
    LCID=`cat /tmp/E3372-signal-para | grep CellID | cut -d '<' -f 2 | cut -d '>' -f 2`
    CID=`cat /tmp/E3372-signal-para | grep CellID | cut -d '<' -f 2 | cut -d '>' -f 2 | cut -c 5-8`
    Typ_Sieci=`cat /tmp/E3372-status | grep CurrentNetworkTypeEx | cut -d '<' -f 2 | cut -d '>' -f 2`
    Adres_IP=`cat /tmp/E3372-status | grep WanIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Primary=`cat /tmp/E3372-status | grep PrimaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Secendary=`cat /tmp/E3372-status | grep SecondaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    Nazwa_Sieci=`cat /tmp/E3372-plmn | grep FullName | cut -d '<' -f 2 | cut -d '>' -f 2`
    ID_Sieci=`cat /tmp/E3372-plmn | grep Numeric | cut -d '<' -f 2 | cut -d '>' -f 2`
    Rat=`cat /tmp/E3372-plmn | grep Rat | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Polaczenia=`cat /tmp/E3372-trafic | grep CurrentConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Calkowity=`cat /tmp/E3372-trafic | grep TotalConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentDownload=`cat /tmp/E3372-trafic | grep 'CurrentDownload>' | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentUpload=`cat /tmp/E3372-trafic | grep 'CurrentUpload>' | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentDownloadRate=`cat /tmp/E3372-trafic | grep CurrentDownloadRate | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentUploadRate=`cat /tmp/E3372-trafic | grep CurrentUploadRate | cut -d '<' -f 2 | cut -d '>' -f 2`
    TotalUpload=`cat /tmp/E3372-trafic | grep TotalUpload | cut -d '<' -f 2 | cut -d '>' -f 2`
    TotalDownload=`cat /tmp/E3372-trafic | grep TotalDownload | cut -d '<' -f 2 | cut -d '>' -f 2`
    DhcpIPAddress=`cat /tmp/E3372-dhcp | grep DhcpIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DhcpLanNetmask=`cat /tmp/E3372-dhcp | grep DhcpLanNetmask | cut -d '<' -f 2 | cut -d '>' -f 2`

#   szukanie danych o modemie
    DeviceName=`cat /tmp/E3372-information | grep DeviceName | cut -d '<' -f 2 | cut -d '>' -f 2`
    Classify=`cat /tmp/E3372-information | grep Classify | cut -d '<' -f 2 | cut -d '>' -f 2`
    ProductFamily=`cat /tmp/E3372-information | grep ProductFamily | cut -d '<' -f 2 | cut -d '>' -f 2`
    SerialNumber=`cat /tmp/E3372-information | grep SerialNumber | cut -d '<' -f 2 | cut -d '>' -f 2`
    Imei=`cat /tmp/E3372-information | grep Imei | cut -d '<' -f 2 | cut -d '>' -f 2`
    Imsi=`cat /tmp/E3372-information | grep Imsi | cut -d '<' -f 2 | cut -d '>' -f 2`
    Iccid=`cat /tmp/E3372-information | grep Iccid | cut -d '<' -f 2 | cut -d '>' -f 2`
    HardwareVersion=`cat /tmp/E3372-information | grep HardwareVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    SoftwareVersion=`cat /tmp/E3372-information | grep SoftwareVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    WebUIVersion=`cat /tmp/E3372-information | grep WebUIVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    MacAddress1=`cat /tmp/E3372-information | grep MacAddress1 | cut -d '<' -f 2 | cut -d '>' -f 2`
    supportmode=`cat /tmp/E3372-information | grep supportmode | cut -d '<' -f 2 | cut -d '>' -f 2`
    workmode=`cat /tmp/E3372-information | grep workmode | cut -d '<' -f 2 | cut -d '>' -f 2`


    DATE=`date "+%F  %H:%M:%S"`
    CSQ=$((ECIO+29))

# Sprawdzanie stanu polaczanienia
      if [ $Status_Polaczenia = 900 ] 
        then 
     Polaczenie="Laczenie"
       elif [ $Status_Polaczenia = 901 ]
       then
     Polaczenie="Polaczony"
       elif [ $Status_Polaczenia = 902 ]
       then
     Polaczenie="Rozlaczony"
       elif [ $Status_Polaczenia = 903 ]
       then
     Polaczenie="Rozlaczanie"
      elif [ $Status_Polaczenia = 25 -o 26 ]
        then
     Polaczenie="BLAD LACZENIA"
      else 
     Polaczenie="Brak danych"
      fi 


# Sprawdzanie typu sieci 
      if [ $Typ_Sieci = 1 ]
         then
        Siec="EDGE"
      elif [ $Typ_Sieci = 3 ]
         then
          Siec="UMTS"
      elif [ $Typ_Sieci = 4 ]
        then
          Siec="HSPA"
      elif [ $Typ_Sieci = 46 ]
        then
          Siec="DC-HSPA+"
      elif [ $Typ_Sieci = 5 ]
        then
          Siec="HSDPA"
      elif [ $Typ_Sieci = 7 -o 9 ]
         then
          Siec="HSPA+/UMTS"
      elif [ $Typ_Sieci = 101 ]
         then
          Siec="LTE"
      else
           Siec="BRAK DANYCH"
      fi

# sprawdzenie 'Rat' sieci

      if [ $Rat = 0 ]
         then
        RatSiec="2G"
      elif [ $Rat = 2 ]
         then
          RatSiec="3G"
      elif [ $Rat = 5 ]
        then
          RatSiec="3G+"
      elif [ $Rat = 7 ]
        then
          RatSiec="4G"
      else
          RatSiec="BRAK DANYCH"
      fi

# sprawdzanie nazwy sieci
       if [ $Nazwa_Sieci = "PLAY" ]
        then
           Nazwa_Sieci="PLUS ROAMING"
       else
           Nazwa_Sieci=$Nazwa_Sieci
        fi     

#  Liczenie czasu polaczenia 
           if [ $Czas_Polaczenia -ge 3600 ]
              then
            Czas_PH=$((Czas_Polaczenia/3600));
            Czas_PM=$(((Czas_Polaczenia-$Czas_PH*3600)/60));
            Czas_PS=$((Czas_Polaczenia-($Czas_PH*3600)-(Czas_PM*60)))           

            elif [ $Czas_Polaczenia -ge 600 ]
             then
            Czas_PH="00"
            Czas_PM=$((Czas_Polaczenia/60));
            Czas_PS=$((Czas_Polaczenia-$Czas_PM*60)); 
            
             elif [ $Czas_Polaczenia -ge 60 ]
              then 
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
            
             else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
             fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_PS -lt 1 ]
                  then
                Czas_PS="00"
            elif [ $Czas_PS -lt 10 ]
                  then
                Czas_PS="0"$Czas_PS
             fi
                                                                                 
            if [ $Czas_PM -lt 1 ]
                  then
                Czas_PM="00"
            elif [ $Czas_PM -lt 10 ]
                  then
                Czas_PM="0"$Czas_PM
             fi

            if [ $Czas_PH -lt 1 ]
                  then
               Czas_PH="00"
            elif [ $Czas_PH -lt 10 ]
                  then
            Czas_PH="0"$Czas_PH
              fi
                                                               
                                      
#  Liczenie czasu calkowitego polaczenia
             if [ $Czas_Calkowity -ge 3600 ]
                    then
             Czas_CH=$((Czas_Calkowity/3600))
             Czas_CM=$(((Czas_Calkowity-$Czas_CH*3600)/60))
             Czas_CS=$((Czas_Calkowity-($Czas_CH*3600)-(Czas_CM*60)))
           
             elif [ $Czas_Calkowity -ge 600 ]
                    then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
          
             elif [ $Czas_Calkowity -ge 60 ]
           
                   then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
  
              else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))

              fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_CS -lt 1 ]
                  then
               Czas_CS="00"
            elif [ $Czas_CS -lt 10 ]
                  then
               Czas_CS="0"$Czas_CS
             fi
                           
             if [ $Czas_CM -lt 1 ]
                   then
               Czas_CM="00"
             elif [ $Czas_CM -lt 10 ]
                   then
               Czas_CM="0"$Czas_CM
             fi
                                                                                                                                                                                                                         
            if [ $Czas_CH -lt 1 ]
                 then
             Czas_CH=" 00"
           
             elif [ $Czas_CH -lt 10 ]
                 then
             Czas_CH=" 0"$Czas_CH
           
             elif [ $Czas_CH -lt 100 ]
                 then
             Czas_CH=$Czas_CH
            fi

# konwersja hex na dec
            
LACd=$((0x$LAC))
LCIDd=$((0x$LCID))
CIDd=$((0x$CID))
CSQp=$(($CSQ*100/31))

# BTS Info

if [ -e "$CLF" ]; then
                PAT="$ID_Sieci;$CIDd;$LACd;"
                BTSINFOPOS="$(cat "$CLF" | awk -F";" '/'$PAT'/ {printf $5","$6" - "$8}')"
fi

            
# przygotowanie wysietlenia danych o polaczeniu GSM  
     
    (echo "===========================================") 
    (echo "           $DATE")
    (echo "-------------------------------------------")
    (echo "       MODEM HUAWEI $DeviceName $Classify $ProductFamily     ")
    (echo "-------------------------------------------")
    (echo "SN                :  $SerialNumber")
    (echo "IMEI              :  $Imei")
    (echo "IMSI              :  $Imsi")
    (echo "ICCID             :  $Iccid")
    (echo "Wersja Hardware   :  $HardwareVersion")
    (echo "Wersja Software   :  $SoftwareVersion")
    (echo "Wersja WebUI      :  $WebUIVersion")
    (echo "Mac Address       :  $MacAddress1")
    (echo "Obslugiwane sieci :  $supportmode")
    (echo "Aktualna siec     :  $workmode")
    (echo "-------------------------------------------")
    (echo "Stan lacza z BTS  :  $Polaczenie")
    (echo "Nazwa sieci       :  $Nazwa_Sieci")
    (echo "ID sieci          :  $ID_Sieci")
    (echo "Siec operatora    :  $RatSiec")
    (echo "Roaming           :  $RoamingStatus")
    (echo "Sila sygnalu RSSI :  $RSSI")
    (echo "Sila sygnalu RSCP :  $RSCP")
    (echo "Ec/Io             :  $ECIO dBm")
    (echo "CSQ               :  $CSQ ($CSQp %)")
    (echo "SC                :  $SC")
    (echo "LAC               :  $LACd")
    (echo "LCID (CID)        :  $LCIDd ($CIDd)")
    (echo "Czas polaczenia   :  $Czas_PH:$Czas_PM:$Czas_PS")
    (echo "Czas calkowity    :  $Czas_CH:$Czas_CM:$Czas_CS")
    (echo "Typ sieci         :  $Siec")
    (echo "Adres IP LAN      :  $DhcpIPAddress")
    (echo "Maska LAN         :  $DhcpLanNetmask")
    (echo "Adres IP WAN      :  $Adres_IP")
    (echo "DNS podstawowy    :  $DNS_Primary")
    (echo "DNS rezerwowy     :  $DNS_Secendary")
    (echo "Pobrano w sesji   :  $(($CurrentDownload/1048576)) MB")
    (echo "Wyslano w sesji   :  $(($CurrentUpload/1048576)) MB")
    (echo "Total pobrano     :  $(($TotalDownload/1048576)) MB")
    (echo "Total wyslano     :  $(($TotalUpload/1048576)) MB")
    (echo "Predkosc Download :  $(($CurrentDownloadRate/1000)) kbit/s")
    (echo "Predkosc Upload   :  $(($CurrentUploadRate/1000)) kbit/s")
    (echo "-------------------------------------------")
    (echo "BTS pozycja GPS   :  $BTSINFOPOS")
    (echo "===========================================")

# ostania korekta  19.01.2015
# Koniec skryptu
# 

Taki jest wynik jego działania:

root@WR1043ND:~# hilink 
===========================================
           2015-01-20  20:05:51
-------------------------------------------
       MODEM HUAWEI E3372 hilink LTE     
-------------------------------------------
SN                :  yyyyyyyyyyyyyyyyy
IMEI              :  xxxxxxxxxxxxxxxxx
IMSI              :  xxxxxxxxxxxxxxxxx
ICCID             :  xxxxxxxxxxxxxxxxxxxxxx
Wersja Hardware   :  CL1E3372SM Ver.A
Wersja Software   :  22.286.53.01.161
Wersja WebUI      :  16.100.05.00.03
Mac Address       :  00:xx:xx:xx:xx:xx
Obslugiwane sieci :  LTE|WCDMA|GSM
Aktualna siec     :  WCDMA
-------------------------------------------
Stan lacza z BTS  :  Polaczony
Nazwa sieci       :  Orange
ID sieci          :  26003
Siec operatora    :  3G
Roaming           :  0
Sila sygnalu RSSI :  -59dBm
Sila sygnalu RSCP :  -69dBm
Ec/Io             :  -10 dBm
CSQ               :  19 (61 %)
SC                :  369
LAC               :  53xxx
LCID (CID)        :  59xxxxxx (4xxxx)
Czas polaczenia   :  50:44:53
Czas calkowity    :  66:47:55
Typ sieci         :  DC-HSPA+
Adres IP LAN      :  192.168.8.1
Maska LAN         :  255.255.255.0
Adres IP WAN      :  10.xxx.xxx.xxx
DNS podstawowy    :  194.204.159.1
DNS rezerwowy     :  194.204.152.34
Pobrano w sesji   :  55 MB
Wyslano w sesji   :  7 MB
Total pobrano     :  289 MB
Total wyslano     :  36 MB
Predkosc Download :  0 kbit/s
Predkosc Upload   :  0 kbit/s
-------------------------------------------
BTS pozycja GPS   :  49.xxxxxx,18.xxxxxx - Miasto, ul. Jakaś - gdzie, NetWorkS! [xxx:x,xxxx:xxx:U2100-10589]
===========================================
root@WR1043ND:~# 

Pozdr,

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

30 (edytowany przez Payti 2015-01-21 02:36:01)

Odp: mwan3 - łącza backupowe konfiguracja

Cezary prośba o podpowiedź jak do pliku z katalogu z 3ginfo o nazwie hilink.html (zbudowanego z signal.html) o zawartości:

<html>
<style type="text/css">
body {font-family: Verdana, Arial, Helvetica, sans-serif;}
.c {margin:auto;text-align:center;clear:both;}
.l {width:49%;clear:both;float:left;text-align:right;}
.r {width:49%;float:right;text-align:left;}
</style>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Siła sygnału</title>
<script language="javascript" type="text/javascript">
<!--
var secs=0;
var delay = 1000;

startTimer();
function startTimer()
{
 if (secs==0)
 {
  secs=3;
  refreshData();
 }
 else
 {
  self.status = secs;
  secs = secs - 1;
 }
 self.setTimeout("startTimer()", delay);
}
function refreshData()
{
 var req;

 try {req = new XMLHttpRequest();} catch (e) {
  try {req = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {
   try {req = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {
    alert("Coś stara ta przelądarka...");
    return false;
   }
  }
 }

 req.open("GET", "/cgi-bin/signal.sh");

 req.onreadystatechange = function() {

  if (req.readyState == 4) {
   var line=req.responseText;
   var arr=(line.split(/,/));
   if(arr.length>3)
   {
    var p = (arr[2]*100/31).toFixed();
    document.getElementById('csq').innerHTML=p+'%';
    document.getElementById('precent').style.width=p+"%";
    var color = "red";
    if (p > 29) {color="orange"; }
    if (p > 45) {color="yellow"; }
    if (p > 61) {color="green"; }
    document.getElementById('precent').style.backgroundColor=color;
   }
  }
 }

 req.send(null);
}
//-->
</script>
</head>
<body>
<table style='width:100%;height:100%;'>
 <tr><td colspan=3 style='height:100px;'>&nbsp;</td></tr>
 <tr>
  <td>&nbsp;</td>
  <td style='width:600px; height:200px;'>
   <span class="l">Siła sygnału:</span><span id="csq" class="r"></span>
   <div style="float:left; margin:1%; width:98%; height:20px; border:1px solid #000000; background-color:transparent;">
    <div id="precent" style="float:left; background-color:black; border-right:1px solid #000000; height:100%; width:0%">&nbsp;</div>
   </div>
  </td>
  <td>&nbsp;</td>
 </tr>
 <tr><td colspan=3>&nbsp;</td></tr>
</table>
</body>
</html>

dodać wywołanie /bin/hilink skryptu j/w aby tekstowo pod paskiem siły sygnału wyświetlić wynik wykonania skryptu?

Prośba o kawałek kodu.
Pozdr,

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

31

Odp: mwan3 - łącza backupowe konfiguracja

Zrób sobie nowy div pod id=precent. Chwilę wyżej z cgi czytany jest wynik wykonania /cgi-bin/signal.sh - parsowany jest output, więc dodaj sobie wyświetlenie wyniku tego cgi (tak jak % się robią przez innerHTML np.)

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

32 (edytowany przez Payti 2015-01-21 22:11:15)

Odp: mwan3 - łącza backupowe konfiguracja

Dopisałem więc pod istniejącym skryptem kolejny:

<script language="javascript" type="text/javascript">
<!--

function readhilink()
{
var hilink;
hilink = new ActiveXObject("Microsoft.XMLHTTP");
hilink.open("GET", "/cgi-bin/hilink.sh",true);
hilink.onreadystatechange = function()
 {
        if (hilink.readyState == 4 && hilink.status==200)
        {
        var hlout = hilink.responseText;
        document.getElementById("hilinkout").innerHTML=hlout;
        }
 }
 hilink.send(null);
}

//-->
</script>

i dodałem linie w body pod 'precent':

   <button type="button" onclick="readhilink()">Odczytaj dane modemu</button>
   <div id="hilinkout">Info</div>

jednakże po kliknięciu nic się nie dzieje, nie wyświetla nic, skrypt hilink.sh oczywiście działa ok z wywołania z 'palca'.

Gdzie popełniam błąd?

pozdr,

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

33

Odp: mwan3 - łącza backupowe konfiguracja

Co masz w tym hilink.sh ?

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

34

Odp: mwan3 - łącza backupowe konfiguracja

Dokładnie to co w poście #29 - skrypt v2

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

35

Odp: mwan3 - łącza backupowe konfiguracja

brakuje
echo -e "Content-type: text/html\n\n"

to ma być output zgodny z html i oczekiwaniami przeglądarki - nie pierwszy lepszy.

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

36 (edytowany przez Payti 2015-01-22 01:17:02)

Odp: mwan3 - łącza backupowe konfiguracja

Dobra dodałem, z palca output mam taki:

Content-type: text/html

===========================================
           2015-01-20  20:05:51
-------------------------------------------
       MODEM HUAWEI E3372 hilink LTE     
-------------------------------------------
SN                :  yyyyyyyyyyyyyyyyy
IMEI              :  xxxxxxxxxxxxxxxxx
IMSI              :  xxxxxxxxxxxxxxxxx
ICCID             :  xxxxxxxxxxxxxxxxxxxxxx
Wersja Hardware   :  CL1E3372SM Ver.A
Wersja Software   :  22.286.53.01.161
Wersja WebUI      :  16.100.05.00.03
Mac Address       :  00:xx:xx:xx:xx:xx
Obslugiwane sieci :  LTE|WCDMA|GSM
Aktualna siec     :  WCDMA
-------------------------------------------
Stan lacza z BTS  :  Polaczony
Nazwa sieci       :  Orange
ID sieci          :  26003
Siec operatora    :  3G
Roaming           :  0
Sila sygnalu RSSI :  -59dBm
Sila sygnalu RSCP :  -69dBm
Ec/Io             :  -10 dBm
CSQ               :  19 (61 %)
SC                :  369
LAC               :  53xxx
LCID (CID)        :  59xxxxxx (4xxxx)
Czas polaczenia   :  50:44:53
Czas calkowity    :  66:47:55
Typ sieci         :  DC-HSPA+
Adres IP LAN      :  192.168.8.1
Maska LAN         :  255.255.255.0
Adres IP WAN      :  10.xxx.xxx.xxx
DNS podstawowy    :  194.204.159.1
DNS rezerwowy     :  194.204.152.34
Pobrano w sesji   :  55 MB
Wyslano w sesji   :  7 MB
Total pobrano     :  289 MB
Total wyslano     :  36 MB
Predkosc Download :  0 kbit/s
Predkosc Upload   :  0 kbit/s
-------------------------------------------
BTS pozycja GPS   :  49.xxxxxx,18.xxxxxx - Miasto, ul. Jakaś - gdzie, NetWorkS! [xxx:x,xxxx:xxx:U2100-10589]
===========================================

ale jak klikam na guzior dalej nic ;(

Pozdr,

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

37

Odp: mwan3 - łącza backupowe konfiguracja

Przed ifem dodaj sobie  alert(hilink.responseText); i zobaczysz czy to w ogóle przechodzi.

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

38 (edytowany przez Payti 2015-01-22 01:20:51)

Odp: mwan3 - łącza backupowe konfiguracja

Ok zrobiłem test ale w IE11 i tu działa z alert i bez. Muszę powalczyć jeszcze z formatowaniem teraz bo wypluwa tekst ciurkiem nie w nowych liniach ... Starczy dodać /n na końcu każdej linii?

Ciekawe czemu w Chrome to nie chce działać ... ?

Pozdr,

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

39

Odp: mwan3 - łącza backupowe konfiguracja

W html to jest  <br> nie /n

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

40 (edytowany przez Payti 2015-01-22 01:21:26)

Odp: mwan3 - łącza backupowe konfiguracja

Dobra mam, aby w Chrome działał dodałem:

try {hilink = new XMLHttpRequest();} catch (e) {
  try {hilink = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {
   try {hilink = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {
    alert("Coś stara ta przelądarka...");
    return false;
   }
  }
 }
Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

41

Odp: mwan3 - łącza backupowe konfiguracja

Z <br> daje w nowych liniach, ale da się to może zrobić jakoś inaczej by nie reformatował bo jak jest kilka spacji to wywala i zostawia jedną ...?

pozdr,

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

42

Odp: mwan3 - łącza backupowe konfiguracja

To jest html. Tam nie ma kilku spacji itd do formatowania tekstu. Używaj styli odpowiednio a nie spacji (&nbsp;).

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

43 (edytowany przez Payti 2015-01-22 01:25:42)

Odp: mwan3 - łącza backupowe konfiguracja

Ok ogarnąłem to tak jak dla mnie jest ok, zawartość skryptu /usr/share/3ginfo/cgi-bin/hilink.sh dla zainteresowanych

#!/bin/sh

CLF='/mnt/btsearch.clf'

# odczyt danych z modemu HILINK bez trybu modemu 
  wget -t 25 -O /tmp/E3372-status http://192.168.8.1/api/monitoring/status > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-plmn http://192.168.8.1/api/net/current-plmn  > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal-para http://192.168.8.1/api/net/signal-para > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal http://192.168.8.1/api/device/signal > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-trafic http://192.168.8.1/api/monitoring/traffic-statistics > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-token http://192.168.8.1/api/webserver/token > /dev/null 2>&1
  token=`cat /tmp/E3372-token | grep token | cut -d '<' -f 2 | cut -d '>' -f 2`
  wget -t 25 -O /tmp/E3372-information "http://192.168.8.1/api/device/information" --header "__RequestVerificationToken: $token" > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-dhcp http://192.168.8.1/api/dhcp/settings > /dev/null 2>&1

#   szukanie danych w pliku z danymi typu HTML
    Status_Polaczenia=`cat /tmp/E3372-status | grep ConnectionStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    RoamingStatus=`cat /tmp/E3372-status | grep RoamingStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSSI=`cat /tmp/E3372-signal | grep rssi | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSCP=`cat /tmp/E3372-signal | grep rscp | cut -d '<' -f 2 | cut -d '>' -f 2`
    ECIO=`cat /tmp/E3372-signal-para | grep Ecio | cut -d '<' -f 2 | cut -d '>' -f 2` 
    SC=`cat /tmp/E3372-signal | grep '<sc' | cut -d '<' -f 2 | cut -d '>' -f 2`
    LAC=`cat /tmp/E3372-signal-para | grep Lac | cut -d '<' -f 2 | cut -d '>' -f 2`
    LCID=`cat /tmp/E3372-signal-para | grep CellID | cut -d '<' -f 2 | cut -d '>' -f 2`
    CID=`cat /tmp/E3372-signal-para | grep CellID | cut -d '<' -f 2 | cut -d '>' -f 2 | cut -c 5-8`
    Typ_Sieci=`cat /tmp/E3372-status | grep CurrentNetworkTypeEx | cut -d '<' -f 2 | cut -d '>' -f 2`
    Adres_IP=`cat /tmp/E3372-status | grep WanIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Primary=`cat /tmp/E3372-status | grep PrimaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Secendary=`cat /tmp/E3372-status | grep SecondaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    Nazwa_Sieci=`cat /tmp/E3372-plmn | grep FullName | cut -d '<' -f 2 | cut -d '>' -f 2`
    ID_Sieci=`cat /tmp/E3372-plmn | grep Numeric | cut -d '<' -f 2 | cut -d '>' -f 2`
    Rat=`cat /tmp/E3372-plmn | grep Rat | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Polaczenia=`cat /tmp/E3372-trafic | grep CurrentConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Calkowity=`cat /tmp/E3372-trafic | grep TotalConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentDownload=`cat /tmp/E3372-trafic | grep 'CurrentDownload>' | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentUpload=`cat /tmp/E3372-trafic | grep 'CurrentUpload>' | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentDownloadRate=`cat /tmp/E3372-trafic | grep CurrentDownloadRate | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentUploadRate=`cat /tmp/E3372-trafic | grep CurrentUploadRate | cut -d '<' -f 2 | cut -d '>' -f 2`
    TotalUpload=`cat /tmp/E3372-trafic | grep TotalUpload | cut -d '<' -f 2 | cut -d '>' -f 2`
    TotalDownload=`cat /tmp/E3372-trafic | grep TotalDownload | cut -d '<' -f 2 | cut -d '>' -f 2`
    DhcpIPAddress=`cat /tmp/E3372-dhcp | grep DhcpIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DhcpLanNetmask=`cat /tmp/E3372-dhcp | grep DhcpLanNetmask | cut -d '<' -f 2 | cut -d '>' -f 2`

#   szukanie danych o modemie
    DeviceName=`cat /tmp/E3372-information | grep DeviceName | cut -d '<' -f 2 | cut -d '>' -f 2`
    Classify=`cat /tmp/E3372-information | grep Classify | cut -d '<' -f 2 | cut -d '>' -f 2`
    ProductFamily=`cat /tmp/E3372-information | grep ProductFamily | cut -d '<' -f 2 | cut -d '>' -f 2`
    SerialNumber=`cat /tmp/E3372-information | grep SerialNumber | cut -d '<' -f 2 | cut -d '>' -f 2`
    Imei=`cat /tmp/E3372-information | grep Imei | cut -d '<' -f 2 | cut -d '>' -f 2`
    Imsi=`cat /tmp/E3372-information | grep Imsi | cut -d '<' -f 2 | cut -d '>' -f 2`
    Iccid=`cat /tmp/E3372-information | grep Iccid | cut -d '<' -f 2 | cut -d '>' -f 2`
    HardwareVersion=`cat /tmp/E3372-information | grep HardwareVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    SoftwareVersion=`cat /tmp/E3372-information | grep SoftwareVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    WebUIVersion=`cat /tmp/E3372-information | grep WebUIVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    MacAddress1=`cat /tmp/E3372-information | grep MacAddress1 | cut -d '<' -f 2 | cut -d '>' -f 2`
    supportmode=`cat /tmp/E3372-information | grep supportmode | cut -d '<' -f 2 | cut -d '>' -f 2`
    workmode=`cat /tmp/E3372-information | grep workmode | cut -d '<' -f 2 | cut -d '>' -f 2`


    DATE=`date "+%F  %H:%M:%S"`
    CSQ=$((ECIO+29))

# Sprawdzanie stanu polaczanienia
      if [ $Status_Polaczenia = 900 ] 
        then 
     Polaczenie="Laczenie"
       elif [ $Status_Polaczenia = 901 ]
       then
     Polaczenie="Polaczony"
       elif [ $Status_Polaczenia = 902 ]
       then
     Polaczenie="Rozlaczony"
       elif [ $Status_Polaczenia = 903 ]
       then
     Polaczenie="Rozlaczanie"
      elif [ $Status_Polaczenia = 25 -o 26 ]
        then
     Polaczenie="BLAD LACZENIA"
      else 
     Polaczenie="Brak danych"
      fi 


# Sprawdzanie typu sieci 
      if [ $Typ_Sieci = 1 ]
         then
        Siec="EDGE"
      elif [ $Typ_Sieci = 3 ]
         then
          Siec="UMTS"
      elif [ $Typ_Sieci = 4 ]
        then
          Siec="HSPA"
      elif [ $Typ_Sieci = 46 ]
        then
          Siec="DC-HSPA+"
      elif [ $Typ_Sieci = 5 ]
        then
          Siec="HSDPA"
      elif [ $Typ_Sieci = 7 -o 9 ]
         then
          Siec="HSPA+/UMTS"
      elif [ $Typ_Sieci = 101 ]
         then
          Siec="LTE"
      else
           Siec="BRAK DANYCH"
      fi

# sprawdzenie 'Rat' sieci

      if [ $Rat = 0 ]
         then
        RatSiec="2G"
      elif [ $Rat = 2 ]
         then
          RatSiec="3G"
      elif [ $Rat = 5 ]
        then
          RatSiec="3G+"
      elif [ $Rat = 7 ]
        then
          RatSiec="4G"
      else
          RatSiec="BRAK DANYCH"
      fi

# sprawdzanie nazwy sieci
       if [ $Nazwa_Sieci = "PLAY" ]
        then
           Nazwa_Sieci="PLUS ROAMING"
       else
           Nazwa_Sieci=$Nazwa_Sieci
        fi     

#  Liczenie czasu polaczenia 
           if [ $Czas_Polaczenia -ge 3600 ]
              then
            Czas_PH=$((Czas_Polaczenia/3600));
            Czas_PM=$(((Czas_Polaczenia-$Czas_PH*3600)/60));
            Czas_PS=$((Czas_Polaczenia-($Czas_PH*3600)-(Czas_PM*60)))           

            elif [ $Czas_Polaczenia -ge 600 ]
             then
            Czas_PH="00"
            Czas_PM=$((Czas_Polaczenia/60));
            Czas_PS=$((Czas_Polaczenia-$Czas_PM*60)); 
            
             elif [ $Czas_Polaczenia -ge 60 ]
              then 
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
            
             else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
             fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_PS -lt 1 ]
                  then
                Czas_PS="00"
            elif [ $Czas_PS -lt 10 ]
                  then
                Czas_PS="0"$Czas_PS
             fi
                                                                                 
            if [ $Czas_PM -lt 1 ]
                  then
                Czas_PM="00"
            elif [ $Czas_PM -lt 10 ]
                  then
                Czas_PM="0"$Czas_PM
             fi

            if [ $Czas_PH -lt 1 ]
                  then
               Czas_PH="00"
            elif [ $Czas_PH -lt 10 ]
                  then
            Czas_PH="0"$Czas_PH
              fi
                                                               
                                      
#  Liczenie czasu calkowitego polaczenia
             if [ $Czas_Calkowity -ge 3600 ]
                    then
             Czas_CH=$((Czas_Calkowity/3600))
             Czas_CM=$(((Czas_Calkowity-$Czas_CH*3600)/60))
             Czas_CS=$((Czas_Calkowity-($Czas_CH*3600)-(Czas_CM*60)))
           
             elif [ $Czas_Calkowity -ge 600 ]
                    then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
          
             elif [ $Czas_Calkowity -ge 60 ]
           
                   then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
  
              else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))

              fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_CS -lt 1 ]
                  then
               Czas_CS="00"
            elif [ $Czas_CS -lt 10 ]
                  then
               Czas_CS="0"$Czas_CS
             fi
                           
             if [ $Czas_CM -lt 1 ]
                   then
               Czas_CM="00"
             elif [ $Czas_CM -lt 10 ]
                   then
               Czas_CM="0"$Czas_CM
             fi
                                                                                                                                                                                                                         
            if [ $Czas_CH -lt 1 ]
                 then
             Czas_CH=" 00"
           
             elif [ $Czas_CH -lt 10 ]
                 then
             Czas_CH=" 0"$Czas_CH
           
             elif [ $Czas_CH -lt 100 ]
                 then
             Czas_CH=$Czas_CH
            fi

# konwersja hex na dec
            
LACd=$((0x$LAC))
LCIDd=$((0x$LCID))
CIDd=$((0x$CID))
CSQp=$(($CSQ*100/31))

# BTS Info

if [ -e "$CLF" ]; then
                PAT="$ID_Sieci;$CIDd;$LACd;"
                BTSINFOPOS="$(cat "$CLF" | awk -F";" '/'$PAT'/ {printf $5","$6" - "$8}')"
fi

            
# przygotowanie wysietlenia danych o polaczeniu GSM  
echo -e "Content-type: text/html\n\n"     
    (echo "================================================================<br>") 
    (echo "           $DATE <br>")
    (echo "-------------------------------------------<br>")
    (echo "       MODEM HUAWEI $DeviceName $Classify $ProductFamily     <br>")
    (echo "-------------------------------------------<br>")
    (echo "SN                :  $SerialNumber <br>")
    (echo "IMEI              :  $Imei <br>")
    (echo "IMSI              :  $Imsi <br>")
    (echo "ICCID             :  $Iccid <br>")
    (echo "Wersja Hardware   :  $HardwareVersion <br>")
    (echo "Wersja Software   :  $SoftwareVersion <br>")
    (echo "Wersja WebUI      :  $WebUIVersion <br>")
    (echo "Mac Address       :  $MacAddress1 <br>")
    (echo "Obslugiwane sieci :  $supportmode <br>")
    (echo "Aktualna siec     :  $workmode <br>")
    (echo "-------------------------------------------<br>")
    (echo "Stan lacza z BTS  :  $Polaczenie <br>")
    (echo "Nazwa sieci       :  $Nazwa_Sieci <br>")
    (echo "ID sieci          :  $ID_Sieci <br>")
    (echo "Siec operatora    :  $RatSiec <br>")
    (echo "Roaming           :  $RoamingStatus <br>")
    (echo "Sila sygnalu RSSI :  $RSSI <br>")
    (echo "Sila sygnalu RSCP :  $RSCP <br>")
    (echo "Ec/Io             :  $ECIO dBm <br>")
    (echo "CSQ               :  $CSQ ($CSQp %) <br>")
    (echo "SC                :  $SC <br>")
    (echo "LAC               :  $LACd <br>")
    (echo "LCID (CID)        :  $LCIDd ($CIDd) <br>")
    (echo "Czas polaczenia   :  $Czas_PH:$Czas_PM:$Czas_PS <br>")
    (echo "Czas calkowity    :  $Czas_CH:$Czas_CM:$Czas_CS <br>")
    (echo "Typ sieci         :  $Siec <br>")
    (echo "Adres IP LAN      :  $DhcpIPAddress <br>")
    (echo "Maska LAN         :  $DhcpLanNetmask <br>")
    (echo "Adres IP WAN      :  $Adres_IP <br>")
    (echo "DNS podstawowy    :  $DNS_Primary <br>")
    (echo "DNS rezerwowy     :  $DNS_Secendary <br>")
    (echo "Pobrano w sesji   :  $(($CurrentDownload/1048576)) MB <br>")
    (echo "Wyslano w sesji   :  $(($CurrentUpload/1048576)) MB <br>")
    (echo "Total pobrano     :  $(($TotalDownload/1048576)) MB <br>")
    (echo "Total wyslano     :  $(($TotalUpload/1048576)) MB <br>")
    (echo "Predkosc Download :  $(($CurrentDownloadRate/1000)) kbit/s <br>")
    (echo "Predkosc Upload   :  $(($CurrentUploadRate/1000)) kbit/s <br>")
    (echo "-------------------------------------------<br>")
    (echo "BTS pozycja GPS   :  $BTSINFOPOS <br>")
    (echo "================================================================<br>")

# ostania korekta  21.01.2015
# Koniec skryptu
#

zawartość /usr/share/3ginfo/hilink.html

<html>
<style type="text/css">
body {font-family: Verdana, Arial, Helvetica, sans-serif, Courier;}
.c {margin:auto;text-align:center;clear:both;}
.l {width:49%;clear:both;float:left;text-align:right;}
.r {width:49%;float:right;text-align:left;}
</style>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Siła sygnału</title>

<script language="javascript" type="text/javascript">
<!--
var secs=0;
var delay = 1000;

startTimer();
function startTimer()
{
 if (secs==0)
 {
  secs=3;
  refreshData();
 }
 else
 {
  self.status = secs;
  secs = secs - 1;
 }
 self.setTimeout("startTimer()", delay);
}

function refreshData()
{
 var req;

 try {req = new XMLHttpRequest();} catch (e) {
  try {req = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {
   try {req = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {
    alert("CoĹ› stara ta przelÄ…darka...");
    return false;
   }
  }
 }

 req.open("GET", "/cgi-bin/signal.sh");

 req.onreadystatechange = function() {

  if (req.readyState == 4) {
   var line=req.responseText;
   var arr=(line.split(/,/));
   if(arr.length>3)
   {
    var p = (arr[2]*100/31).toFixed();
    document.getElementById('csq').innerHTML=p+'%';
    document.getElementById('precent').style.width=p+"%";
    var color = "red";
    if (p > 29) {color="orange"; }
    if (p > 45) {color="yellow"; }
    if (p > 61) {color="green"; }
    document.getElementById('precent').style.backgroundColor=color;
   }
  }
 }
 req.send(null);
}
//-->
</script>

<script language="javascript" type="text/javascript">
<!--

function readhilink()
{
var hilink;

try {hilink = new XMLHttpRequest();} catch (e) {
  try {hilink = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {
   try {hilink = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {
    alert("Co�^� stara ta przel�^�darka...");
    return false;
   }
  }
 }

hilink.open("GET", "/cgi-bin/hilink.sh",true);
hilink.onreadystatechange = function() 
 {
    if (hilink.readyState == 4 && hilink.status==200) 
    {
    var hlout = hilink.responseText;
    document.getElementById("hilinkout").innerHTML=hlout;
        }
 }
 hilink.send(null);
}

//-->
</script>

</head>
<body>
<table style='width:100%;height:100%;'>
 <tr><td colspan=3 style='height:1px;'>&nbsp;</td></tr>
 <tr>
  <td>&nbsp;</td>
  <td style='width:700px; height:1px;'>

   <div class="c"><h1><font color="black">Modem HUAWEI E3372 HiLink LTE</color></h1></div>
   <span class="l">Siła sygnału CSQ:</span><span id="csq" class="r"></span>
   <div style="float:left; margin:1%; width:98%; height:20px; border:1px solid #000000; background-color:transparent;">
    <div id="precent" style="float:left; background-color:black; border-right:1px solid #000000; height:100%; width:0%">&nbsp;</div>
   </div>
   <font size="2"><div id="hilinkout"></div></font>
   <center><button type="button" onclick="readhilink()">Odczytaj dane modemu</button></center>
  </td>
  <td>&nbsp;</td>
 </tr>
 <tr><td colspan=3>&nbsp;</td></tr>
</table>
</body>
</html>

zawartość /usr/share/3ginfo/cgi-bin/signal.sh

#!/bin/sh
# dczyt danych o sile sygnalu  z modemu E3372 w trybie  HILINK 
    wget -t 25 -O /tmp/E3372-signal http://192.168.8.1/api/net/signal-para > /dev/null 2>&1

# szukanie danych w pliku z danymi typu HTML
    RSSI=`cat /tmp/E3372-signal | grep Rscp | cut -d '<' -f 2 | cut -d '>' -f 2`
    CSQ=`cat /tmp/E3372-signal | grep Ecio | cut -d '<' -f 2 | cut -d '>' -f 2` 
#        CSQ=$(((CSQ+32)*10/11))
     CSQ=$((CSQ+29))
         RSSI=$((RSSI*-100/121))
         RSCQ="Signal,Quality:,$CSQ,$RSSI"
#
# przygotowanie danych dla przegladarki
#
         echo -e "Content-type: text/html\n\n"
         echo $RSCQ | sed -e 's/ /,/g'
#

taki jest wynik na stronce (musi być zainstalowany pakiet 3ginfo i uruchomiony), wywołanie -> http://ip.routera:81/hilink.html
PunBB bbcode screen

Cezary dziękuję Ci za pomoc!

Pozdr,

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

44

Odp: mwan3 - łącza backupowe konfiguracja

OT: dla

Software version:    22.298.03.02.965
Web UI version:    17.100.05.06.965

to nie działa. Huawei w hlinka ma nowy soft którym trzeba się zautoryzywać i zjeść ciasteczko inaczej odczyt api zwraca błąd.

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

45 (edytowany przez Payti 2015-01-24 03:19:35)

Odp: mwan3 - łącza backupowe konfiguracja

Ja akurat specjalnie wgrywałem te modowane wersje do E3372 HiLink:

Wersja Software   :  22.286.53.01.161
Wersja WebUI      :  16.100.05.00.03

ze względu na:
- modowane WebUI - dostępne sporo ukrytych opcji, np zmiana IP modemu i wiele innych
- odblokowane adb i telnet do modemu
- nie zrywa połączenia np. po 2h
- możliwość po adb doinstalowywania swoich pakietów na modem, np. mc
- da się na tej wersji ustawić język PL WebUI przez dodanie wpisu do pliku

Cezary tzn dołożyli dodatkowo ciasteczko czy trzeba pobrać token?

pozdr,

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

46

Odp: mwan3 - łącza backupowe konfiguracja

Dołożyli cookie. Jak go nie masz to nic nie możesz odczytać.

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

47 (edytowany przez Payti 2015-01-24 11:56:54)

Odp: mwan3 - łącza backupowe konfiguracja

W sumie to zawsze można wgrać modowaną wersje j/w. Pewnie nowsze też będą zmodowane i może wyłączą ciasteczko.
Pożyjemy, zobaczymy. Póki co na tej nie mam praktycznie problemów, soft stabilny, ping niski. Aktualnie czas połączenia:

Czas polaczenia   :  137:31:59

Pozdr,

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

48 (edytowany przez Payti 2015-01-31 14:35:00)

Odp: mwan3 - łącza backupowe konfiguracja

Aktualizacja skryptów v2.1 - dodane rozpoznanie typu sieci wg znanych kodów API:

CurrentNetworkType, CurrentNetworkTypeEx: 
0 - brak uslugi 
1 - GSM 
2 - GPRS 
3 - EDGE 
4 - WCDMA 
5 - HSDPA 
6 - HSUPA 
7 - HSPA 
8 - TDSCDMA 
9 - HSPA+ 
10 - EVDO rev. 0 
11 - EVDO rev. A 
12 - EVDO rev. B 
13 - 1xRTT 
14 - UMB 
15 - 1xEVDV 
16 - 3xRTT 
17 - HSPA+64QAM 
18 - HSPA+MIMO 
19 - LTE 
21 - IS95A 
22 - IS95B 
23 - CDMA1x 
24 - EVDO rev. 0 
25 - EVDO rev. A 
26 - EVDO rev. B 
27 - Hybrydowa CDMA1x 
28 - Hybrydowa EVDO rev. 0 
29 - Hybrydowa EVDO rev. A 
30 - Hybrydowa EVDO rev. B 
31 - EHRPD rev. 0 
32 - EHRPD rev. A 
33 - EHRPD rev. B 
34 - Hybrydowa EHRPD rev. 0 
35 - Hybrydowa EHRPD rev. A 
36 - Hybrydowa EHRPD rev. B 
41 - WCDMA (UMTS)
42 - HSDPA 
43 - HSUPA 
44 - HSPA 
45 - HSPA+ 
46 - DC-HSPA+ 
61 - TD SCDMA 
62 - TD HSDPA 
63 - TD HSUPA 
64 - TD HSPA 
65 - TD HSPA+ 
81 - 802.16E 
101 - LTE

zawartość skryptu /bin/hilink

#!/bin/sh

CLF='/mnt/btsearch.clf'

# odczyt danych z modemu HILINK bez trybu modemu 
  wget -t 25 -O /tmp/E3372-status http://192.168.8.1/api/monitoring/status > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-plmn http://192.168.8.1/api/net/current-plmn  > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal-para http://192.168.8.1/api/net/signal-para > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal http://192.168.8.1/api/device/signal > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-trafic http://192.168.8.1/api/monitoring/traffic-statistics > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-token http://192.168.8.1/api/webserver/token > /dev/null 2>&1
  token=`cat /tmp/E3372-token | grep token | cut -d '<' -f 2 | cut -d '>' -f 2`
  wget -t 25 -O /tmp/E3372-information "http://192.168.8.1/api/device/information" --header "__RequestVerificationToken: $token" > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-dhcp http://192.168.8.1/api/dhcp/settings > /dev/null 2>&1

#   szukanie danych w pliku z danymi typu HTML
    Status_Polaczenia=`cat /tmp/E3372-status | grep ConnectionStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    RoamingStatus=`cat /tmp/E3372-status | grep RoamingStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSSI=`cat /tmp/E3372-signal | grep rssi | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSCP=`cat /tmp/E3372-signal | grep rscp | cut -d '<' -f 2 | cut -d '>' -f 2`
    ECIO=`cat /tmp/E3372-signal-para | grep Ecio | cut -d '<' -f 2 | cut -d '>' -f 2` 
    SC=`cat /tmp/E3372-signal | grep '<sc' | cut -d '<' -f 2 | cut -d '>' -f 2`
    LAC=`cat /tmp/E3372-signal-para | grep Lac | cut -d '<' -f 2 | cut -d '>' -f 2`
    LCID=`cat /tmp/E3372-signal-para | grep CellID | cut -d '<' -f 2 | cut -d '>' -f 2`
    CID=`cat /tmp/E3372-signal-para | grep CellID | cut -d '<' -f 2 | cut -d '>' -f 2 | cut -c 5-8`
    Typ_Sieci=`cat /tmp/E3372-status | grep CurrentNetworkTypeEx | cut -d '<' -f 2 | cut -d '>' -f 2`
    Adres_IP=`cat /tmp/E3372-status | grep WanIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Primary=`cat /tmp/E3372-status | grep PrimaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Secendary=`cat /tmp/E3372-status | grep SecondaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    Nazwa_Sieci=`cat /tmp/E3372-plmn | grep FullName | cut -d '<' -f 2 | cut -d '>' -f 2`
    ID_Sieci=`cat /tmp/E3372-plmn | grep Numeric | cut -d '<' -f 2 | cut -d '>' -f 2`
    Rat=`cat /tmp/E3372-plmn | grep Rat | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Polaczenia=`cat /tmp/E3372-trafic | grep CurrentConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Calkowity=`cat /tmp/E3372-trafic | grep TotalConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentDownload=`cat /tmp/E3372-trafic | grep 'CurrentDownload>' | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentUpload=`cat /tmp/E3372-trafic | grep 'CurrentUpload>' | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentDownloadRate=`cat /tmp/E3372-trafic | grep CurrentDownloadRate | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentUploadRate=`cat /tmp/E3372-trafic | grep CurrentUploadRate | cut -d '<' -f 2 | cut -d '>' -f 2`
    TotalUpload=`cat /tmp/E3372-trafic | grep TotalUpload | cut -d '<' -f 2 | cut -d '>' -f 2`
    TotalDownload=`cat /tmp/E3372-trafic | grep TotalDownload | cut -d '<' -f 2 | cut -d '>' -f 2`
    DhcpIPAddress=`cat /tmp/E3372-dhcp | grep DhcpIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DhcpLanNetmask=`cat /tmp/E3372-dhcp | grep DhcpLanNetmask | cut -d '<' -f 2 | cut -d '>' -f 2`

#   szukanie danych o modemie
    DeviceName=`cat /tmp/E3372-information | grep DeviceName | cut -d '<' -f 2 | cut -d '>' -f 2`
    Classify=`cat /tmp/E3372-information | grep Classify | cut -d '<' -f 2 | cut -d '>' -f 2`
    ProductFamily=`cat /tmp/E3372-information | grep ProductFamily | cut -d '<' -f 2 | cut -d '>' -f 2`
    SerialNumber=`cat /tmp/E3372-information | grep SerialNumber | cut -d '<' -f 2 | cut -d '>' -f 2`
    Imei=`cat /tmp/E3372-information | grep Imei | cut -d '<' -f 2 | cut -d '>' -f 2`
    Imsi=`cat /tmp/E3372-information | grep Imsi | cut -d '<' -f 2 | cut -d '>' -f 2`
    Iccid=`cat /tmp/E3372-information | grep Iccid | cut -d '<' -f 2 | cut -d '>' -f 2`
    HardwareVersion=`cat /tmp/E3372-information | grep HardwareVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    SoftwareVersion=`cat /tmp/E3372-information | grep SoftwareVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    WebUIVersion=`cat /tmp/E3372-information | grep WebUIVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    MacAddress1=`cat /tmp/E3372-information | grep MacAddress1 | cut -d '<' -f 2 | cut -d '>' -f 2`
    supportmode=`cat /tmp/E3372-information | grep supportmode | cut -d '<' -f 2 | cut -d '>' -f 2`
    workmode=`cat /tmp/E3372-information | grep workmode | cut -d '<' -f 2 | cut -d '>' -f 2`


    DATE=`date "+%F  %H:%M:%S"`
    CSQ=$((ECIO+29))

# Sprawdzanie stanu polaczanienia
      if [ $Status_Polaczenia = 900 ] 
        then 
     Polaczenie="Laczenie"
       elif [ $Status_Polaczenia = 901 ]
       then
     Polaczenie="Polaczony"
       elif [ $Status_Polaczenia = 902 ]
       then
     Polaczenie="Rozlaczony"
       elif [ $Status_Polaczenia = 903 ]
       then
     Polaczenie="Rozlaczanie"
      elif [ $Status_Polaczenia = 25 -o 26 ]
        then
     Polaczenie="BLAD LACZENIA"
      else 
     Polaczenie="Brak danych"
      fi 


# Sprawdzanie typu sieci 
if [ $Typ_Sieci = 0 ]
 then  Siec="brak uslugi"
elif [ $Typ_Sieci = 1 ] 
 then  Siec="GSM"
elif [ $Typ_Sieci = 2 ] 
 then  Siec="GPRS"
elif [ $Typ_Sieci = 3 ] 
 then  Siec="EDGE"
elif [ $Typ_Sieci = 4 ] 
 then  Siec="WCDMA"
elif [ $Typ_Sieci = 5 ] 
 then  Siec="HSDPA"
elif [ $Typ_Sieci = 6 ] 
 then  Siec="HSUPA"
elif [ $Typ_Sieci = 7 ] 
 then  Siec="HSPA"
elif [ $Typ_Sieci = 8 ] 
 then  Siec="TDSCDMA"
elif [ $Typ_Sieci = 9 ] 
 then  Siec="HSPA+"
elif [ $Typ_Sieci = 10 ] 
 then  Siec="EVDO rev. 0"
elif [ $Typ_Sieci = 11 ] 
 then  Siec="EVDO rev. A"
elif [ $Typ_Sieci = 12 ] 
 then  Siec="EVDO rev. B"
elif [ $Typ_Sieci = 13 ] 
 then  Siec="1xRTT"
elif [ $Typ_Sieci = 14 ] 
 then  Siec="UMB"
elif [ $Typ_Sieci = 15 ] 
 then  Siec="1xEVDV"
elif [ $Typ_Sieci = 16 ] 
 then  Siec="3xRTT"
elif [ $Typ_Sieci = 17 ] 
 then  Siec="HSPA+64QAM"
elif [ $Typ_Sieci = 18 ] 
 then  Siec="HSPA+MIMO"
elif [ $Typ_Sieci = 19 ] 
 then  Siec="LTE"
elif [ $Typ_Sieci = 21 ] 
 then  Siec="IS95A"
elif [ $Typ_Sieci = 22 ] 
 then  Siec="IS95B"
elif [ $Typ_Sieci = 23 ] 
 then  Siec="CDMA1x"
elif [ $Typ_Sieci = 24 ] 
 then  Siec="EVDO rev. 0"
elif [ $Typ_Sieci = 25 ] 
 then  Siec="EVDO rev. A"
elif [ $Typ_Sieci = 26 ] 
 then  Siec="EVDO rev. B"
elif [ $Typ_Sieci = 27 ] 
 then  Siec="Hybrydowa CDMA1x"
elif [ $Typ_Sieci = 28 ] 
 then  Siec="Hybrydowa EVDO rev. 0"
elif [ $Typ_Sieci = 29 ] 
 then  Siec="Hybrydowa EVDO rev. A"
elif [ $Typ_Sieci = 30 ] 
 then  Siec="Hybrydowa EVDO rev. B"
elif [ $Typ_Sieci = 31 ] 
 then  Siec="EHRPD rev. 0"
elif [ $Typ_Sieci = 32 ] 
 then  Siec="EHRPD rev. A"
elif [ $Typ_Sieci = 33 ] 
 then  Siec="EHRPD rev. B"
elif [ $Typ_Sieci = 34 ] 
 then  Siec="Hybrydowa EHRPD rev. 0"
elif [ $Typ_Sieci = 35 ] 
 then  Siec="Hybrydowa EHRPD rev. A"
elif [ $Typ_Sieci = 36 ] 
 then  Siec="Hybrydowa EHRPD rev. B"
elif [ $Typ_Sieci = 41 ] 
 then  Siec="WCDMA (UMTS)"
elif [ $Typ_Sieci = 42 ] 
 then  Siec="HSDPA"
elif [ $Typ_Sieci = 43 ] 
 then  Siec="HSUPA"
elif [ $Typ_Sieci = 44 ] 
 then  Siec="HSPA"
elif [ $Typ_Sieci = 45 ] 
 then  Siec="HSPA+"
elif [ $Typ_Sieci = 46 ] 
 then  Siec="DC-HSPA+"
elif [ $Typ_Sieci = 61 ] 
 then  Siec="TD SCDMA"
elif [ $Typ_Sieci = 62 ] 
 then  Siec="TD HSDPA"
elif [ $Typ_Sieci = 63 ] 
 then  Siec="TD HSUPA"
elif [ $Typ_Sieci = 64 ] 
 then  Siec="TD HSPA"
elif [ $Typ_Sieci = 65 ] 
 then  Siec="TD HSPA+"
elif [ $Typ_Sieci = 81 ] 
 then  Siec="802.16E"
elif [ $Typ_Sieci = 101 ] 
 then  Siec="LTE"
else Siec="BRAK DANYCH"
fi

# sprawdzenie 'Rat' sieci

      if [ $Rat = 0 ]
         then
        RatSiec="2G"
      elif [ $Rat = 2 ]
         then
          RatSiec="3G"
      elif [ $Rat = 5 ]
        then
          RatSiec="3G+"
      elif [ $Rat = 7 ]
        then
          RatSiec="4G"
      else
          RatSiec="BRAK DANYCH"
      fi

# sprawdzanie nazwy sieci
       if [ $Nazwa_Sieci = "PLAY" ]
        then
           Nazwa_Sieci="PLUS ROAMING"
       else
           Nazwa_Sieci=$Nazwa_Sieci
        fi     

#  Liczenie czasu polaczenia 
           if [ $Czas_Polaczenia -ge 3600 ]
              then
            Czas_PH=$((Czas_Polaczenia/3600));
            Czas_PM=$(((Czas_Polaczenia-$Czas_PH*3600)/60));
            Czas_PS=$((Czas_Polaczenia-($Czas_PH*3600)-(Czas_PM*60)))           

            elif [ $Czas_Polaczenia -ge 600 ]
             then
            Czas_PH="00"
            Czas_PM=$((Czas_Polaczenia/60));
            Czas_PS=$((Czas_Polaczenia-$Czas_PM*60)); 
            
             elif [ $Czas_Polaczenia -ge 60 ]
              then 
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
            
             else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
             fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_PS -lt 1 ]
                  then
                Czas_PS="00"
            elif [ $Czas_PS -lt 10 ]
                  then
                Czas_PS="0"$Czas_PS
             fi
                                                                                 
            if [ $Czas_PM -lt 1 ]
                  then
                Czas_PM="00"
            elif [ $Czas_PM -lt 10 ]
                  then
                Czas_PM="0"$Czas_PM
             fi

            if [ $Czas_PH -lt 1 ]
                  then
               Czas_PH="00"
            elif [ $Czas_PH -lt 10 ]
                  then
            Czas_PH="0"$Czas_PH
              fi
                                                               
                                      
#  Liczenie czasu calkowitego polaczenia
             if [ $Czas_Calkowity -ge 3600 ]
                    then
             Czas_CH=$((Czas_Calkowity/3600))
             Czas_CM=$(((Czas_Calkowity-$Czas_CH*3600)/60))
             Czas_CS=$((Czas_Calkowity-($Czas_CH*3600)-(Czas_CM*60)))
           
             elif [ $Czas_Calkowity -ge 600 ]
                    then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
          
             elif [ $Czas_Calkowity -ge 60 ]
           
                   then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
  
              else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))

              fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_CS -lt 1 ]
                  then
               Czas_CS="00"
            elif [ $Czas_CS -lt 10 ]
                  then
               Czas_CS="0"$Czas_CS
             fi
                           
             if [ $Czas_CM -lt 1 ]
                   then
               Czas_CM="00"
             elif [ $Czas_CM -lt 10 ]
                   then
               Czas_CM="0"$Czas_CM
             fi
                                                                                                                                                                                                                         
            if [ $Czas_CH -lt 1 ]
                 then
             Czas_CH=" 00"
           
             elif [ $Czas_CH -lt 10 ]
                 then
             Czas_CH=" 0"$Czas_CH
           
             elif [ $Czas_CH -lt 100 ]
                 then
             Czas_CH=$Czas_CH
            fi

# konwersja hex na dec
            
LACd=$((0x$LAC))
LCIDd=$((0x$LCID))
CIDd=$((0x$CID))
CSQp=$(($CSQ*100/31))

# BTS Info

if [ -e "$CLF" ]; then
                PAT="$ID_Sieci;$CIDd;$LACd;"
                BTSINFOPOS="$(cat "$CLF" | awk -F";" '/'$PAT'/ {printf $5","$6" - "$8}')"
fi

            
# przygotowanie wysietlenia danych o polaczeniu GSM  
     
    (echo "===========================================") 
    (echo "           $DATE")
    (echo "-------------------------------------------")
    (echo "       MODEM HUAWEI $DeviceName $Classify $ProductFamily     ")
    (echo "-------------------------------------------")
    (echo "SN                :  $SerialNumber")
    (echo "IMEI              :  $Imei")
    (echo "IMSI              :  $Imsi")
    (echo "ICCID             :  $Iccid")
    (echo "Wersja Hardware   :  $HardwareVersion")
    (echo "Wersja Software   :  $SoftwareVersion")
    (echo "Wersja WebUI      :  $WebUIVersion")
    (echo "Mac Address       :  $MacAddress1")
    (echo "Obslugiwane sieci :  $supportmode")
    (echo "Aktualna siec     :  $workmode")
    (echo "-------------------------------------------")
    (echo "Stan lacza z BTS  :  $Polaczenie")
    (echo "Nazwa sieci       :  $Nazwa_Sieci")
    (echo "ID sieci          :  $ID_Sieci")
    (echo "Siec operatora    :  $RatSiec")
    (echo "Roaming           :  $RoamingStatus")
    (echo "Sila sygnalu RSSI :  $RSSI")
    (echo "Sila sygnalu RSCP :  $RSCP")
    (echo "Ec/Io             :  $ECIO dBm")
    (echo "CSQ               :  $CSQ ($CSQp %)")
    (echo "SC                :  $SC")
    (echo "LAC               :  $LACd")
    (echo "LCID (CID)        :  $LCIDd ($CIDd)")
    (echo "Czas polaczenia   :  $Czas_PH:$Czas_PM:$Czas_PS")
    (echo "Czas calkowity    :  $Czas_CH:$Czas_CM:$Czas_CS")
    (echo "Typ sieci         :  $Siec")
    (echo "Adres IP LAN      :  $DhcpIPAddress")
    (echo "Maska LAN         :  $DhcpLanNetmask")
    (echo "Adres IP WAN      :  $Adres_IP")
    (echo "DNS podstawowy    :  $DNS_Primary")
    (echo "DNS rezerwowy     :  $DNS_Secendary")
    (echo "Pobrano w sesji   :  $(($CurrentDownload/1048576)) MB")
    (echo "Wyslano w sesji   :  $(($CurrentUpload/1048576)) MB")
    (echo "Total pobrano     :  $(($TotalDownload/1048576)) MB")
    (echo "Total wyslano     :  $(($TotalUpload/1048576)) MB")
    (echo "Predkosc Download :  $(($CurrentDownloadRate/1000)) kbit/s")
    (echo "Predkosc Upload   :  $(($CurrentUploadRate/1000)) kbit/s")
    (echo "-------------------------------------------")
    (echo "BTS pozycja GPS   :  $BTSINFOPOS")
    (echo "===========================================")

# ostania korekta  31.01.2015
# Koniec skryptu
#

zawartość skryptu /usr/share/3ginfo/cgi-bin/hilink.sh

#!/bin/sh

CLF='/mnt/btsearch.clf'

# odczyt danych z modemu HILINK bez trybu modemu 
  wget -t 25 -O /tmp/E3372-status http://192.168.8.1/api/monitoring/status > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-plmn http://192.168.8.1/api/net/current-plmn  > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal-para http://192.168.8.1/api/net/signal-para > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal http://192.168.8.1/api/device/signal > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-trafic http://192.168.8.1/api/monitoring/traffic-statistics > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-token http://192.168.8.1/api/webserver/token > /dev/null 2>&1
  token=`cat /tmp/E3372-token | grep token | cut -d '<' -f 2 | cut -d '>' -f 2`
  wget -t 25 -O /tmp/E3372-information "http://192.168.8.1/api/device/information" --header "__RequestVerificationToken: $token" > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-dhcp http://192.168.8.1/api/dhcp/settings > /dev/null 2>&1

#   szukanie danych w pliku z danymi typu HTML
    Status_Polaczenia=`cat /tmp/E3372-status | grep ConnectionStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    RoamingStatus=`cat /tmp/E3372-status | grep RoamingStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSSI=`cat /tmp/E3372-signal | grep rssi | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSCP=`cat /tmp/E3372-signal | grep rscp | cut -d '<' -f 2 | cut -d '>' -f 2`
    ECIO=`cat /tmp/E3372-signal-para | grep Ecio | cut -d '<' -f 2 | cut -d '>' -f 2` 
    SC=`cat /tmp/E3372-signal | grep '<sc' | cut -d '<' -f 2 | cut -d '>' -f 2`
    LAC=`cat /tmp/E3372-signal-para | grep Lac | cut -d '<' -f 2 | cut -d '>' -f 2`
    LCID=`cat /tmp/E3372-signal-para | grep CellID | cut -d '<' -f 2 | cut -d '>' -f 2`
    CID=`cat /tmp/E3372-signal-para | grep CellID | cut -d '<' -f 2 | cut -d '>' -f 2 | cut -c 5-8`
    Typ_Sieci=`cat /tmp/E3372-status | grep CurrentNetworkTypeEx | cut -d '<' -f 2 | cut -d '>' -f 2`
    Adres_IP=`cat /tmp/E3372-status | grep WanIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Primary=`cat /tmp/E3372-status | grep PrimaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Secendary=`cat /tmp/E3372-status | grep SecondaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    Nazwa_Sieci=`cat /tmp/E3372-plmn | grep FullName | cut -d '<' -f 2 | cut -d '>' -f 2`
    ID_Sieci=`cat /tmp/E3372-plmn | grep Numeric | cut -d '<' -f 2 | cut -d '>' -f 2`
    Rat=`cat /tmp/E3372-plmn | grep Rat | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Polaczenia=`cat /tmp/E3372-trafic | grep CurrentConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Calkowity=`cat /tmp/E3372-trafic | grep TotalConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentDownload=`cat /tmp/E3372-trafic | grep 'CurrentDownload>' | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentUpload=`cat /tmp/E3372-trafic | grep 'CurrentUpload>' | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentDownloadRate=`cat /tmp/E3372-trafic | grep CurrentDownloadRate | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentUploadRate=`cat /tmp/E3372-trafic | grep CurrentUploadRate | cut -d '<' -f 2 | cut -d '>' -f 2`
    TotalUpload=`cat /tmp/E3372-trafic | grep TotalUpload | cut -d '<' -f 2 | cut -d '>' -f 2`
    TotalDownload=`cat /tmp/E3372-trafic | grep TotalDownload | cut -d '<' -f 2 | cut -d '>' -f 2`
    DhcpIPAddress=`cat /tmp/E3372-dhcp | grep DhcpIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DhcpLanNetmask=`cat /tmp/E3372-dhcp | grep DhcpLanNetmask | cut -d '<' -f 2 | cut -d '>' -f 2`

#   szukanie danych o modemie
    DeviceName=`cat /tmp/E3372-information | grep DeviceName | cut -d '<' -f 2 | cut -d '>' -f 2`
    Classify=`cat /tmp/E3372-information | grep Classify | cut -d '<' -f 2 | cut -d '>' -f 2`
    ProductFamily=`cat /tmp/E3372-information | grep ProductFamily | cut -d '<' -f 2 | cut -d '>' -f 2`
    SerialNumber=`cat /tmp/E3372-information | grep SerialNumber | cut -d '<' -f 2 | cut -d '>' -f 2`
    Imei=`cat /tmp/E3372-information | grep Imei | cut -d '<' -f 2 | cut -d '>' -f 2`
    Imsi=`cat /tmp/E3372-information | grep Imsi | cut -d '<' -f 2 | cut -d '>' -f 2`
    Iccid=`cat /tmp/E3372-information | grep Iccid | cut -d '<' -f 2 | cut -d '>' -f 2`
    HardwareVersion=`cat /tmp/E3372-information | grep HardwareVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    SoftwareVersion=`cat /tmp/E3372-information | grep SoftwareVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    WebUIVersion=`cat /tmp/E3372-information | grep WebUIVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    MacAddress1=`cat /tmp/E3372-information | grep MacAddress1 | cut -d '<' -f 2 | cut -d '>' -f 2`
    supportmode=`cat /tmp/E3372-information | grep supportmode | cut -d '<' -f 2 | cut -d '>' -f 2`
    workmode=`cat /tmp/E3372-information | grep workmode | cut -d '<' -f 2 | cut -d '>' -f 2`


    DATE=`date "+%F  %H:%M:%S"`
    CSQ=$((ECIO+29))

# Sprawdzanie stanu polaczanienia
      if [ $Status_Polaczenia = 900 ] 
        then 
     Polaczenie="Laczenie"
       elif [ $Status_Polaczenia = 901 ]
       then
     Polaczenie="Polaczony"
       elif [ $Status_Polaczenia = 902 ]
       then
     Polaczenie="Rozlaczony"
       elif [ $Status_Polaczenia = 903 ]
       then
     Polaczenie="Rozlaczanie"
      elif [ $Status_Polaczenia = 25 -o 26 ]
        then
     Polaczenie="BLAD LACZENIA"
      else 
     Polaczenie="Brak danych"
      fi 

# Sprawdzanie typu sieci 
if [ $Typ_Sieci = 0 ]
 then  Siec="brak uslugi"
elif [ $Typ_Sieci = 1 ] 
 then  Siec="GSM"
elif [ $Typ_Sieci = 2 ] 
 then  Siec="GPRS"
elif [ $Typ_Sieci = 3 ] 
 then  Siec="EDGE"
elif [ $Typ_Sieci = 4 ] 
 then  Siec="WCDMA"
elif [ $Typ_Sieci = 5 ] 
 then  Siec="HSDPA"
elif [ $Typ_Sieci = 6 ] 
 then  Siec="HSUPA"
elif [ $Typ_Sieci = 7 ] 
 then  Siec="HSPA"
elif [ $Typ_Sieci = 8 ] 
 then  Siec="TDSCDMA"
elif [ $Typ_Sieci = 9 ] 
 then  Siec="HSPA+"
elif [ $Typ_Sieci = 10 ] 
 then  Siec="EVDO rev. 0"
elif [ $Typ_Sieci = 11 ] 
 then  Siec="EVDO rev. A"
elif [ $Typ_Sieci = 12 ] 
 then  Siec="EVDO rev. B"
elif [ $Typ_Sieci = 13 ] 
 then  Siec="1xRTT"
elif [ $Typ_Sieci = 14 ] 
 then  Siec="UMB"
elif [ $Typ_Sieci = 15 ] 
 then  Siec="1xEVDV"
elif [ $Typ_Sieci = 16 ] 
 then  Siec="3xRTT"
elif [ $Typ_Sieci = 17 ] 
 then  Siec="HSPA+64QAM"
elif [ $Typ_Sieci = 18 ] 
 then  Siec="HSPA+MIMO"
elif [ $Typ_Sieci = 19 ] 
 then  Siec="LTE"
elif [ $Typ_Sieci = 21 ] 
 then  Siec="IS95A"
elif [ $Typ_Sieci = 22 ] 
 then  Siec="IS95B"
elif [ $Typ_Sieci = 23 ] 
 then  Siec="CDMA1x"
elif [ $Typ_Sieci = 24 ] 
 then  Siec="EVDO rev. 0"
elif [ $Typ_Sieci = 25 ] 
 then  Siec="EVDO rev. A"
elif [ $Typ_Sieci = 26 ] 
 then  Siec="EVDO rev. B"
elif [ $Typ_Sieci = 27 ] 
 then  Siec="Hybrydowa CDMA1x"
elif [ $Typ_Sieci = 28 ] 
 then  Siec="Hybrydowa EVDO rev. 0"
elif [ $Typ_Sieci = 29 ] 
 then  Siec="Hybrydowa EVDO rev. A"
elif [ $Typ_Sieci = 30 ] 
 then  Siec="Hybrydowa EVDO rev. B"
elif [ $Typ_Sieci = 31 ] 
 then  Siec="EHRPD rev. 0"
elif [ $Typ_Sieci = 32 ] 
 then  Siec="EHRPD rev. A"
elif [ $Typ_Sieci = 33 ] 
 then  Siec="EHRPD rev. B"
elif [ $Typ_Sieci = 34 ] 
 then  Siec="Hybrydowa EHRPD rev. 0"
elif [ $Typ_Sieci = 35 ] 
 then  Siec="Hybrydowa EHRPD rev. A"
elif [ $Typ_Sieci = 36 ] 
 then  Siec="Hybrydowa EHRPD rev. B"
elif [ $Typ_Sieci = 41 ] 
 then  Siec="WCDMA (UMTS)"
elif [ $Typ_Sieci = 42 ] 
 then  Siec="HSDPA"
elif [ $Typ_Sieci = 43 ] 
 then  Siec="HSUPA"
elif [ $Typ_Sieci = 44 ] 
 then  Siec="HSPA"
elif [ $Typ_Sieci = 45 ] 
 then  Siec="HSPA+"
elif [ $Typ_Sieci = 46 ] 
 then  Siec="DC-HSPA+"
elif [ $Typ_Sieci = 61 ] 
 then  Siec="TD SCDMA"
elif [ $Typ_Sieci = 62 ] 
 then  Siec="TD HSDPA"
elif [ $Typ_Sieci = 63 ] 
 then  Siec="TD HSUPA"
elif [ $Typ_Sieci = 64 ] 
 then  Siec="TD HSPA"
elif [ $Typ_Sieci = 65 ] 
 then  Siec="TD HSPA+"
elif [ $Typ_Sieci = 81 ] 
 then  Siec="802.16E"
elif [ $Typ_Sieci = 101 ] 
 then  Siec="LTE"
else Siec="BRAK DANYCH"
fi

# sprawdzenie 'Rat' sieci

      if [ $Rat = 0 ]
         then
        RatSiec="2G"
      elif [ $Rat = 2 ]
         then
          RatSiec="3G"
      elif [ $Rat = 5 ]
        then
          RatSiec="3G+"
      elif [ $Rat = 7 ]
        then
          RatSiec="4G"
      else
          RatSiec="BRAK DANYCH"
      fi

# sprawdzanie nazwy sieci
       if [ $Nazwa_Sieci = "PLAY" ]
        then
           Nazwa_Sieci="PLUS ROAMING"
       else
           Nazwa_Sieci=$Nazwa_Sieci
        fi     

#  Liczenie czasu polaczenia 
           if [ $Czas_Polaczenia -ge 3600 ]
              then
            Czas_PH=$((Czas_Polaczenia/3600));
            Czas_PM=$(((Czas_Polaczenia-$Czas_PH*3600)/60));
            Czas_PS=$((Czas_Polaczenia-($Czas_PH*3600)-(Czas_PM*60)))           

            elif [ $Czas_Polaczenia -ge 600 ]
             then
            Czas_PH="00"
            Czas_PM=$((Czas_Polaczenia/60));
            Czas_PS=$((Czas_Polaczenia-$Czas_PM*60)); 
            
             elif [ $Czas_Polaczenia -ge 60 ]
              then 
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
            
             else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
             fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_PS -lt 1 ]
                  then
                Czas_PS="00"
            elif [ $Czas_PS -lt 10 ]
                  then
                Czas_PS="0"$Czas_PS
             fi
                                                                                 
            if [ $Czas_PM -lt 1 ]
                  then
                Czas_PM="00"
            elif [ $Czas_PM -lt 10 ]
                  then
                Czas_PM="0"$Czas_PM
             fi

            if [ $Czas_PH -lt 1 ]
                  then
               Czas_PH="00"
            elif [ $Czas_PH -lt 10 ]
                  then
            Czas_PH="0"$Czas_PH
              fi
                                                               
                                      
#  Liczenie czasu calkowitego polaczenia
             if [ $Czas_Calkowity -ge 3600 ]
                    then
             Czas_CH=$((Czas_Calkowity/3600))
             Czas_CM=$(((Czas_Calkowity-$Czas_CH*3600)/60))
             Czas_CS=$((Czas_Calkowity-($Czas_CH*3600)-(Czas_CM*60)))
           
             elif [ $Czas_Calkowity -ge 600 ]
                    then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
          
             elif [ $Czas_Calkowity -ge 60 ]
           
                   then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
  
              else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))

              fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_CS -lt 1 ]
                  then
               Czas_CS="00"
            elif [ $Czas_CS -lt 10 ]
                  then
               Czas_CS="0"$Czas_CS
             fi
                           
             if [ $Czas_CM -lt 1 ]
                   then
               Czas_CM="00"
             elif [ $Czas_CM -lt 10 ]
                   then
               Czas_CM="0"$Czas_CM
             fi
                                                                                                                                                                                                                         
            if [ $Czas_CH -lt 1 ]
                 then
             Czas_CH=" 00"
           
             elif [ $Czas_CH -lt 10 ]
                 then
             Czas_CH=" 0"$Czas_CH
           
             elif [ $Czas_CH -lt 100 ]
                 then
             Czas_CH=$Czas_CH
            fi

# konwersja hex na dec
            
LACd=$((0x$LAC))
LCIDd=$((0x$LCID))
CIDd=$((0x$CID))
CSQp=$(($CSQ*100/31))

# BTS Info

if [ -e "$CLF" ]; then
                PAT="$ID_Sieci;$CIDd;$LACd;"
                BTSINFOPOS="$(cat "$CLF" | awk -F";" '/'$PAT'/ {printf $5","$6" - "$8}')"
fi

            
# przygotowanie wysietlenia danych o polaczeniu GSM  
echo -e "Content-type: text/html\n\n"     
    (echo "================================================================<br>") 
    (echo "           $DATE <br>")
    (echo "-------------------------------------------<br>")
    (echo "       MODEM HUAWEI $DeviceName $Classify $ProductFamily     <br>")
    (echo "-------------------------------------------<br>")
    (echo "SN                :  $SerialNumber <br>")
    (echo "IMEI              :  $Imei <br>")
    (echo "IMSI              :  $Imsi <br>")
    (echo "ICCID             :  $Iccid <br>")
    (echo "Wersja Hardware   :  $HardwareVersion <br>")
    (echo "Wersja Software   :  $SoftwareVersion <br>")
    (echo "Wersja WebUI      :  $WebUIVersion <br>")
    (echo "Mac Address       :  $MacAddress1 <br>")
    (echo "Obslugiwane sieci :  $supportmode <br>")
    (echo "Aktualna siec     :  $workmode <br>")
    (echo "-------------------------------------------<br>")
    (echo "Stan lacza z BTS  :  $Polaczenie <br>")
    (echo "Nazwa sieci       :  $Nazwa_Sieci <br>")
    (echo "ID sieci          :  $ID_Sieci <br>")
    (echo "Siec operatora    :  $RatSiec <br>")
    (echo "Roaming           :  $RoamingStatus <br>")
    (echo "Sila sygnalu RSSI :  $RSSI <br>")
    (echo "Sila sygnalu RSCP :  $RSCP <br>")
    (echo "Ec/Io             :  $ECIO dBm <br>")
    (echo "CSQ               :  $CSQ ($CSQp %) <br>")
    (echo "SC                :  $SC <br>")
    (echo "LAC               :  $LACd <br>")
    (echo "LCID (CID)        :  $LCIDd ($CIDd) <br>")
    (echo "Czas polaczenia   :  $Czas_PH:$Czas_PM:$Czas_PS <br>")
    (echo "Czas calkowity    :  $Czas_CH:$Czas_CM:$Czas_CS <br>")
    (echo "Typ sieci         :  $Siec <br>")
    (echo "Adres IP LAN      :  $DhcpIPAddress <br>")
    (echo "Maska LAN         :  $DhcpLanNetmask <br>")
    (echo "Adres IP WAN      :  $Adres_IP <br>")
    (echo "DNS podstawowy    :  $DNS_Primary <br>")
    (echo "DNS rezerwowy     :  $DNS_Secendary <br>")
    (echo "Pobrano w sesji   :  $(($CurrentDownload/1048576)) MB <br>")
    (echo "Wyslano w sesji   :  $(($CurrentUpload/1048576)) MB <br>")
    (echo "Total pobrano     :  $(($TotalDownload/1048576)) MB <br>")
    (echo "Total wyslano     :  $(($TotalUpload/1048576)) MB <br>")
    (echo "Predkosc Download :  $(($CurrentDownloadRate/1000)) kbit/s <br>")
    (echo "Predkosc Upload   :  $(($CurrentUploadRate/1000)) kbit/s <br>")
    (echo "-------------------------------------------<br>")
    (echo "BTS pozycja GPS   :  $BTSINFOPOS <br>")
    (echo "================================================================<br>")

# ostania korekta  31.01.2015
# Koniec skryptu
#

Pozdr,

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

49 (edytowany przez Payti 2015-03-30 22:14:47)

Odp: mwan3 - łącza backupowe konfiguracja

Aktualizacja skryptów v2.3 - dodane poprawki dla sieci LTE

Zawartość skryptu /bin/hilink dla zainteresowanych

#!/bin/sh

CLF='/mnt/btsearch.clf'

# odczyt danych z modemu HILINK bez trybu modemu 
  wget -t 25 -O /tmp/E3372-status http://192.168.8.1/api/monitoring/status > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-plmn http://192.168.8.1/api/net/current-plmn  > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal-para http://192.168.8.1/api/net/signal-para > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal http://192.168.8.1/api/device/signal > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-trafic http://192.168.8.1/api/monitoring/traffic-statistics > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-token http://192.168.8.1/api/webserver/token > /dev/null 2>&1
  token=`cat /tmp/E3372-token | grep token | cut -d '<' -f 2 | cut -d '>' -f 2`
  wget -t 25 -O /tmp/E3372-information "http://192.168.8.1/api/device/information" --header "__RequestVerificationToken: $token" > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-dhcp http://192.168.8.1/api/dhcp/settings > /dev/null 2>&1

#   szukanie danych w pliku z danymi typu HTML
    Status_Polaczenia=`cat /tmp/E3372-status | grep ConnectionStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    RoamingStatus=`cat /tmp/E3372-status | grep RoamingStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSSI=`cat /tmp/E3372-signal | grep rssi | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSCP=`cat /tmp/E3372-signal | grep rscp | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSRP=`cat /tmp/E3372-signal | grep rsrp | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSRQ=`cat /tmp/E3372-signal | grep rsrq | cut -d '<' -f 2 | cut -d '>' -f 2 | cut -d 'd' -f 1`
    ECIO=`cat /tmp/E3372-signal-para | grep Ecio | cut -d '<' -f 2 | cut -d '>' -f 2` 
    SC=`cat /tmp/E3372-signal | grep '<sc' | cut -d '<' -f 2 | cut -d '>' -f 2`
    LAC=`cat /tmp/E3372-signal-para | grep Lac | cut -d '<' -f 2 | cut -d '>' -f 2`
    LCID=`cat /tmp/E3372-signal-para | grep CellID | cut -d '<' -f 2 | cut -d '>' -f 2`
    CID=`cat /tmp/E3372-signal-para | grep CellID | cut -d '<' -f 2 | cut -d '>' -f 2 | cut -c 5-8`
    Typ_Sieci=`cat /tmp/E3372-status | grep CurrentNetworkTypeEx | cut -d '<' -f 2 | cut -d '>' -f 2`
    Adres_IP=`cat /tmp/E3372-status | grep WanIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Primary=`cat /tmp/E3372-status | grep PrimaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Secendary=`cat /tmp/E3372-status | grep SecondaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    Nazwa_Sieci=`cat /tmp/E3372-plmn | grep FullName | cut -d '<' -f 2 | cut -d '>' -f 2`
    ID_Sieci=`cat /tmp/E3372-plmn | grep Numeric | cut -d '<' -f 2 | cut -d '>' -f 2`
    Rat=`cat /tmp/E3372-plmn | grep Rat | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Polaczenia=`cat /tmp/E3372-trafic | grep CurrentConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Calkowity=`cat /tmp/E3372-trafic | grep TotalConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentDownload=`cat /tmp/E3372-trafic | grep 'CurrentDownload>' | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentUpload=`cat /tmp/E3372-trafic | grep 'CurrentUpload>' | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentDownloadRate=`cat /tmp/E3372-trafic | grep CurrentDownloadRate | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentUploadRate=`cat /tmp/E3372-trafic | grep CurrentUploadRate | cut -d '<' -f 2 | cut -d '>' -f 2`
    TotalUpload=`cat /tmp/E3372-trafic | grep TotalUpload | cut -d '<' -f 2 | cut -d '>' -f 2`
    TotalDownload=`cat /tmp/E3372-trafic | grep TotalDownload | cut -d '<' -f 2 | cut -d '>' -f 2`
    DhcpIPAddress=`cat /tmp/E3372-dhcp | grep DhcpIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DhcpLanNetmask=`cat /tmp/E3372-dhcp | grep DhcpLanNetmask | cut -d '<' -f 2 | cut -d '>' -f 2`

#   szukanie danych o modemie
    DeviceName=`cat /tmp/E3372-information | grep DeviceName | cut -d '<' -f 2 | cut -d '>' -f 2`
    Classify=`cat /tmp/E3372-information | grep Classify | cut -d '<' -f 2 | cut -d '>' -f 2`
    ProductFamily=`cat /tmp/E3372-information | grep ProductFamily | cut -d '<' -f 2 | cut -d '>' -f 2`
    SerialNumber=`cat /tmp/E3372-information | grep SerialNumber | cut -d '<' -f 2 | cut -d '>' -f 2`
    Imei=`cat /tmp/E3372-information | grep Imei | cut -d '<' -f 2 | cut -d '>' -f 2`
    Imsi=`cat /tmp/E3372-information | grep Imsi | cut -d '<' -f 2 | cut -d '>' -f 2`
    Iccid=`cat /tmp/E3372-information | grep Iccid | cut -d '<' -f 2 | cut -d '>' -f 2`
    HardwareVersion=`cat /tmp/E3372-information | grep HardwareVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    SoftwareVersion=`cat /tmp/E3372-information | grep SoftwareVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    WebUIVersion=`cat /tmp/E3372-information | grep WebUIVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    MacAddress1=`cat /tmp/E3372-information | grep MacAddress1 | cut -d '<' -f 2 | cut -d '>' -f 2`
    supportmode=`cat /tmp/E3372-information | grep supportmode | cut -d '<' -f 2 | cut -d '>' -f 2`
    workmode=`cat /tmp/E3372-information | grep workmode | cut -d '<' -f 2 | cut -d '>' -f 2`


    DATE=`date "+%F  %H:%M:%S"`
    CSQ=$((ECIO+29))

# Sprawdzenie CSQ dla 4G/LTE

    if [ $CSQ -lt 0 ]
        then CSQ=$((RSRQ+29))
    fi

# Sprawdzanie stanu polaczanienia
      if [ $Status_Polaczenia = 900 ] 
        then 
     Polaczenie="Laczenie"
       elif [ $Status_Polaczenia = 901 ]
       then
     Polaczenie="Polaczony"
       elif [ $Status_Polaczenia = 902 ]
       then
     Polaczenie="Rozlaczony"
       elif [ $Status_Polaczenia = 903 ]
       then
     Polaczenie="Rozlaczanie"
      elif [ $Status_Polaczenia = 25 -o 26 ]
        then
     Polaczenie="BLAD LACZENIA"
      else 
     Polaczenie="Brak danych"
      fi 


# Sprawdzanie typu sieci 
if [ $Typ_Sieci = 0 ]
 then  Siec="brak uslugi"
elif [ $Typ_Sieci = 1 ] 
 then  Siec="GSM"
elif [ $Typ_Sieci = 2 ] 
 then  Siec="GPRS"
elif [ $Typ_Sieci = 3 ] 
 then  Siec="EDGE"
elif [ $Typ_Sieci = 4 ] 
 then  Siec="WCDMA"
elif [ $Typ_Sieci = 5 ] 
 then  Siec="HSDPA"
elif [ $Typ_Sieci = 6 ] 
 then  Siec="HSUPA"
elif [ $Typ_Sieci = 7 ] 
 then  Siec="HSPA"
elif [ $Typ_Sieci = 8 ] 
 then  Siec="TDSCDMA"
elif [ $Typ_Sieci = 9 ] 
 then  Siec="HSPA+"
elif [ $Typ_Sieci = 10 ] 
 then  Siec="EVDO rev. 0"
elif [ $Typ_Sieci = 11 ] 
 then  Siec="EVDO rev. A"
elif [ $Typ_Sieci = 12 ] 
 then  Siec="EVDO rev. B"
elif [ $Typ_Sieci = 13 ] 
 then  Siec="1xRTT"
elif [ $Typ_Sieci = 14 ] 
 then  Siec="UMB"
elif [ $Typ_Sieci = 15 ] 
 then  Siec="1xEVDV"
elif [ $Typ_Sieci = 16 ] 
 then  Siec="3xRTT"
elif [ $Typ_Sieci = 17 ] 
 then  Siec="HSPA+64QAM"
elif [ $Typ_Sieci = 18 ] 
 then  Siec="HSPA+MIMO"
elif [ $Typ_Sieci = 19 ] 
 then  Siec="LTE"
elif [ $Typ_Sieci = 21 ] 
 then  Siec="IS95A"
elif [ $Typ_Sieci = 22 ] 
 then  Siec="IS95B"
elif [ $Typ_Sieci = 23 ] 
 then  Siec="CDMA1x"
elif [ $Typ_Sieci = 24 ] 
 then  Siec="EVDO rev. 0"
elif [ $Typ_Sieci = 25 ] 
 then  Siec="EVDO rev. A"
elif [ $Typ_Sieci = 26 ] 
 then  Siec="EVDO rev. B"
elif [ $Typ_Sieci = 27 ] 
 then  Siec="Hybrydowa CDMA1x"
elif [ $Typ_Sieci = 28 ] 
 then  Siec="Hybrydowa EVDO rev. 0"
elif [ $Typ_Sieci = 29 ] 
 then  Siec="Hybrydowa EVDO rev. A"
elif [ $Typ_Sieci = 30 ] 
 then  Siec="Hybrydowa EVDO rev. B"
elif [ $Typ_Sieci = 31 ] 
 then  Siec="EHRPD rev. 0"
elif [ $Typ_Sieci = 32 ] 
 then  Siec="EHRPD rev. A"
elif [ $Typ_Sieci = 33 ] 
 then  Siec="EHRPD rev. B"
elif [ $Typ_Sieci = 34 ] 
 then  Siec="Hybrydowa EHRPD rev. 0"
elif [ $Typ_Sieci = 35 ] 
 then  Siec="Hybrydowa EHRPD rev. A"
elif [ $Typ_Sieci = 36 ] 
 then  Siec="Hybrydowa EHRPD rev. B"
elif [ $Typ_Sieci = 41 ] 
 then  Siec="WCDMA (UMTS)"
elif [ $Typ_Sieci = 42 ] 
 then  Siec="HSDPA"
elif [ $Typ_Sieci = 43 ] 
 then  Siec="HSUPA"
elif [ $Typ_Sieci = 44 ] 
 then  Siec="HSPA"
elif [ $Typ_Sieci = 45 ] 
 then  Siec="HSPA+"
elif [ $Typ_Sieci = 46 ] 
 then  Siec="DC-HSPA+"
elif [ $Typ_Sieci = 61 ] 
 then  Siec="TD SCDMA"
elif [ $Typ_Sieci = 62 ] 
 then  Siec="TD HSDPA"
elif [ $Typ_Sieci = 63 ] 
 then  Siec="TD HSUPA"
elif [ $Typ_Sieci = 64 ] 
 then  Siec="TD HSPA"
elif [ $Typ_Sieci = 65 ] 
 then  Siec="TD HSPA+"
elif [ $Typ_Sieci = 81 ] 
 then  Siec="802.16E"
elif [ $Typ_Sieci = 101 ] 
 then  Siec="LTE"
else Siec="BRAK DANYCH"
fi

# sprawdzenie 'Rat' sieci

      if [ $Rat = 0 ]
         then
        RatSiec="2G"
      elif [ $Rat = 2 ]
         then
          RatSiec="3G"
      elif [ $Rat = 5 ]
        then
          RatSiec="3G+"
      elif [ $Rat = 7 ]
        then
          RatSiec="4G"
      else
          RatSiec="BRAK DANYCH"
      fi

# sprawdzanie nazwy sieci
#       if [ $Nazwa_Sieci = "PLAY" ]
#        then
#           Nazwa_Sieci="PLUS ROAMING"
#       else
#           Nazwa_Sieci=$Nazwa_Sieci
#        fi     

#  Liczenie czasu polaczenia 
           if [ $Czas_Polaczenia -ge 3600 ]
              then
            Czas_PH=$((Czas_Polaczenia/3600));
            Czas_PM=$(((Czas_Polaczenia-$Czas_PH*3600)/60));
            Czas_PS=$((Czas_Polaczenia-($Czas_PH*3600)-(Czas_PM*60)))           

            elif [ $Czas_Polaczenia -ge 600 ]
             then
            Czas_PH="00"
            Czas_PM=$((Czas_Polaczenia/60));
            Czas_PS=$((Czas_Polaczenia-$Czas_PM*60)); 
            
             elif [ $Czas_Polaczenia -ge 60 ]
              then 
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
            
             else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
             fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_PS -lt 1 ]
                  then
                Czas_PS="00"
            elif [ $Czas_PS -lt 10 ]
                  then
                Czas_PS="0"$Czas_PS
             fi
                                                                                 
            if [ $Czas_PM -lt 1 ]
                  then
                Czas_PM="00"
            elif [ $Czas_PM -lt 10 ]
                  then
                Czas_PM="0"$Czas_PM
             fi

            if [ $Czas_PH -lt 1 ]
                  then
               Czas_PH="00"
            elif [ $Czas_PH -lt 10 ]
                  then
            Czas_PH="0"$Czas_PH
              fi
                                                               
                                      
#  Liczenie czasu calkowitego polaczenia
             if [ $Czas_Calkowity -ge 3600 ]
                    then
             Czas_CH=$((Czas_Calkowity/3600))
             Czas_CM=$(((Czas_Calkowity-$Czas_CH*3600)/60))
             Czas_CS=$((Czas_Calkowity-($Czas_CH*3600)-(Czas_CM*60)))
           
             elif [ $Czas_Calkowity -ge 600 ]
                    then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
          
             elif [ $Czas_Calkowity -ge 60 ]
           
                   then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
  
              else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))

              fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_CS -lt 1 ]
                  then
               Czas_CS="00"
            elif [ $Czas_CS -lt 10 ]
                  then
               Czas_CS="0"$Czas_CS
             fi
                           
             if [ $Czas_CM -lt 1 ]
                   then
               Czas_CM="00"
             elif [ $Czas_CM -lt 10 ]
                   then
               Czas_CM="0"$Czas_CM
             fi
                                                                                                                                                                                                                         
            if [ $Czas_CH -lt 1 ]
                 then
             Czas_CH=" 00"
           
             elif [ $Czas_CH -lt 10 ]
                 then
             Czas_CH=" 0"$Czas_CH
           
             elif [ $Czas_CH -lt 100 ]
                 then
             Czas_CH=$Czas_CH
            fi

# konwersja hex na dec
            
LACd=$((0x$LAC))
LCIDd=$((0x$LCID))
CIDd=$((0x$CID))
CSQp=$(($CSQ*100/31))

# BTS Info

if [ -e "$CLF" ]; then
                PAT="$ID_Sieci;$CIDd;$LACd;"
                BTSINFOPOS="$(cat "$CLF" | awk -F";" '/'$PAT'/ {printf $5","$6" - "$8}')"
fi

            
# przygotowanie wysietlenia danych o polaczeniu GSM  
     
    (echo "===========================================") 
    (echo "           $DATE")
    (echo "-------------------------------------------")
    (echo "       MODEM HUAWEI $DeviceName $Classify $ProductFamily     ")
    (echo "-------------------------------------------")
    (echo "SN                :  $SerialNumber")
    (echo "IMEI              :  $Imei")
    (echo "IMSI              :  $Imsi")
    (echo "ICCID             :  $Iccid")
    (echo "Wersja Hardware   :  $HardwareVersion")
    (echo "Wersja Software   :  $SoftwareVersion")
    (echo "Wersja WebUI      :  $WebUIVersion")
    (echo "Mac Address       :  $MacAddress1")
    (echo "Obslugiwane sieci :  $supportmode")
    (echo "Aktualna siec     :  $workmode")
    (echo "-------------------------------------------")
    (echo "Stan lacza z BTS  :  $Polaczenie")
    (echo "Nazwa sieci       :  $Nazwa_Sieci")
    (echo "ID sieci          :  $ID_Sieci")
    (echo "Siec operatora    :  $RatSiec")
    (echo "Roaming           :  $RoamingStatus")
    (echo "Sila sygnalu RSSI :  $RSSI")
    (echo "Sila sygnalu RSRP :  $RSRP")
    (echo "Sila sygnalu RSRQ :  $RSRQ dB")
    (echo "Sila sygnalu RSCP :  $RSCP")
    (echo "Ec/Io             :  $ECIO dBm")
    (echo "CSQ               :  $CSQ ($CSQp %)")
    (echo "SC                :  $SC")
    (echo "LAC               :  $LACd")
    (echo "LCID (CID)        :  $LCIDd ($CIDd)")
    (echo "Czas polaczenia   :  $Czas_PH:$Czas_PM:$Czas_PS")
    (echo "Czas calkowity    :  $Czas_CH:$Czas_CM:$Czas_CS")
    (echo "Typ sieci         :  $Siec")
    (echo "Adres IP LAN      :  $DhcpIPAddress")
    (echo "Maska LAN         :  $DhcpLanNetmask")
    (echo "Adres IP WAN      :  $Adres_IP")
    (echo "DNS podstawowy    :  $DNS_Primary")
    (echo "DNS rezerwowy     :  $DNS_Secendary")
    (echo "Pobrano w sesji   :  $(($CurrentDownload/1048576)) MB")
    (echo "Wyslano w sesji   :  $(($CurrentUpload/1048576)) MB")
    (echo "Total pobrano     :  $(($TotalDownload/1048576)) MB")
    (echo "Total wyslano     :  $(($TotalUpload/1048576)) MB")
    (echo "Predkosc Download :  $(($CurrentDownloadRate/1000)) kbit/s")
    (echo "Predkosc Upload   :  $(($CurrentUploadRate/1000)) kbit/s")
    (echo "-------------------------------------------")
    (echo "BTS pozycja GPS   :  $BTSINFOPOS")
    (echo "===========================================")

# ostania korekta  31.03.2015
# Koniec skryptu
#

Zawartość skryptu /usr/share/3ginfo/cgi-bin/hilink.sh dla zainteresowanych

#!/bin/sh

CLF='/mnt/btsearch.clf'

# odczyt danych z modemu HILINK bez trybu modemu 
  wget -t 25 -O /tmp/E3372-status http://192.168.8.1/api/monitoring/status > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-plmn http://192.168.8.1/api/net/current-plmn  > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal-para http://192.168.8.1/api/net/signal-para > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal http://192.168.8.1/api/device/signal > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-trafic http://192.168.8.1/api/monitoring/traffic-statistics > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-token http://192.168.8.1/api/webserver/token > /dev/null 2>&1
  token=`cat /tmp/E3372-token | grep token | cut -d '<' -f 2 | cut -d '>' -f 2`
  wget -t 25 -O /tmp/E3372-information "http://192.168.8.1/api/device/information" --header "__RequestVerificationToken: $token" > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-dhcp http://192.168.8.1/api/dhcp/settings > /dev/null 2>&1

#   szukanie danych w pliku z danymi typu HTML
    Status_Polaczenia=`cat /tmp/E3372-status | grep ConnectionStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    RoamingStatus=`cat /tmp/E3372-status | grep RoamingStatus | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSSI=`cat /tmp/E3372-signal | grep rssi | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSCP=`cat /tmp/E3372-signal | grep rscp | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSRP=`cat /tmp/E3372-signal | grep rsrp | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSRQ=`cat /tmp/E3372-signal | grep rsrq | cut -d '<' -f 2 | cut -d '>' -f 2 | cut -d 'd' -f 1`
    ECIO=`cat /tmp/E3372-signal-para | grep Ecio | cut -d '<' -f 2 | cut -d '>' -f 2` 
    SC=`cat /tmp/E3372-signal | grep '<sc' | cut -d '<' -f 2 | cut -d '>' -f 2`
    LAC=`cat /tmp/E3372-signal-para | grep Lac | cut -d '<' -f 2 | cut -d '>' -f 2`
    LCID=`cat /tmp/E3372-signal-para | grep CellID | cut -d '<' -f 2 | cut -d '>' -f 2`
    CID=`cat /tmp/E3372-signal-para | grep CellID | cut -d '<' -f 2 | cut -d '>' -f 2 | cut -c 5-8`
    Typ_Sieci=`cat /tmp/E3372-status | grep CurrentNetworkTypeEx | cut -d '<' -f 2 | cut -d '>' -f 2`
    Adres_IP=`cat /tmp/E3372-status | grep WanIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Primary=`cat /tmp/E3372-status | grep PrimaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    DNS_Secendary=`cat /tmp/E3372-status | grep SecondaryDns | cut -d '<' -f 2 | cut -d '>' -f 2`
    Nazwa_Sieci=`cat /tmp/E3372-plmn | grep FullName | cut -d '<' -f 2 | cut -d '>' -f 2`
    ID_Sieci=`cat /tmp/E3372-plmn | grep Numeric | cut -d '<' -f 2 | cut -d '>' -f 2`
    Rat=`cat /tmp/E3372-plmn | grep Rat | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Polaczenia=`cat /tmp/E3372-trafic | grep CurrentConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    Czas_Calkowity=`cat /tmp/E3372-trafic | grep TotalConnectTime | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentDownload=`cat /tmp/E3372-trafic | grep 'CurrentDownload>' | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentUpload=`cat /tmp/E3372-trafic | grep 'CurrentUpload>' | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentDownloadRate=`cat /tmp/E3372-trafic | grep CurrentDownloadRate | cut -d '<' -f 2 | cut -d '>' -f 2`
    CurrentUploadRate=`cat /tmp/E3372-trafic | grep CurrentUploadRate | cut -d '<' -f 2 | cut -d '>' -f 2`
    TotalUpload=`cat /tmp/E3372-trafic | grep TotalUpload | cut -d '<' -f 2 | cut -d '>' -f 2`
    TotalDownload=`cat /tmp/E3372-trafic | grep TotalDownload | cut -d '<' -f 2 | cut -d '>' -f 2`
    DhcpIPAddress=`cat /tmp/E3372-dhcp | grep DhcpIPAddress | cut -d '<' -f 2 | cut -d '>' -f 2`
    DhcpLanNetmask=`cat /tmp/E3372-dhcp | grep DhcpLanNetmask | cut -d '<' -f 2 | cut -d '>' -f 2`

#   szukanie danych o modemie
    DeviceName=`cat /tmp/E3372-information | grep DeviceName | cut -d '<' -f 2 | cut -d '>' -f 2`
    Classify=`cat /tmp/E3372-information | grep Classify | cut -d '<' -f 2 | cut -d '>' -f 2`
    ProductFamily=`cat /tmp/E3372-information | grep ProductFamily | cut -d '<' -f 2 | cut -d '>' -f 2`
    SerialNumber=`cat /tmp/E3372-information | grep SerialNumber | cut -d '<' -f 2 | cut -d '>' -f 2`
    Imei=`cat /tmp/E3372-information | grep Imei | cut -d '<' -f 2 | cut -d '>' -f 2`
    Imsi=`cat /tmp/E3372-information | grep Imsi | cut -d '<' -f 2 | cut -d '>' -f 2`
    Iccid=`cat /tmp/E3372-information | grep Iccid | cut -d '<' -f 2 | cut -d '>' -f 2`
    HardwareVersion=`cat /tmp/E3372-information | grep HardwareVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    SoftwareVersion=`cat /tmp/E3372-information | grep SoftwareVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    WebUIVersion=`cat /tmp/E3372-information | grep WebUIVersion | cut -d '<' -f 2 | cut -d '>' -f 2`
    MacAddress1=`cat /tmp/E3372-information | grep MacAddress1 | cut -d '<' -f 2 | cut -d '>' -f 2`
    supportmode=`cat /tmp/E3372-information | grep supportmode | cut -d '<' -f 2 | cut -d '>' -f 2`
    workmode=`cat /tmp/E3372-information | grep workmode | cut -d '<' -f 2 | cut -d '>' -f 2`


    DATE=`date "+%F  %H:%M:%S"`
    CSQ=$((ECIO+29))

# Sprawdzenie CSQ dla 4G/LTE

    if [ $CSQ -lt 0 ]
        then CSQ=$((RSRQ+29))
    fi

# Sprawdzanie stanu polaczanienia
      if [ $Status_Polaczenia = 900 ] 
        then 
     Polaczenie="Laczenie"
       elif [ $Status_Polaczenia = 901 ]
       then
     Polaczenie="Polaczony"
       elif [ $Status_Polaczenia = 902 ]
       then
     Polaczenie="Rozlaczony"
       elif [ $Status_Polaczenia = 903 ]
       then
     Polaczenie="Rozlaczanie"
      elif [ $Status_Polaczenia = 25 -o 26 ]
        then
     Polaczenie="BLAD LACZENIA"
      else 
     Polaczenie="Brak danych"
      fi 

# Sprawdzanie typu sieci 
if [ $Typ_Sieci = 0 ]
 then  Siec="brak uslugi"
elif [ $Typ_Sieci = 1 ] 
 then  Siec="GSM"
elif [ $Typ_Sieci = 2 ] 
 then  Siec="GPRS"
elif [ $Typ_Sieci = 3 ] 
 then  Siec="EDGE"
elif [ $Typ_Sieci = 4 ] 
 then  Siec="WCDMA"
elif [ $Typ_Sieci = 5 ] 
 then  Siec="HSDPA"
elif [ $Typ_Sieci = 6 ] 
 then  Siec="HSUPA"
elif [ $Typ_Sieci = 7 ] 
 then  Siec="HSPA"
elif [ $Typ_Sieci = 8 ] 
 then  Siec="TDSCDMA"
elif [ $Typ_Sieci = 9 ] 
 then  Siec="HSPA+"
elif [ $Typ_Sieci = 10 ] 
 then  Siec="EVDO rev. 0"
elif [ $Typ_Sieci = 11 ] 
 then  Siec="EVDO rev. A"
elif [ $Typ_Sieci = 12 ] 
 then  Siec="EVDO rev. B"
elif [ $Typ_Sieci = 13 ] 
 then  Siec="1xRTT"
elif [ $Typ_Sieci = 14 ] 
 then  Siec="UMB"
elif [ $Typ_Sieci = 15 ] 
 then  Siec="1xEVDV"
elif [ $Typ_Sieci = 16 ] 
 then  Siec="3xRTT"
elif [ $Typ_Sieci = 17 ] 
 then  Siec="HSPA+64QAM"
elif [ $Typ_Sieci = 18 ] 
 then  Siec="HSPA+MIMO"
elif [ $Typ_Sieci = 19 ] 
 then  Siec="LTE"
elif [ $Typ_Sieci = 21 ] 
 then  Siec="IS95A"
elif [ $Typ_Sieci = 22 ] 
 then  Siec="IS95B"
elif [ $Typ_Sieci = 23 ] 
 then  Siec="CDMA1x"
elif [ $Typ_Sieci = 24 ] 
 then  Siec="EVDO rev. 0"
elif [ $Typ_Sieci = 25 ] 
 then  Siec="EVDO rev. A"
elif [ $Typ_Sieci = 26 ] 
 then  Siec="EVDO rev. B"
elif [ $Typ_Sieci = 27 ] 
 then  Siec="Hybrydowa CDMA1x"
elif [ $Typ_Sieci = 28 ] 
 then  Siec="Hybrydowa EVDO rev. 0"
elif [ $Typ_Sieci = 29 ] 
 then  Siec="Hybrydowa EVDO rev. A"
elif [ $Typ_Sieci = 30 ] 
 then  Siec="Hybrydowa EVDO rev. B"
elif [ $Typ_Sieci = 31 ] 
 then  Siec="EHRPD rev. 0"
elif [ $Typ_Sieci = 32 ] 
 then  Siec="EHRPD rev. A"
elif [ $Typ_Sieci = 33 ] 
 then  Siec="EHRPD rev. B"
elif [ $Typ_Sieci = 34 ] 
 then  Siec="Hybrydowa EHRPD rev. 0"
elif [ $Typ_Sieci = 35 ] 
 then  Siec="Hybrydowa EHRPD rev. A"
elif [ $Typ_Sieci = 36 ] 
 then  Siec="Hybrydowa EHRPD rev. B"
elif [ $Typ_Sieci = 41 ] 
 then  Siec="WCDMA (UMTS)"
elif [ $Typ_Sieci = 42 ] 
 then  Siec="HSDPA"
elif [ $Typ_Sieci = 43 ] 
 then  Siec="HSUPA"
elif [ $Typ_Sieci = 44 ] 
 then  Siec="HSPA"
elif [ $Typ_Sieci = 45 ] 
 then  Siec="HSPA+"
elif [ $Typ_Sieci = 46 ] 
 then  Siec="DC-HSPA+"
elif [ $Typ_Sieci = 61 ] 
 then  Siec="TD SCDMA"
elif [ $Typ_Sieci = 62 ] 
 then  Siec="TD HSDPA"
elif [ $Typ_Sieci = 63 ] 
 then  Siec="TD HSUPA"
elif [ $Typ_Sieci = 64 ] 
 then  Siec="TD HSPA"
elif [ $Typ_Sieci = 65 ] 
 then  Siec="TD HSPA+"
elif [ $Typ_Sieci = 81 ] 
 then  Siec="802.16E"
elif [ $Typ_Sieci = 101 ] 
 then  Siec="LTE"
else Siec="BRAK DANYCH"
fi

# sprawdzenie 'Rat' sieci

      if [ $Rat = 0 ]
         then
        RatSiec="2G"
      elif [ $Rat = 2 ]
         then
          RatSiec="3G"
      elif [ $Rat = 5 ]
        then
          RatSiec="3G+"
      elif [ $Rat = 7 ]
        then
          RatSiec="4G"
      else
          RatSiec="BRAK DANYCH"
      fi

# sprawdzanie nazwy sieci
#       if [ $Nazwa_Sieci = "PLAY" ]
#        then
#           Nazwa_Sieci="PLUS ROAMING"
#       else
#           Nazwa_Sieci=$Nazwa_Sieci
#        fi     

#  Liczenie czasu polaczenia 
           if [ $Czas_Polaczenia -ge 3600 ]
              then
            Czas_PH=$((Czas_Polaczenia/3600));
            Czas_PM=$(((Czas_Polaczenia-$Czas_PH*3600)/60));
            Czas_PS=$((Czas_Polaczenia-($Czas_PH*3600)-(Czas_PM*60)))           

            elif [ $Czas_Polaczenia -ge 600 ]
             then
            Czas_PH="00"
            Czas_PM=$((Czas_Polaczenia/60));
            Czas_PS=$((Czas_Polaczenia-$Czas_PM*60)); 
            
             elif [ $Czas_Polaczenia -ge 60 ]
              then 
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
            
             else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))
             fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_PS -lt 1 ]
                  then
                Czas_PS="00"
            elif [ $Czas_PS -lt 10 ]
                  then
                Czas_PS="0"$Czas_PS
             fi
                                                                                 
            if [ $Czas_PM -lt 1 ]
                  then
                Czas_PM="00"
            elif [ $Czas_PM -lt 10 ]
                  then
                Czas_PM="0"$Czas_PM
             fi

            if [ $Czas_PH -lt 1 ]
                  then
               Czas_PH="00"
            elif [ $Czas_PH -lt 10 ]
                  then
            Czas_PH="0"$Czas_PH
              fi
                                                               
                                      
#  Liczenie czasu calkowitego polaczenia
             if [ $Czas_Calkowity -ge 3600 ]
                    then
             Czas_CH=$((Czas_Calkowity/3600))
             Czas_CM=$(((Czas_Calkowity-$Czas_CH*3600)/60))
             Czas_CS=$((Czas_Calkowity-($Czas_CH*3600)-(Czas_CM*60)))
           
             elif [ $Czas_Calkowity -ge 600 ]
                    then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
          
             elif [ $Czas_Calkowity -ge 60 ]
           
                   then
             Czas_CH="00"
             Czas_CM=$((Czas_Calkowity/60))
             Czas_CS=$((Czas_Calkowity-$Czas_CM*60))
  
              else
             Czas_PH="00"
             Czas_PM=$((Czas_Polaczenia/60))
             Czas_PS=$((Czas_Polaczenia-$Czas_PM*60))

              fi

# porzadkowanie formatu czasu godzin, minut, sekund
            if [ $Czas_CS -lt 1 ]
                  then
               Czas_CS="00"
            elif [ $Czas_CS -lt 10 ]
                  then
               Czas_CS="0"$Czas_CS
             fi
                           
             if [ $Czas_CM -lt 1 ]
                   then
               Czas_CM="00"
             elif [ $Czas_CM -lt 10 ]
                   then
               Czas_CM="0"$Czas_CM
             fi
                                                                                                                                                                                                                         
            if [ $Czas_CH -lt 1 ]
                 then
             Czas_CH=" 00"
           
             elif [ $Czas_CH -lt 10 ]
                 then
             Czas_CH=" 0"$Czas_CH
           
             elif [ $Czas_CH -lt 100 ]
                 then
             Czas_CH=$Czas_CH
            fi

# konwersja hex na dec
            
LACd=$((0x$LAC))
LCIDd=$((0x$LCID))
CIDd=$((0x$CID))
CSQp=$(($CSQ*100/31))

# BTS Info

if [ -e "$CLF" ]; then
                PAT="$ID_Sieci;$CIDd;$LACd;"
                BTSINFOPOS="$(cat "$CLF" | awk -F";" '/'$PAT'/ {printf $5","$6" - "$8}')"
fi

            
# przygotowanie wysietlenia danych o polaczeniu GSM  
echo -e "Content-type: text/html\n\n"     
    (echo "================================================================<br>") 
    (echo "           $DATE <br>")
    (echo "-------------------------------------------<br>")
    (echo "       MODEM HUAWEI $DeviceName $Classify $ProductFamily     <br>")
    (echo "-------------------------------------------<br>")
    (echo "SN                :  $SerialNumber <br>")
    (echo "IMEI              :  $Imei <br>")
    (echo "IMSI              :  $Imsi <br>")
    (echo "ICCID             :  $Iccid <br>")
    (echo "Wersja Hardware   :  $HardwareVersion <br>")
    (echo "Wersja Software   :  $SoftwareVersion <br>")
    (echo "Wersja WebUI      :  $WebUIVersion <br>")
    (echo "Mac Address       :  $MacAddress1 <br>")
    (echo "Obslugiwane sieci :  $supportmode <br>")
    (echo "Aktualna siec     :  $workmode <br>")
    (echo "-------------------------------------------<br>")
    (echo "Stan lacza z BTS  :  $Polaczenie <br>")
    (echo "Nazwa sieci       :  $Nazwa_Sieci <br>")
    (echo "ID sieci          :  $ID_Sieci <br>")
    (echo "Siec operatora    :  $RatSiec <br>")
    (echo "Roaming           :  $RoamingStatus <br>")
    (echo "Sila sygnalu RSSI :  $RSSI <br>")
    (echo "Sila sygnalu RSRP :  $RSRP <br>")
    (echo "Sila sygnalu RSRQ :  $RSRQ dB <br>")
    (echo "Sila sygnalu RSCP :  $RSCP <br>")
    (echo "Ec/Io             :  $ECIO dBm <br>")
    (echo "CSQ               :  $CSQ ($CSQp %) <br>")
    (echo "SC                :  $SC <br>")
    (echo "LAC               :  $LACd <br>")
    (echo "LCID (CID)        :  $LCIDd ($CIDd) <br>")
    (echo "Czas polaczenia   :  $Czas_PH:$Czas_PM:$Czas_PS <br>")
    (echo "Czas calkowity    :  $Czas_CH:$Czas_CM:$Czas_CS <br>")
    (echo "Typ sieci         :  $Siec <br>")
    (echo "Adres IP LAN      :  $DhcpIPAddress <br>")
    (echo "Maska LAN         :  $DhcpLanNetmask <br>")
    (echo "Adres IP WAN      :  $Adres_IP <br>")
    (echo "DNS podstawowy    :  $DNS_Primary <br>")
    (echo "DNS rezerwowy     :  $DNS_Secendary <br>")
    (echo "Pobrano w sesji   :  $(($CurrentDownload/1048576)) MB <br>")
    (echo "Wyslano w sesji   :  $(($CurrentUpload/1048576)) MB <br>")
    (echo "Total pobrano     :  $(($TotalDownload/1048576)) MB <br>")
    (echo "Total wyslano     :  $(($TotalUpload/1048576)) MB <br>")
    (echo "Predkosc Download :  $(($CurrentDownloadRate/1000)) kbit/s <br>")
    (echo "Predkosc Upload   :  $(($CurrentUploadRate/1000)) kbit/s <br>")
    (echo "-------------------------------------------<br>")
    (echo "BTS pozycja GPS   :  $BTSINFOPOS <br>")
    (echo "================================================================<br>")

# ostania korekta  31.03.2015
# Koniec skryptu
#

zawartość /usr/share/3ginfo/hilink.html

<html>
<style type="text/css">
body {font-family: Verdana, Arial, Helvetica, sans-serif, Courier;}
.c {margin:auto;text-align:center;clear:both;}
.l {width:49%;clear:both;float:left;text-align:right;}
.r {width:49%;float:right;text-align:left;}
</style>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Siła sygnału</title>

<script language="javascript" type="text/javascript">
<!--
var secs=0;
var delay = 1000;

startTimer();
function startTimer()
{
 if (secs==0)
 {
  secs=3;
  refreshData();
 }
 else
 {
  self.status = secs;
  secs = secs - 1;
 }
 self.setTimeout("startTimer()", delay);
}

function refreshData()
{
 var req;

 try {req = new XMLHttpRequest();} catch (e) {
  try {req = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {
   try {req = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {
    alert("CoĹ› stara ta przelÄ…darka...");
    return false;
   }
  }
 }

 req.open("GET", "/cgi-bin/signal.sh");

 req.onreadystatechange = function() {

  if (req.readyState == 4) {
   var line=req.responseText;
   var arr=(line.split(/,/));
   if(arr.length>3)
   {
    var p = (arr[2]*100/31).toFixed();
    document.getElementById('csq').innerHTML=p+'%';
    document.getElementById('precent').style.width=p+"%";
    var color = "red";
    if (p > 29) {color="orange"; }
    if (p > 45) {color="yellow"; }
    if (p > 61) {color="green"; }
    document.getElementById('precent').style.backgroundColor=color;
   }
  }
 }
 req.send(null);
}
//-->
</script>

<script language="javascript" type="text/javascript">
<!--

function readhilink()
{
var hilink;

try {hilink = new XMLHttpRequest();} catch (e) {
  try {hilink = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {
   try {hilink = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {
    alert("Co�^� stara ta przel�^�darka...");
    return false;
   }
  }
 }

hilink.open("GET", "/cgi-bin/hilink.sh",true);
hilink.onreadystatechange = function() 
 {
    if (hilink.readyState == 4 && hilink.status==200) 
    {
    var hlout = hilink.responseText;
    document.getElementById("hilinkout").innerHTML=hlout;
        }
 }
 hilink.send(null);
}

//-->
</script>

</head>
<body>
<table style='width:100%;height:100%;'>
 <tr><td colspan=3 style='height:1px;'>&nbsp;</td></tr>
 <tr>
  <td>&nbsp;</td>
  <td style='width:700px; height:1px;'>

   <div class="c"><h1><font color="black">Modem HUAWEI E3372 HiLink LTE</color></h1></div>
   <span class="l">Siła sygnału CSQ:</span><span id="csq" class="r"></span>
   <div style="float:left; margin:1%; width:98%; height:20px; border:1px solid #000000; background-color:transparent;">
    <div id="precent" style="float:left; background-color:black; border-right:1px solid #000000; height:100%; width:0%">&nbsp;</div>
   </div>
   <font size="2"><div id="hilinkout"></div></font>
   <center><button type="button" onclick="readhilink()">Odczytaj dane modemu</button></center>
  </td>
  <td>&nbsp;</td>
 </tr>
 <tr><td colspan=3>&nbsp;</td></tr>
</table>
</body>
</html>

zawartość /usr/share/3ginfo/cgi-bin/signal.sh

#!/bin/sh
# dczyt danych o sile sygnalu  z modemu E3372 w trybie  HILINK
  wget -t 25 -O /tmp/E3372-signal http://192.168.8.1/api/device/signal > /dev/null 2>&1
  wget -t 25 -O /tmp/E3372-signal-para http://192.168.8.1/api/net/signal-para > /dev/null 2>&1

# szukanie danych w pliku z danymi typu HTML
#    RSSI=`cat /tmp/E3372-signal-para | grep Rscp | cut -d '<' -f 2 | cut -d '>' -f 2`
    RSSI=`cat /tmp/E3372-signal | grep rssi | cut -d '<' -f 2 | cut -d '>' -f 2 | cut -d 'd' -f 1`
    RSCP=`cat /tmp/E3372-signal | grep rscp | cut -d '<' -f 2 | cut -d '>' -f 2 | cut -d 'd' -f 1`
    RSRQ=`cat /tmp/E3372-signal | grep rsrq | cut -d '<' -f 2 | cut -d '>' -f 2 | cut -d 'd' -f 1`
    ECIO=`cat /tmp/E3372-signal-para | grep Ecio | cut -d '<' -f 2 | cut -d '>' -f 2`
#        CSQ=$(((ECIO+32)*10/11))

         CSQ=$((ECIO+29))

# Sprawdzenie CSQ dla 4G/LTE

    if [ $CSQ -lt 0 ]
        then CSQ=$((RSRQ+29))
    fi
         RSSI=$((RSSI*-100/121))
         RSCQ="Signal,Quality:,$CSQ,$RSSI"
#
# przygotowanie danych dla przegladarki
#
         echo -e "Content-type: text/html\n\n"
         echo $RSCQ | sed -e 's/ /,/g'
#
# wczesniej musi byc zainstalowany pakiet 3GINFO
# skrypt miesci sie w katalogu /usr/share/3ginfo/cgi-bin
# podmenic kod na ten  w skrypcie  signal.sh
#
# odczyt sily sygnalu przez przegladarke  http://192.168.8.1:81/signal.html
# przy zalozeniu ze router ma adres 192.169.8.1   - wymog przy modemie HILINK
#
# wersja z dnia 31.03.2015r

Pozdr,

Banana Pi BPI-R3 + SFP GPON ONT Nokia G-010S-A + LTE FIBOCOM L860-GL-16 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.71)
Zyxel T56 EX5601-T1 (OpenWrt 25.12-SNAPSHOT, kernel 6.12.85)
Xiaomi AX3600 (OpenWrt EDMA-NSS SNAPSHOT, kernel 6.18.38)
OpenWRT NSS and EDMA-NSS builds for Xiaomi AX3600 (IPQ8071A) by @Payti

50

Odp: mwan3 - łącza backupowe konfiguracja

Małe info: nie dla wszystkich modemów (lub operatorów) jest zwracany LAC w signal-para, wywala się wtedy skrypt.

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