Czasami zdarza się, że potrzebujemy uruchomić jakiś skrypt podczas restartu routera. I tym razem padło na mnie.
Trzeba było poszukać informacji jak to zrobić na EDGE bo niestety w GUI tego nie znajdziemy.
Nie jest to trudne lecz nieintuicyjne.
Po co mi to było? Nawet router konstruowany przez renomowana firmę UBNT też nie jest pozbawiony wad.
Miałem problem z uaktualnieniem daty/czasu przez klienta NTP na routerzez (po prostu nie robił tego).
Z tego co znalazłem w sieci ktoś stawiał hipotezę, że NTP robił updat zanim ustawiły mu się serwery czasu i wychodziła z tego kicha.
Wywoływanie skryptu w EDGE jest prosty jednak musimy to zrobić z konsoli lub WINSCP.
Wystarczy nasz skrypt wrzucić do odpowiedniego katalogu systemowego.
Katalog systemowy, w którym wywoływane są skrypty to:
/config/scripts/post-config.d
Niestety jest pewien haczyk. Wywoływane skrypty są przez skrypty rozruchowe routera i jeśli nasz skrypt nie zgłosi do głównego skryptu zakończenia pracy (zawiesi się) to zawiesza nam się nasz główny skrypt rozruchowy.
Musimy zrobić wywołanie naszego skryptu ze skryptu pośredniego.
Podsumowując:
Do katalogu:
/config/scripts/post-config.d
wrzucamy skrypt wywołujący np:
Nadajemy mu prawa wykonywania np:
chmod 777 /{ścieżka do pliku}
reboot.sh
#!/bin/vbash
/config/ntp_update.sh > /dev/null 2>&1 &
exit 0
który odwołuje sie do skryptu ntp_update.sh umieszczony w innej lokalizacji np katalog wyżej czyli /config/scripts/
komendy systemowe jak:
set='$SBIN_PATH/my_set'
delete='$SBIN_PATH/my_delete'
copy='$SBIN_PATH/my_copy'
rename='$SBIN_PATH/my_rename'
comment='$SBIN_PATH/my_comment'
commit='sg vyattacfg -c $SBIN_PATH/my_commit'
run='$BIN_PATH/vyatta-op-cmd-wrapper'
show='$API showConfig'
discard='$SBIN_PATH/my_discard'
check_type='$SBIN_PATH/vyatta-validate-type.pl'
wywołujemy przy pomocy odwołania do pliku z aliasami:
https://docs.vyos.io/en/latest/automa...pting.html
EDGE jest oparty na systemie konfiguracyjnym VYOS/Vyatta i możemy się posiłkować manualami do niego, ponieważ instrukcji wydanych przez UBNT jest jak na lekarstwo i często problemy tylko powierzchniowo opisują.
Nasz końcowy skrypt wywołujący update czasu z serwera ntp wygląda następująco:
Nadajemy mu prawa wykonywania np:
chmod 777 /{ścieżka do pliku}
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template
sleep 10
run set date ntp
exit 0
===============================================================
Netgear WNR3500L v1
Podziękowania dla administracji Openlinksys.info!
|