#bash #linux Próbuję stworzyć skrypt informujący o zmianie na podanej stronie internetowej. Mam problem z instrukcją porównującą dwa pliki. Piszę ją w ten sposób if [ "cmp ${HOME}/${nazwa} ${HOME}/${nazwa}.2`" != "" ] then (wyswietlanie) I dostaję wynik że strona zmienia sie za każdym razem, mimo to ze jak wpisuje ją poza skryptem to nie wyswietla zadnych zmian. Czy ma ktoś jakiś pomysł gdzie popełniam błąd?
@Ausfahrt: albo ci wykop usunął albo sam nie dopisałeś ale brakuje ci jednego ` w warunku. O wiele lepiej i czytelniej dać $( ... ) zamiast ` ... `
A tak swoją drogą nie wiem czy możesz sobie wrzucić w zwykłego ifa porównanie stringa na kilka wierszy do "". No i jak robisz != "" to też zamiast tego o wiele lepiej dać -n ("True if the length of string is
@Kryspin013: to w jaki inny sposób moge porownac te dwa pliki? masz na mysli cały manual czy manual konkretnej komendy? gdzieś sie zagubił ` w tresci mam :)
@Ausfahrt: Nie nie, chodzi mi oto że jak masz string z znakami nowego wiersza to nie wiadomo jak się zachowa porównanie go do pustego stringa w bashu. Druga sprawa, nie do końca pamiętam jak się zachowuje porównanie stringów w bashu. I miałem na myśli manual samego basha w sensie shella. I tak jak pisze @kurio: funkcje skrótu chyba lepiej się nadadzą.
@Kryspin013: @EpicSilence: co dokładnie daje -Nr bo nie moge znalezc w manualu znalazlem coś takiego: diff $plik $plik.2 >/dev/null
co o tym myslicie? Działa ale tylko w przypadku prostych stron. Gdy chce sprawdzić jakąś bardziej rozbudowaną to za każdym razem dostaje informacje o aktualizacji.
@Ausfahrt: r - rekursywnie wykonuje polecenie(rowniez w stosunku do podfolderow, a nie tylko w folderu glownym) N - wykrywa roznice dla plikow ktore nie istnieja w jednym z folderow. Zamiast —brief mozesz uzyc -q - pokazuje czy pliki sie roznia http://man7.org/linux/man-pages/man1/diff.1.html
@Ausfahrt: No nic, nie rozumiem twojego podejścia. Md5sum choćbyś nie wiem jak długie pliki miał, jeśli różnią się chociaż jednym znakiem md5 wygeneruje ci kompletnie inną sumę kontrolną. I zamiast się pierdzielić w porównanie pliku tekstowego linia po linii, który ma powiedzmy 2000 linii robisz tylko porównanie czy są identyczne... Powiedzmy, że jak są a ty chcesz znać różnice to dopiero potem przeszukujesz różnicę w tekście po za warunkiem.
@Kryspin013: ok, dzięki :) juz rozumiem o co chodzi Ja zastanawiam sie tylko jak sprawić zeby mi nie wyrzucał informacji o małych zmianach na stronie. Na przykład jak chce go wykorzystać do śledzenia zmian w tym wpisie to co uruchomienie skryptu dostaje informacje ze nastąpiła zmiana, a na innej, prostej stronie www zadnych zmian skrypt nie znajduje
@Ausfahrt: wtedy faktycznie musisz wejść głębiej. Możesz prosto w bashu robić porównanie po ilości zmian w liniach np diffem i headem lub bardziej zaawansowanie analizować w pythonie różnice.
Próbuję stworzyć skrypt informujący o zmianie na podanej stronie internetowej. Mam problem z instrukcją porównującą dwa pliki. Piszę ją w ten sposób
if [ "cmp ${HOME}/${nazwa} ${HOME}/${nazwa}.2`" != "" ]
then
(wyswietlanie)
I dostaję wynik że strona zmienia sie za każdym razem, mimo to ze jak wpisuje ją poza skryptem to nie wyswietla zadnych zmian. Czy ma ktoś jakiś pomysł gdzie popełniam błąd?
A tak swoją drogą nie wiem czy możesz sobie wrzucić w zwykłego ifa porównanie stringa na kilka wierszy do "". No i jak robisz != "" to też zamiast tego o wiele lepiej dać -n ("True if the length of string is
gdzieś sie zagubił ` w tresci mam :)
znalazlem coś takiego:
diff $plik $plik.2 >/dev/null
co o tym myslicie?
Działa ale tylko w przypadku prostych stron. Gdy chce sprawdzić jakąś bardziej rozbudowaną to za każdym razem dostaje informacje o aktualizacji.
plik1 == plik2
probuje tez tak
plik1 = plik2
w obu przypadkach dostaje komunikat "nie znaleziono polecenia"
PLIK1SUM="$(md5sum plik1 | cut -f1 -d' ')"
PLIK2SUM="$(md5sum plik2 | cut -f1 -d' ')"
if [ "$PLIK1SUM"=="$PLIK2SUM "]; then
...
fi
A jak
Ja zastanawiam sie tylko jak sprawić zeby mi nie wyrzucał informacji o małych zmianach na stronie. Na przykład jak chce go wykorzystać do śledzenia zmian w tym wpisie to co uruchomienie skryptu dostaje informacje ze nastąpiła zmiana, a na innej, prostej stronie www zadnych zmian skrypt nie znajduje
bash: http://bhfsteve.blogspot.co.uk/2013/03/monitoring-web-page-for-changes-using.html