Watchdog - karta sieciowa się wiesza
-
- Piegowaty Guziec
- Posty: 26
- Rejestracja: 01 paź 2008, 00:46
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.10
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Watchdog - karta sieciowa się wiesza
Czy ktoś ma pomysł na zrobienie wachdoga? Mam problem z moją kartą sieciową. Nieraz może chodzić bez przerwy kilka dni a nieraz nawet kilkukrotnie w ciągu dnia muszę wypinać wtyczkę USB. Podejrzewam że to kwestia elektroniki i przegrzewania się. W każdym bądź razie szukam sposobu na wykonanie resetu samego interfejsu sieciowego w przypadku braku pingów. Network-manager niestety tylko próbuje połączyć się ponownie, bez wykrycia że to jest wina karty.
- ekitowski
- Sędziwy Jeż
- Posty: 51
- Rejestracja: 25 sie 2008, 15:03
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.10
- Środowisko graficzne: GNOME
- Kontakt:
Odp: Watchdog - karta sieciowa się wiesza
Karta sieciowa - i wypinasz wtyczkę USB - jak dla mnie to jakieś dziwne - masz sieciówkę na USB czy to zwykłe PCI. A czy zywkłe ifconfig interface down i up pomaga - bo jak tak to dość łatwo napisać skrypt w bashu i podpiąć go pod crona.
-
- Piegowaty Guziec
- Posty: 26
- Rejestracja: 01 paź 2008, 00:46
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.10
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: Watchdog - karta sieciowa się wiesza
Sieciówka na USB (wifi). Sprawdzę z tym , bo od 3 dni się nic nie działo.
EDIT:
no i się stało, ale wystarczyło opuścić interfejs sieciowy by karta odzyskała sprawność. Network-manager sam ją podniósł. Teraz pytanie główne: jak zrobić watchdoga? ifconfig wymaga sudo na początku, zatem dodatkowo ten watchdog musi mieć możliwość dostępu do karty jako administrator bez konieczności pytania o hasło.
Kod: Zaznacz cały
ifconfig wlan0 down
EDIT:
no i się stało, ale wystarczyło opuścić interfejs sieciowy by karta odzyskała sprawność. Network-manager sam ją podniósł. Teraz pytanie główne: jak zrobić watchdoga? ifconfig wymaga sudo na początku, zatem dodatkowo ten watchdog musi mieć możliwość dostępu do karty jako administrator bez konieczności pytania o hasło.
- ekitowski
- Sędziwy Jeż
- Posty: 51
- Rejestracja: 25 sie 2008, 15:03
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.10
- Środowisko graficzne: GNOME
- Kontakt:
Odp: Watchdog - karta sieciowa się wiesza
Hm jeżeli chodzi o wywołanie skryptu z uprawnieniami roota to nie powinno być z tym problemu, rozwiązań kilka np: dodanie odpowiedniego skryptu do crona z uprawnieniami roota
Albo inaczej - z wykorzystaniem sudo:
no albo zrobić roota właścicielem skryptu i ustawić SUID
No i pewno jeszcze coś by wymyślił.
Jak ja widzę taki skrypt - taki pseudkod
Dodałbym do do cron-a (ale dla roota) i ustawił coby się co 1 minutkę odpalało czy jak tam uważasz.
Hm... mógłbym podać Ci gotowca, no ale może dasz radę - w ten sposób na pewno więcej się nauczysz.
Pozdrawiam i życzę powodzenia.
P.S Poleciałem troszkę z tym pseudokodem
Kod: Zaznacz cały
sudo crontab -u root
Kod: Zaznacz cały
echo "tajnehaslo" | sudo -S ./skrypt.sh
No i pewno jeszcze coś by wymyślił.
Jak ja widzę taki skrypt - taki pseudkod

Kod: Zaznacz cały
Czy ping adres_routera !OK
to
ifconfig wlan0 down
sleep 3
ifconfig wlan0 up
EndCzy
Hm... mógłbym podać Ci gotowca, no ale może dasz radę - w ten sposób na pewno więcej się nauczysz.
Pozdrawiam i życzę powodzenia.
P.S Poleciałem troszkę z tym pseudokodem

-
- Piegowaty Guziec
- Posty: 26
- Rejestracja: 01 paź 2008, 00:46
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.10
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: Watchdog - karta sieciowa się wiesza
sprawozdanie z postępów:
1. skrypt napisany, a właściwie przerobiony ze znalezionego gotowca, ale miał niektóre parametry wpisane na stałe, a teraz wystarczy wpisać dowolną liczbę hostów w zmienną hosts.
EDIT:
przetestowałem skrypt i przy braku połączenia jest błąd w 11 linijce
1. skrypt napisany, a właściwie przerobiony ze znalezionego gotowca, ale miał niektóre parametry wpisane na stałe, a teraz wystarczy wpisać dowolną liczbę hostów w zmienną hosts.
2 na crontabie w ogóle się nie znam, ale gnome-schedule (z repozytoriów) zna się lepiej ode mnie#!/bin/bash
HOSTS="192.168.0.1"
# no ping request
COUNT=10
RECCOUNT=0
MAXCOUNT=0
for myHost in $HOSTS
do
MAXCOUNT=$(($MAXCOUNT + $COUNT))
count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
RECCOUNT=$(($RECCOUNT + $count))
done
MAXCOUNT=$(($MAXCOUNT * 0.7))
if [ $RECCOUNT -lt $MAXCOUNT ]; then
ifconfig wlan0 down
sleep 3
ifconfig wlan0 up
fi
zastępuje bardzo dobrzesudo gnome-schedule
Pozostaje jeszcze jedna kwestia do rozwiązania. Po zerwaniu połączenia przez powieszenie karty network-manager próbuje połączyć się z poprzednimi parametrami i po nieudanym zestawieniu połączenia wyskakuje żądanie podania poprawnego klucza. Jak to ominąć? Reboot załatwia sprawę, bo network-manager łączy się z tym co ma wpisane, mimo że przed chwilą żądał klucza. Czy jest jakiś sposób na ponowne uruchomienie network-managera?sudo crontab -u root
EDIT:
przetestowałem skrypt i przy braku połączenia jest błąd w 11 linijce
- ekitowski
- Sędziwy Jeż
- Posty: 51
- Rejestracja: 25 sie 2008, 15:03
- Płeć: Mężczyzna
- Wersja Ubuntu: 8.10
- Środowisko graficzne: GNOME
- Kontakt:
Odp: Watchdog - karta sieciowa się wiesza
No to kolego przekombinowałeś ostro 
No to troszkę uprościmy:
No to mamy już dość dużo. Teraz kolejny problem jaki spotkałeś...
Ja widzę rozwiązanie w pliku /etc/network/interface
Dla konfiguracji z dhcp:
Dla statycznej konfiguracji:
Tu parę uwag:
Kiedyś miałem problem z kluczem i nie pamiętam dokładnie ale chyba wystarczyło dopisać
wireless-key open hasło_do_sieci - i to było dla klucza w postaci szesnastkowej
A jakoś innym razem to wpa-conf /etc/wpa_supplicant.conf - ale po szczegóły do trzeba googla zapytać...
No i teraz jakbyś miał ładnie skonfigurowaną sieć na tych plikach to:
w odpowiednim miejscu pierwszego polecenia z tego postu powinno załatwić sprawę.
A i jeszcze jedno - nie jestem pewny - ale jak używasz network-managera to możliwe że zechce on Ci sam nadpisywać powyższy plik.
Pozdrawiam

No to troszkę uprościmy:
Kod: Zaznacz cały
ping -c1 -w 2 192.168.0.1 &>/dev/null && echo 'No to se mam połączenie z routerem'|| echo 'A to niedobra karta nie chce dzialac'
Ja widzę rozwiązanie w pliku /etc/network/interface
Dla konfiguracji z dhcp:
Kod: Zaznacz cały
auto wlan0
iface wlan0 inet dhcp
wireless-essid nazwa_sieci
wireless-mode Managed
wireless-key hasło_do_sieci
Kod: Zaznacz cały
auto wlan0
iface wlan0 inet dhcp
wireless-essid nazwa_sieci
wireless-mode Managed
wireless-key hasło_do_sieci
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
Kiedyś miałem problem z kluczem i nie pamiętam dokładnie ale chyba wystarczyło dopisać
wireless-key open hasło_do_sieci - i to było dla klucza w postaci szesnastkowej
A jakoś innym razem to wpa-conf /etc/wpa_supplicant.conf - ale po szczegóły do trzeba googla zapytać...
No i teraz jakbyś miał ładnie skonfigurowaną sieć na tych plikach to:
Kod: Zaznacz cały
/etc/init.d/networking restart
A i jeszcze jedno - nie jestem pewny - ale jak używasz network-managera to możliwe że zechce on Ci sam nadpisywać powyższy plik.
Pozdrawiam
-
- Piegowaty Guziec
- Posty: 26
- Rejestracja: 01 paź 2008, 00:46
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.10
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: Watchdog - karta sieciowa się wiesza
Raczej na pewno bo /etc/init.d/networking restart niestety nie zadziałał w odniesieniu do karty wlan0. Sposób na network managera to wykonywać skrypt watchdoga co minutę a nie co 5. Nie podoba mi się tylko to że ping sprawdza jedną ramkę. Niby do routera jest najbliżej, ale zakłócenia się zawsze zdarzają a więc statystycznie w 50% tj. 1/(2^2) przypadków skrypt wykryje błąd i rozłączy sieć, dlatego mój skrypt musiał stwierdzić, że 70% pakietów nie dotarło. Z 10 ramek to pewność, że tylko 1 przypadek na 128 tj. 1/(2^7) to błąd spowodowany zakłóceniami. No ale w moim przypadku to się sprawdzi, bo u mnie zakłócenia w karcie powodują 100% spadek jakości połączenia. Dzięki! Jak będą problemy to jeszcze tutaj napiszę.ekitowski pisze:
A i jeszcze jedno - nie jestem pewny - ale jak używasz network-managera to możliwe że zechce on Ci sam nadpisywać powyższy plik.
Pozdrawiam
P.S. Właśnie zauważyłem że google-schedule dla roota nie trzeba wykonywać po przez sudo - jest wielki, jak chamski cyc, przycisk "Change user", zatem wystarczy uruchomić normalnie z menu.
-
- Piegowaty Guziec
- Posty: 26
- Rejestracja: 01 paź 2008, 00:46
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.10
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Re: Watchdog - karta sieciowa się wiesza
Wklejam tylko ostateczną wersję skryptu, bo po testach okazało się, że wcześniejszy skrypt działał tylko wtedy kiedy było połączenie, a gdy zawieszała się karta już nie, a gdy przerbiłem go to było na odwrót - wywalał błąd gdy było połączenie, a gdy go nie było działał prawidłowo. Ta wersja działa bez zarzutu
Kod: Zaznacz cały
#!/bin/bash
HOSTS="192.168.1.1"
# no ping request
COUNT=10
RECCOUNT=0
MAXCOUNT=0
for myHost in $HOSTS
do
MAXCOUNT=$(($MAXCOUNT + $COUNT))
count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
if [ "$count" > 0 ]
then
RECCOUNT=$(($RECCOUNT + $count))
fi
done
MAXCOUNT=$(($MAXCOUNT * 0,7))
if [ $RECCOUNT -lt $MAXCOUNT ]; then
ifconfig wlan0 down
sleep 3
ifconfig wlan0 up
fi
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 8 gości