Forum CDRinfo.pl

Forum CDRinfo.pl (https://forum.cdrinfo.pl/)
-   Komputery - oprogramowanie i sprzęt (https://forum.cdrinfo.pl/f113/)
-   -   Linux (https://forum.cdrinfo.pl/f113/linux-91587/)

andy 03.07.2013 20:32

Los zmusił mnie do przeprowadzenia monitorowania łącza, chodzi o sprawdzenie czy łącze działa stabilnie.

W związku z tym, że na routerze mam linuksa to napisałem sobie taki malutki skrypcik:

Kod:

#!/bin/bash
czas=$(date | sed s:\ :_:g) // Wynik programu date leci do sed'a i zamienia spacje na podkreślniki
ext=".txt" // Zmienna (powinna być stała jak już :P) zawiera rozszerzenie txt
nazwa=$czas$ext // Tworzy zmienną nazwa, która składa się z obecnej daty i rozszerzenia txt
ping wp.pl -c 10 >> $nazwa // przekazanie do zmiennej nazwa tego co wypluwa program ping

Wykonanie tego skryptu z palca działa:
Cytat:

root@bazinga:/mnt/dysk# sh ping.sh
root@bazinga:/mnt/dysk# ls -1
BTSync
FTP
Wed_Jul__3_18:26:31_GMT_2013.txt
Wed_Jul__3_18:27:13_GMT_2013.txt
cups
lost+found
ping.sh
pub
rtorrent
tmp
root@bazinga:/mnt/dysk# cat Wed_Jul__3_18\:27\:13_GMT_2013.txt
PING wp.pl (212.77.100.101): 56 data bytes
64 bytes from 212.77.100.101: seq=0 ttl=249 time=31.069 ms
64 bytes from 212.77.100.101: seq=1 ttl=249 time=33.791 ms
64 bytes from 212.77.100.101: seq=2 ttl=249 time=31.698 ms
64 bytes from 212.77.100.101: seq=3 ttl=249 time=32.279 ms
64 bytes from 212.77.100.101: seq=4 ttl=249 time=33.494 ms
64 bytes from 212.77.100.101: seq=5 ttl=249 time=35.050 ms
64 bytes from 212.77.100.101: seq=6 ttl=249 time=31.024 ms
64 bytes from 212.77.100.101: seq=7 ttl=249 time=31.640 ms
64 bytes from 212.77.100.101: seq=8 ttl=249 time=33.411 ms
64 bytes from 212.77.100.101: seq=9 ttl=249 time=31.303 ms

--- wp.pl ping statistics ---
10 packets transmitted, 10 packets received, 0% packet loss
round-trip min/avg/max = 31.024/32.475/35.050 ms
root@bazinga:/mnt/dysk#
Jednak jak próbuje wywołać z cron'a to nic się nie dzieje :|

Cytat:

root@bazinga:/mnt/dysk# cat /etc/crontabs/root
17 * * * * /mnt/dysk/ping.sh
Skrypt powinien wywołać się 17 minut po każdej godzinie. Wpis utworzyłem 15 po 20 i o 20.17 nic się nie stało. Gdzie leży problem?

Na routerze mam OpenWrt (ATTITUDE ADJUSTMENT (Attitude Adjustment, r33742)) z BusyBox (BusyBox v1.19.4 (2012-10-13 12:06:21 CEST) built-in shell (ash)).


Mam zamiar odpalić ten skrypt raz dziennie. Skrypt ma wygenerować 1 000 000 zapytań ICMP do serwera wp.pl.

sobrus 03.07.2013 20:53

Wpisów dla cron nie zmienia się z palca. AFAIK trzeba to zrobić specjalnym programem.
np "crontab -e"
Inaczej nie zatrybi.

Wyjątkiem jest główny plik /etc/crontab, którego można normalnie edytować.
Możesz też mieć w /etc/ katalogi "cron.daily" "cron.weekly" itd.
Wszystkie skrypty w nich zawarte są automatycznie odpalane.

Oczywiście pisze to w oparciu o debiana i suse, nie wiem jak jest w openwrt.

andy 04.07.2013 05:55

Wiem, że edytuje się w taki sposób. PO prostu nie dało się wyjść z zapisem po wejściu przez crontab -e

Gdy jednak dodam wpis w /etc/crontabs/root i potem odpalę crontab -e to wpis widnieje, więc powinien się wkonać.

sobrus 04.07.2013 07:30

A restartowałeś crona lub system po modyfikacji crontaba?

Z tego co wiem "crontab -e" powoduje również odświeżenie demona po edycji pliku.

pali8 04.07.2013 11:48

Ten program wykonuje się, tylko nie widzisz jego wyjścia - stdout (1)

Dopisz na początku pliku

Kod:

MAILTO=twoj@adres.pl
Albo

Kod:

17 * * * * /mnt/dysk/ping.sh 2>&1 | mail -s "log" twoj@adres.pl
Zapis stdout (1) i stderr (2) do osobnych plików
Kod:

17 * * * * /mnt/dysk/ping.sh 1> stdoutlog 2> stderrorlog
Zapis stdout i stderr do jednego pliku
Kod:

17 * * * * /mnt/dysk/ping.sh &>1 log
Można pisać na terminal, ale to nie jest polecane.

Jak będziesz trenował w interaktywnym bash, to zwróć uwagę że np. zapis 2>&1 jest nieco inaczej rozwiązywany.

andy 04.07.2013 16:33

Cytat:

Napisany przez pali
Ten program wykonuje się, tylko nie widzisz jego wyjścia - stdout (1)

Przeczytaj dokładnie mojego posta raz jeszcze.

pali8 04.07.2013 20:50

a, istotnie nie przeczytałem, bo rozwlekle piszesz :)

Oto rozwiązanie zagadki

Kod:

nazwa=$path$czas$ext
Posługuj się wyjściem tak jak niżej podałem, to będziesz błędy widział.

andy 06.07.2013 10:08

Problem leżał w tym, że problemu nie było. Skrypt pięknie się wykonywał, po prostu nie patrzyłem tam gdzie powinienem :D

Skrypt zapisywał w /root :D Natomiast ja patrzyłem w /mnt/dysk gdzie zlokalizowany jest skrypt.

Udało mi się też zmienić domyślny edytor (vi) na coś bardziej dla ludzi (nano), zrobiłem malutką edycję i tak wygląda finalny job:

Cytat:

root@bazinga:~# cat /etc/crontabs/root
00 7,8,9,10,11,12,13,14,15 * 6 1,2,3,4,5 sh /mnt/dysk/ping.sh
Uruchomi mi ping'a co godzinę (7.00-15.00) od poniedziałku-piątku


Finalny skrypt natomiast wygląda tak :D

Cytat:

#!/bin/bash
czas=$(date | sed s:\ :_:g)
ext=".txt"
nazwa=$czas$ext
ping wp.pl -c 2048 >> $nazwa
Dzięki wszystkim, którzy przyczynili się do znalezienia problemu ;)

andy 06.07.2013 22:09

Oprócz sprawdzenia łącza przez ICMP sprawdzę przez ściąganie plików. Odpalę wgeta na jakimś dużym pliku (iso Debiana np.) i prędkość będę logował do pliku.
Jeżeli łącze będzie niestabilne to będzie widać jak prędkość spada.

No i tak zrobiłem :D

wget
Cytat:

#!/bin/bash
czas=$(date | sed s:\ :_:g)
nazwa="wget___"$czas".txt"
echo "##################################" >> $nazwa
echo "Poczatek skanowania" >> $nazwa
date >> $nazwa
echo "##################################" >> $nazwa
echo "" >> $nazwa
wget 'http://gensho.acc.umu.se/debian-cd/7.1.0/ia64/iso-dvd/debian-7.1.0-ia64-DVD-1.iso' -O /dev/null -c -o /root/$nazwa
echo "" >> $nazwa
echo "##################################" >> $nazwa
echo "Koniec skanowania" >> $nazwa
date >> $nazwa
echo "##################################" >> $nazwa
ping
Cytat:

#!/bin/bash
czas=$(date | sed s:\ :_:g)
nazwa="ping___"$czas".txt"
echo "##################################" >> $nazwa
echo "Poczatek skanowania" >> $nazwa
date >> $nazwa
echo "##################################" >> $nazwa
echo "" >> $nazwa
ping wp.pl -c 2048 >> $nazwa
echo "" >> $nazwa
echo "##################################" >> $nazwa
echo "Koniec skanowania" >> $nazwa
date >> $nazwa
echo "##################################" >> $nazwa
No i finalna konfiguracja dla cron'a:
Cytat:

### PINGOWANIE ################################################## #############
00 7,8,9,10,11,12,13,14,15 8,9,10,11,12,13,14 6 1,2,3,4,5 sh /mnt/dysk/ping.sh
################################################## ############################

### SCIAGANIE PLIKU #######################################
00 01 8,9,10,11,12,13,14 6 1,2,3,4,5,6 sh /mnt/dysk/wget.sh
################################################## #########

Pingowanie w dzień, ściąganie pliku w nocy.

pali8 06.07.2013 22:50

Mówiłem, że działa. Ale dalej działasz na ślepo.

Nie mów herezji o vi. Naucz się obsługiwać. Practical VIM http://it-ebooks.info/book/1038/ Pełna wersja. Dobre. Przystępne.


Nie rób polinglish w nazwach zmiennych. Nie mów mi, że to bez znaczenia, nie mów. Stosuj dowolną konwencję.

Możesz wgetem ściągać nagłówki HTTP. Tak naprawdę to nie wiadomo co mierzysz. Może squida? ;P

A wyniki jak obrobisz? :P Najlepsza rzecz na świecie, następca R: http://pandas.pydata.org/ (sobrus, mocno polecam). Ino w lipcu nie pomogę, bo mnie zaraz nie będzie.

andy 06.07.2013 23:17

Cytat:

Mówiłem, że działa. Ale dalej działasz na ślepo.
Nie nie działam na ślepo, nie nie mówiłeś że działa - nie miałeś pojęcia co jest nie tak. Otóż jak cron wywoływał cron skrypt ping.sh to wywoływał go z /root i tam były zapisywane wyniki.
Jakoś na to nie wpadłeś, tylko zacząłeś znowu pisać smutki...

Cytat:

Nie mów herezji o vi. Naucz się obsługiwać. Practical VIM http://it-ebooks.info/book/1038/ Pełna wersja. Dobre. Przystępne.
Nie mam zamiaru uczyć się obsługi vi bo to dla mnie strasznie niewygodne narzędzie.
Używam nano bo spełnia moje oczekiwania - jest prosty, oraz robi to czego chcę bez długiej nauki - skróty do danych czynności na pokazane na dole.

Cytat:

Nie rób polinglish w nazwach zmiennych. Nie mów mi, że to bez znaczenia, nie mów. Stosuj dowolną konwencję.
Następne zmienne będą miały przedrostek pali.

Cytat:

Możesz wgetem ściągać nagłówki HTTP. Tak naprawdę to nie wiadomo co mierzysz. Może squida? ;P
Gdybyś przynajmniej zerknął na całe polecenie wget'a to byś wiedział, że loguję to co mi wypluwa do pliku, dzięki czemu mam zapis prędkości co 50KB danych. Dzięki temu łatwo widać spadki prędkości.

Cytat:

A wyniki jak obrobisz?
Nie muszę tego robić. Sprawdzę na szybko jak duże są anomalie i jeżeli będą spore to zaraportuje do isp. To jak on je przeanalizuje to jego sprawa, nie moja.

pali8 08.07.2013 22:34

Cytat:

Napisany przez andy (Post 1255359)
Jakoś na to nie wpadłeś, tylko zacząłeś znowu pisać smutki...

Znowu chcesz podwórkowym chamstwem pokryć swoje dyletanctwo?

To będę szczery i na tym zakończymy naszą znajomość.

Napisałeś 800 postów po 7000 znaków o bibliotekach Apple vs. bezpośredni dostęp do pliku a wychodzi na to, że nie potrafisz zapisać pliku!
Jak małpa w różowych szpilkach zapisujesz plik i nie wiedziesz gdzie!

Delikatnie pokazuję ci absolutne podstawy programowania: stderr. Nic! Zero! Uznałem, że polecanie find byłoby złosliwością, ale widzę że przeceniłem, jak zwykle.

Mówię wprost: dopisz ścieżkę do pliku. Nic nie rozumiesz! Nie dopisałeś tej ścieżki tylko w końcu jak małpiszon znalazłeś te pliki! I po raz kolejny wklejasz ten ohydny kod.

Wiesz czemu sobrus nie zauważył twojej cudacznej niezdarności? Bo on tego "kodu" nie przeczytał. Od czegoś takiego zaśmiergną oczy gimnazjaliście. Dostałbyś pałę w gimnazjum za polinglish. Czytałeś kiedykolwiek jakąś książkę o programowaniu? Czego cię uczyli w tej policealnej szkółce niedzielnej? Ty śmiesz nazywać się inżynierem?! Ty jesteś NULL nie inżynier.

A mogłeś powiedzieć że nie rozumiesz wyjaśnień, żadna ujma.

I jeszcze ja naiwny ci literaturę polecam i hit IT: Pandas, to mi coś tam blekoczesz, zamiast zapytać jak tego użyć.

I mierzysz to łącze w arcydurny sposób, żeby jakiemuś adminowi dupę zawracać, żeby przez minutę musiał ze zdumieniem wpatrywać się co to za idiotyzmy dostał!

Nie odzywaj się do mnie nigdy więcej. Możesz tu sobie blekotać co chcesz, nie przeczytam. Jak chcesz mi udowodnić, że mylę się, to posortuj te wyniki i powiedz z jaką wydajnością to zrobiłeś. To jest I rok IT. Jestem dziwnie pewien, że nie masz pojęcia o czym ja mówię.

Bye
PS Bartez, możesz mnie zbanować czy post skasować, ale BŁAGAM!!!! weź mu coś powiedz! Zrób mu jakiś dział dla esów! Przecież to dzieci czytają! Przecież Ty rozumiesz co on tu za bzdety opowiada!

andy 10.07.2013 19:24

Cytat:

Napisany przez pali
Znowu chcesz podwórkowym chamstwem pokryć swoje dyletanctwo?

To będę szczery i na tym zakończymy naszą znajomość.

Dlaczego nie cytujesz całego akapitu?

Cytat:

Napisany przez andy
Nie nie działam na ślepo, nie nie mówiłeś że działa - nie miałeś pojęcia co jest nie tak. Otóż jak cron wywoływał cron skrypt ping.sh to wywoływał go z /root i tam były zapisywane wyniki.
Jakoś na to nie wpadłeś, tylko zacząłeś znowu pisać smutki...

Jak widać wypomniałem Ci tylko, że nie wiedziałeś co jest nie tak. Aż tak trudno się przyznać do błędu?

Cytat:

Napisałeś 800 postów po 7000 znaków o bibliotekach Apple vs. bezpośredni dostęp do pliku a wychodzi na to, że nie potrafisz zapisać pliku!
Jak małpa w różowych szpilkach zapisujesz plik i nie wiedziesz gdzie!
Znowu piszesz kłamstwa. Zapisać do pliku potrafię, wynik zapisał się do niego pięknie. Po prostu nie wziąłem pod uwagę, że wynik leci do /root skąd jest wywoływany skrypt przez cron'a. BA nikt na to nie wpadł ;)

Cytat:

Delikatnie pokazuję ci absolutne podstawy programowania: stderr. Nic! Zero! Uznałem, że polecanie find byłoby złosliwością, ale widzę że przeceniłem, jak zwykle.
Wiesz czego nie lubię u ludzi? Hipokryzji.
Hipokryzję widać w tym cytacie. To tobie powinno się dać podstawy programowania, bo nie wiesz co konkretnie ten skrypt robił - z tego co pisałeś wnioskuję, że albo go nie czytałeś, albo go nie zrozumiałeś.
Jeżeli jedno, albo drugie jest prawdą to nie rozumiem dlaczego przystąpiłeś do dyskusji? Te posty kompletnie NIC nie wniosły.

Cytat:

Mówię wprost: dopisz ścieżkę do pliku. Nic nie rozumiesz! Nie dopisałeś tej ścieżki tylko w końcu jak małpiszon znalazłeś te pliki! I po raz kolejny wklejasz ten ohydny kod.
Po wycięciu dodawania komentarzy dodawanych do pliku tak wygląda skrypt:

Cytat:

#!/bin/bash
[1]czas=$(date | sed s:\ :_:g)
[2]nazwa="wget___"$czas".txt"
[3]wget 'http://gensho.acc.umu.se/debian-cd/7.1.0/ia64/iso-dvd/debian-7.1.0-ia64-DVD-1.iso' -O /dev/null -c -o $nazwa
W którym miejscu jest on ohydny?
1. Do zmiennej czas leci zawartość (+dodatkowe operacje aby usunąć spacje) wywołania programu date.
2. Zmienna nazwa od teraz przechowuje nazwę pliku
3. Uruchomiony zostaje program wget, który rozpoczyna pobieranie obrazu Debiana i jednocześnie do pliku zostaje raportowana prędkość co 50KB. Plik obrazu zostaje zapisany do /dev/null z wiadomej przyczyny.

Na przyszłość. Nie komentuj dyskusji o których masz nikłe pojęcie.

Cytat:

Wiesz czemu sobrus nie zauważył twojej cudacznej niezdarności? Bo on tego "kodu" nie przeczytał. Od czegoś takiego zaśmiergną oczy gimnazjaliście. Dostałbyś pałę w gimnazjum za polinglish. Czytałeś kiedykolwiek jakąś książkę o programowaniu? Czego cię uczyli w tej policealnej szkółce niedzielnej? Ty śmiesz nazywać się inżynierem?! Ty jesteś NULL nie inżynier.
Jeżeli tak faktycznie było to bardzo źle. Jak można się wypowiadać na temat kodu nie czytając go?

Aha, przynajmniej ja mam skończone studia informatyczne :) Do tego szeroka wiedza z zakresu, o którym możesz pomarzyć.
Dlaczego nie pochwalisz się jaki ty kierunek skończyłeś? Wstyd? No bo ja na twoim miejscu bym się wstydził. (Taka malutka riposta)

Dziwne też jest to, że większość twoich odpowiedzi to cytaty z książek, czyżbyś sam nie potrafił nic napisać? :)

Cytat:

I mierzysz to łącze w arcydurny sposób, żeby jakiemuś adminowi dupę zawracać, żeby przez minutę musiał ze zdumieniem wpatrywać się co to za idiotyzmy dostał!
Ja nie mierzę łącza, a sprawdzam jego stabilność. Jest to sposób prosty i nie wymagający super nakładów. Do złapania much nie potrzebuję F16, wystarczy klepka na muchy.

Pingowanie + puszczenie dużego pliku i sprawdzanie z jaką prędkością będzie ściągany pokaże mi na czym stoję.

Cytat:

Nie odzywaj się do mnie nigdy więcej. Możesz tu sobie blekotać co chcesz, nie przeczytam. Jak chcesz mi udowodnić, że mylę się, to posortuj te wyniki i powiedz z jaką wydajnością to zrobiłeś. To jest I rok IT. Jestem dziwnie pewien, że nie masz pojęcia o czym ja mówię.
To ty się więcej nie odzywaj w takim tonie. Jeżeli masz jakieś emocjonalne problemy to idź do lekarza a nie wylewasz swoje żale publicznie jednocześnie w****iając ludzi.

Po drugie, skąd wiesz który to rok skoro nie byłeś nigdy na studiach informatycznych?

Najprostsze przemielenie tych danych, to wrzucenie ich do arkusza kalkulacyjnego, zostawienie dwóch kolumn (prędkość w funkcji odstępów danych pobranych). Na podstawie tego stworzenie wykresu to minuta. Na takim wykresie będzie ładnie widać anomalie, czy uciętą przepustowość.
No ale skąd ty możesz o tym wiedzieć skoro nie ukończyłeś nigdy studiów informatycznych.

@pali pierwszy raz w życiu odgryzłem się komuś na zasadzie porównywania dyplomów, pokazywania że ta druga osoba nie ma wykształcenia z tematu w jakim się wypowiada.
PIERWSZY RAZ. Zawsze starałem się tego nie robić, bo to nie dyplom nas definiuje a wiedza (która u ciebie strasznie kuleje). Niestety zostałem zmuszony przez ciebie do tego.
Mam nadzieje, że cię to czegoś nauczy i przestaniesz być trollem.



Pochwalę się uptimem mojego routerka. Router bez UPSa ;)
root@bazinga:~# uptime
16:42:14 up 29 days, 22:51, load average: 0.00, 0.01, 0.04

M@X 10.07.2013 20:55

Cytat:

Napisany przez andy (Post 1255684)
Pochwalę się uptimem mojego routerka. Router bez UPSa ;)
root@bazinga:~# uptime
16:42:14 up 29 days, 22:51, load average: 0.00, 0.01, 0.04

Jakbym sie chcial chwalic uptime'em mojego to byloby pewnie z pol roku... Tylko po co? Router jest router...

...a bedzie pewnie wiecej, bo sie przymierzam do nowej Kapsuly Czasu...

andy 10.07.2013 21:27

Chwalę się tak przy okazji. Aż dziwne, że przez miesiąc nie miałem chociaż jednej delikatnej przerwy w zasilaniu, oraz nic w nim nie grzebałem na tyle abym musiał mu reboota robić.

@Max śmiało pochwal się uptimem swojego, jeżeli również działa na linuksie :)


Wszystkie czasy w strefie CET. Aktualna godzina: 04:13.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.