king_crim Napisano Styczeń 21, 2010 Zgłoszenie Share Napisano Styczeń 21, 2010 Witam mam w mieszkaniu komputerek który robi za maleńki serwer, a że łączy się z netem poprzez wifi to postanowiłem napisać mały skrypt w bashu który bedzie co godzinkę sprawdzał czy działa net a jeśli nie to się łączył. I tutaj pojawia się problem, normalnie z netem łączy się w ten sposób: fragment pliku /etc/rc.local: iwconfig wlan0 essid hagala666 mode managment iwconfig wlan0 rate 54Mb/s iwconfig wlan0 channel 3 dhclient wlan0 więc napisałem taki oto skrypt który dodałem do crontab z poleceniem uruchamiania co godzinę z konta root: #!/bin/bash a=$(ping -c 2 google.pl|grep received |awk '{print $4}') b=$(ping -c 2 wp.pl|grep received |awk '{print $4}') data=$(date) if [ "$a" -gt 0 ] || [ "$b" -gt 0 ]; then echo "$data *** jest net" >> /root/logi/net_log else echo "$data *** nie ma neta" >> /root/logi/net_log killall dhclient iwconfig wlan0 essid hagala666 mode managment iwconfig wlan0 rate 54Mb/s iwconfig wlan0 channel 3 dhclient wlan0 fi Dodam, że skrypt działa poprawnie, co godzinę w pliku /root/logi/net_log bezbłędnie loguje mi czy net jest czy go nie ma... Plik /root/logi/net_log jest nie dostępny z poziomu zwykłego usera więc mam pewność że skrypt jest uruchamiany z poziomu roota. Pytanie brzmi: Dlaczego te same 4 linijki w /etc/rc.local łączą kompa z netem bez problemu, a gdy zostawie je tylko w skrypcie to się nie łączy ? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Styczeń 21, 2010 Zgłoszenie Share Napisano Styczeń 21, 2010 Strzelam, że coś z dhclient, spróbuj killall -9 dhclient i dodaj po każdym iwconfig jeszcze jedno echo do pliku, wtedy zobaczysz na czym się zatrzymuje. Po ostatnim dhclient wlan0 dodaj też ping, bo może połączenie jest chwilowo nawiązywane a potem zrywane. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
king_crim Napisano Styczeń 21, 2010 Autor Zgłoszenie Share Napisano Styczeń 21, 2010 gdy dodalem linijke z echem po kazdym poleceniu to w logach miałem ładnie kazde echo zapisane, wiec skrypt się nei zawiesza stworzyłem wiec oddzielny skrypt net_on: #!/bin/bash killall -9 dhclient sleep 2 iwconfig wlan0 essid hagala666 mode managment iwconfig wlan0 rate 54Mb/s iwconfig wlan0 channel 3 dhclient wlan0 i co prawda dopiero po drugim uruchomieniu, ale połączył mnie z netem: [root@crimson skrypty]# ./net_on dhclient: nie zabito żadnego procesu ./net_on: line 11: 1989 Unicestwiony dhclient wlan0 [root@crimson skrypty]# ./net_on dhclient: nie zabito żadnego procesu [root@crimson skrypty]# za to poniższy skrypt jest odpalany przez crona co minutę: #!/bin/bash a=$(ping -c 2 google.pl|grep received |awk '{print $4}') b=$(ping -c 2 wp.pl|grep received |awk '{print $4}') data=$(date) if [ "$a" == 2 ] || [ "$b" == 2 ]; then echo "$data *** jest net" >> /root/logi/ping_test_log else /root/skrypty/net_on echo "$data *** (_niema_ → nie ma) ORT neta" >> /root/logi/ping_test_log fi i nawet po 4 krotnym uruchomieniu się nie łączy, oto log: [root@crimson logi]# cat /root/logi/ping_test_log Thu Jan 21 21:32:01 CET 2010 *** (_niema_ → nie ma) ORT neta Thu Jan 21 21:33:01 CET 2010 *** (_niema_ → nie ma) ORT neta Thu Jan 21 21:34:02 CET 2010 *** (_niema_ → nie ma) ORT neta Thu Jan 21 21:35:01 CET 2010 *** (_niema_ → nie ma) ORT neta nie mogę pojąc co za różnica czy sam odpalam skrypt, czy jest on uruchamiany przez skrypt uruchamiany przez crona... ja moge polaczyc a cron nie :/ Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Styczeń 21, 2010 Zgłoszenie Share Napisano Styczeń 21, 2010 Najczęstszą przyczyną nie działania skryptu w cron jest brak ścieżek do poleceń. Ja już dla świętego spokoju zawsze wklejam na początku w skrypcie: export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin a dla graficznych z zenity dodatkowo jeszcze export DISPLAY=:0.0 export LANG=pl_PL.UTF-8 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
king_crim Napisano Styczeń 21, 2010 Autor Zgłoszenie Share Napisano Styczeń 21, 2010 Najczęstszą przyczyną nie działania skryptu w cron jest brak ścieżek do poleceń. Ja już dla świętego spokoju zawsze wklejam na początku w skrypcie:export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin a dla graficznych z zenity dodatkowo jeszcze export DISPLAY=:0.0 export LANG=pl_PL.UTF-8 Dzięki wielkie borzole ! Okazuje się że właśnie o to chodziło. pozdrawiam i jeszcze raz dziękuję Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się