1

Temat: NoIpupdater i problem z bash ??

Chyba nie mam pełnego basha w moim X86 miniPC - Openwrt

Mam swoj skrypt do updatowania noip i przy probie odpalenia skryptu wyrzuca mi:

root@OpenWrt:~# /root/noipupdater.sh
/root/noipupdater.sh: line 35: od: command not found
/root/noipupdater.sh: line 36: od: command not found
/root/noipupdater.sh: line 97: tac: command not found
/root/noipupdater.sh: line 116: tac: command not found

2

Odp: NoIpupdater i problem z bash ??

opkg update
opkg install coreutils-od coreutils-tac

3

Odp: NoIpupdater i problem z bash ??

Dzieki :-) sprawdze. A jak wymusic by dany skrypt probowal laczyc sie tylko przez jeden wan ( mam multiwan)  i w sumie mam trzy rozne interfejsy eth i on wybiera losowo ten do polaczenia.

4

Odp: NoIpupdater i problem z bash ??

Teraz działa ale nie wiem co go moze bolec bo nie moze dogadac się z serwerem noip hmm

root@OpenWrt:~# ./noipupdater.sh
IP: 37.47.65.xxx
(error) Could not understand the response from No-IP. The DNS update server may be down.

Chociaz wygląda na to robi update ale nie otrzymuje odpowiedzi

Ten sam skrypt na Debianie działa prawidłowo

5

Odp: NoIpupdater i problem z bash ??

sh -x  ./noipupdater.sh zrób i zobaczysz co on otrzymuje i co parsuje. Narzędzia z busyboxa różnią się niekiedy składniowo od tych normalnych, może masz użyte coś czego busybox nie potrafi przetrawić lub po prostu wymagana składnia jest inna.

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

6

Odp: NoIpupdater i problem z bash ??

Dostałem takie cos:

root@OpenWrt:~# sh -x  ./noipupdater.sh
+ dirname ./noipupdater.sh
+ cd .
+ pwd
+ CONFIGFILE=/root/config
+ [ -e /root/config ]
+ source /root/config
+ USERNAME=onken222
+ PASSWORD=xxxxxsssxx
+ HOST=izwq.costam.com
+ LOGDIR=/root/logs
+ FORCEUPDATEFREQ=864000
+ [ -z onken222 ]
+ [ -z xxxxxsssxx ]
+ USERAGENT=Bash No-IP Updater/0.9 onken222
+ sed s/ /%/g
+ tr -d \n
+ od -A n -t x1
+ echo -ne onken222
+ USERNAME=%74%6f%6d%61%73%7a%65%77%73%6b%69%2e%74%6f%6d%61%73%7a%40%79%61%6e%64%65%78%2e%63%6f%6d
+ sed s/ /%/g
+ tr -d \n
+ od -A n -t x1
+ echo -ne xxxxxsssxx
+ PASSWORD=%6d%61%64%7a%69%61%32%31%36%30
+ [[ 864000 =~ ^[0-9]+$ ]]
sh: =~: unknown operand
+ echo FORCEUPDATEFREQ has not been set correctly in the config file
FORCEUPDATEFREQ has not been set correctly in the config file
+ exit 1
root@OpenWrt:~#

7

Odp: NoIpupdater i problem z bash ??

+ [[ 864000 =~ ^[0-9]+$ ]]
sh: =~: unknown operand
+ echo FORCEUPDATEFREQ has n

Zainstaluj jednak basha i wykonaj skrypt z poziomu basha.

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

8

Odp: NoIpupdater i problem z bash ??

ale zrobiłem opkg install bash, bez tego nic nie szło

Ale wyglada na to ze nie pełny bash jest ?

9

Odp: NoIpupdater i problem z bash ??

Więc w pierwszej linii skryptu zrób #!/bin/bash jeżeli nie ma i wołaj przez bash -x ./noipupdater.sh a nie sh. sh jest pewnie linkiem do ash.

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

10

Odp: NoIpupdater i problem z bash ??

Uruchamiam bashem i ten sam bład wyrzuca sad

' RESPONSE='good 37.47.65.154
++ tr -cd '[:print:]'
++ echo good $'37.47.65.154\r'
+ RESPONSE=
++ awk '{ print $1 }'
++ echo
+ RESPONSE_A=
+ case $RESPONSE_A in
+ LOGLINE='(error) Could not understand the response from No-IP. The DNS update server may be down.'
++ date '+%Y-%m-%d %H:%M:%S'
+ LOGDATE='[2016-06-20 11:44:04]'
+ echo 'IP: 37.47.65.154'
IP: 37.47.65.154
+ echo 37.47.65.154
+ echo '(error)' Could not understand the response from No-IP. The DNS update server may be down.
(error) Could not understand the response from No-IP. The DNS update server may be down.
+ echo '[2016-06-20 11:44:04] (error) Could not understand the response from No-IP. The DNS update server may be down.'
+ exit 0
root@OpenWrt:~#

11

Odp: NoIpupdater i problem z bash ??

Skrypt chyba jest zwalony smile chyba jedno $ masz za dużo. np-ip odpowiedziało "good 37.47.65.154"

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

12

Odp: NoIpupdater i problem z bash ??

Ale w którym miejscu smile ? Przeciez ten sam skrypt działa pod Debianem smile

Kawałek skyptu:

fi
RESPONSE=$(curl -s -k --user-agent "$USERAGENT" "https://$USERNAME:$PASSWORD@dynupdate.no-ip.com/nic/update?hostname=$HOST&myip=$NEWIP")
RESPONSE=$(echo $RESPONSE | tr -cd "[:print:]")

RESPONSE_A=$(echo $RESPONSE | awk '{ print $1 }')
case $RESPONSE_A in
    "good")
        RESPONSE_B=$(echo $RESPONSE | awk '{ print $2 }')
        LOGLINE="(good) DNS hostname(s) successfully updated to $RESPONSE_B."
        ;;
    "nochg")
        RESPONSE_B=$(echo $RESPONSE | awk '{ print $2 }')
        LOGLINE="(nochg) IP address is current: $RESPONSE_B; no update performed."

13

Odp: NoIpupdater i problem z bash ??

Zakomentuj tą linię:   RESPONSE=$(echo $RESPONSE | tr -cd "[:print:]")

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

14

Odp: NoIpupdater i problem z bash ??

Cezary smile

Jesteś wielki, poszło smile

Tylko jak teraz wymusic by ten update robił wyłacznie po eth2 smile ??

15

Odp: NoIpupdater i problem z bash ??

curl --interface

16

Odp: NoIpupdater i problem z bash ??

Cos źle wpisalem smile ??

root@OpenWrt:~# curl eth2 ./noipupdater.sh
curl: (6) Couldn't resolve host 'eth2'
curl: (6) Couldn't resolve host ''
root@OpenWrt:~#


?

17 (edytowany przez g0f3r 2016-06-20 11:27:39)

Odp: NoIpupdater i problem z bash ??

curl --interface INTERFEJS i chyba raczej do przerobienia w skrypcie...
RESPONSE=$(curl --interface eth3 -s -k --user-agent "$USERAGENT" "https://$USERNAME:$PASSWORD@dynupdate.no-ip.com/nic/update?hostname=$HOST&myip=$NEWIP")
Czy tam eth2 jak lubisz;]

18 (edytowany przez onken 2016-06-20 11:31:32)

Odp: NoIpupdater i problem z bash ??

Ok, przerobione i śmiga smile

Dzięki wielkie

To tak ostatnie pytanie, co prawda do debiana ale zegar aktualizowany przez ntp i ciągle jest przesuniety o około 3 minuty, szukam i szukam i nie wiem jak to wyrównac do prawidłowego smile

root@debian:/usr/serv/script# /usr/serv/ntpdate -b ntp.cesnet.cz
20 Jun 12:30:48 ntpdate[5029]: step time server 195.113.144.201 offset -182.199518 sec
root@debian:/usr/serv/script#

19

Odp: NoIpupdater i problem z bash ??

Może coś na sprzęcie, odpal sobie demona ntpd - będzie lepiej.

20

Odp: NoIpupdater i problem z bash ??

adjtimexconfig? Może zegar w pc ci się śpieszy.

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

21

Odp: NoIpupdater i problem z bash ??

Zainstalowałem adjtimexconfig ale cas nadal mam przesuniety o ponad 180 sek, no jakies cyrki

root@debian:/usr/serv/script# /usr/serv/ntpdate -b ntp.cesnet.cz  20 Jun 12:46:15 ntpdate[8069]: step time server 195.113.144.201 offset -182.236507 sec
root@debian:/usr/serv/script# adjtimexconfig
Comparing clocks (this will take 70 sec)...done.
Adjusting system time by -7.65472 sec/day to agree with CMOS clock...done.
root@debian:/usr/serv/script#

22

Odp: NoIpupdater i problem z bash ??

No właśnie adjtimexconfig zrobił wymagany offset. Teraz poczekaj chwilę i zobacz czas.

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

23

Odp: NoIpupdater i problem z bash ??

Cały czas jest te 3 minuty nie teges smile

a mamy 12.52

root@debian:/usr/serv/script# date
Mon Jun 20 12:55:32 CEST 2016

24

Odp: NoIpupdater i problem z bash ??

Cezary

chyba jednak linia:

RESPONSE=$(echo $RESPONSE | tr -cd "[:print:]")

Musi pozostać bo świruje skrypt i czasem wyrzuca update jak nie jest wcale potrzebny

Pozniej reguły zalezą od zwykłego "RESPONSE" np.

RESPONSE_B=$(echo $RESPONSE | awk '{ print $2 }')
        LOGLINE="(nochg) IP address is current: $RESPONSE_B; no update performed."
        ;;

25

Odp: NoIpupdater i problem z bash ??

A z nim też świrował bo później dane nie były przekazywane. od good/nochg to zależy, takie rzeczy no-ip zwraca i od tego skrypt podejmuje akcję co robić.

A tak w ogóle - jeżeli to openwrt to czemu nie stosujesz ddns-scripts tylko własny skrypt?

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