Thread View: pl.comp.os.linux.programowanie
10 messages
10 total messages
Started by Dylon
Thu, 23 Jun 2011 10:39
Skrypt w bash i problem z if :)
Author: Dylon
Date: Thu, 23 Jun 2011 10:39
Date: Thu, 23 Jun 2011 10:39
38 lines
2019 bytes
2019 bytes
Witam. Pewnie z politowaniem się uśmiechniecie :) ale mam problem z częścią skryptu w bashu (a raczej czystym sh) Potrzebuję ściągnąć plik wget --timeout=120 --timestamping http://serwer/plik i w przypadku gdy z różnych powodów plik nie zostanie pobrany muszę wykonać kilka rzeczy. Próbowałem z if [-e plik ].. ale problemem jest to że: 1. plik musi być obecny bo wget sprawdza czy nastąpiła zmiana w dacie i ściąga tylko nowszy (aby niepotrzebnie nie pracować na starym pliku) 2. jeśli skasuję plik to wget mi go ściągnie niezależnie czy to nowy czy stary... Myślałem też aby się poratować sygnałem błędu z wget-a i wrzucić go do if-a, ale to chyba tak łatwo się nie da :( Ogólna zasada skryptu: - ściągnij plik z serwera - jeśli jest nowszy to wykonaj na nim kilka działań - jeśli nie - zrób coś innego Jeszcze mi łazi po głowie aby zawsze ściągać plik i porównać go z istniejącym w taki sposób jak to robi wget ale chyba przy ściągnięciu pliku mi się daty ustawią na inne niż oryginalnie na serwerze ? Poratujcie mnie proszę jakąś podpowiedzią :) Pozdrawiam -- Maciej Dylski "[...]Licznik Millera jest lepszym detektorem promieniowania i zuzywa o wiele mniej siana...[...]"
Re: Skrypt w bash i problem z if :)
Author: MaRc
Date: Thu, 23 Jun 2011 12:00
Date: Thu, 23 Jun 2011 12:00
22 lines
1727 bytes
1727 bytes
W dniu 23.06.2011 12:39, Dylon pisze: > Jeszcze mi łazi po głowie aby zawsze ściągać plik i porównać go z > istniejącym w taki sposób jak to robi wget ale chyba przy ściągnięciu > pliku mi się daty ustawią na inne niż oryginalnie na serwerze ? próbowałeś wykonać stat na pliku? #v+ ~ $ stat .nanorc Plik: `.nanorc' rozmiar: 1143 bloków: 8 bloki I/O: 4096 zwykły plik Urządzenie: fb02h/64258d inody: 9699346 dowiązań: 1 Dostęp: (0644/-rw-r--r--) Uid: ( 1000/ marcin) Gid: ( 1001/ marcin) Dostęp: 2011-06-22 15:01:11.416000010 +0200 Modyfikacja: 2011-01-22 10:33:05.000000000 +0100 Zmiana: 2011-06-07 21:35:06.698000001 +0200 Utworzenie: - #v- dodatkowo możesz generować sobie sumy kontrolne plików, i je porównywać. -- MaRc
Re: Skrypt w bash i problem z if :)
Author: mvoicem
Date: Thu, 23 Jun 2011 12:29
Date: Thu, 23 Jun 2011 12:29
13 lines
1558 bytes
1558 bytes
(23.06.2011 12:39), Dylon wrote: > Myślałem też aby się poratować sygnałem błędu z wget-a i wrzucić go do > if-a, ale to chyba tak łatwo się nie da:( > Niestety - nie da się. Kiedyś wyczytałem że zwracanie rezultatu przez wget jest w planach, chyba nawet było w gałęzi rozwojowej, ale nie wiem na czym się skończyło, trzebaby zajrzeć. Możnaby spróbować jakiegoś zamienniga wgeta (curl, coś jeszcze?) może któryś z nich zwraca kody błedów. p. m.
Re: Skrypt w bash i problem z if :)
Author: michal
Date: Thu, 30 Jun 2011 08:09
Date: Thu, 30 Jun 2011 08:09
17 lines
1692 bytes
1692 bytes
mvoicem <mvoicem@gmail.com> wrote: > (23.06.2011 12:39), Dylon wrote: >> Myślałem też aby się poratować sygnałem błędu z wget-a i wrzucić go do >> if-a, ale to chyba tak łatwo się nie da:( >> > > Niestety - nie da się. Kiedyś wyczytałem że zwracanie rezultatu przez > wget jest w planach, chyba nawet było w gałęzi rozwojowej, ale nie wiem > na czym się skończyło, trzebaby zajrzeć. 'man lftp' i tam na temat 'status' i pokrewne. Takoż komenda 'mirror'. 'lftp' potrafi użyć różnych protokołów, a nie tylko ftp. Nie jest jasne z oryginalnego opisu co to właściwie ma znaczyć, że "coś poszło źle". Michał
Re: Skrypt w bash i problem z if :)
Author: mvoicem
Date: Thu, 30 Jun 2011 10:16
Date: Thu, 30 Jun 2011 10:16
21 lines
2028 bytes
2028 bytes
(30.06.2011 10:09), michal@gortel.phys.ualberta.ca wrote: > mvoicem<mvoicem@gmail.com> wrote: >> (23.06.2011 12:39), Dylon wrote: >>> Myślałem też aby się poratować sygnałem błędu z wget-a i wrzucić go do >>> if-a, ale to chyba tak łatwo się nie da:( >>> >> >> Niestety - nie da się. Kiedyś wyczytałem że zwracanie rezultatu przez >> wget jest w planach, chyba nawet było w gałęzi rozwojowej, ale nie wiem >> na czym się skończyło, trzebaby zajrzeć. > > 'man lftp' i tam na temat 'status' i pokrewne. Takoż komenda 'mirror'. > 'lftp' potrafi użyć różnych protokołów, a nie tylko ftp. > > Nie jest jasne z oryginalnego opisu co to właściwie ma znaczyć, że "coś > poszło źle". Myślę że co najmniej przy connection timeout wget (czy coś) mogłoby zwracać "jest źle". A także (jako opcja?) , w przypadku 40x lub 50x. p. m.
Re: Skrypt w bash i problem z if :)
Author: Tomek Kańka
Date: Thu, 30 Jun 2011 13:35
Date: Thu, 30 Jun 2011 13:35
49 lines
2339 bytes
2339 bytes
mvoicem <mvoicem@gmail.com> napisał(a)
> (23.06.2011 12:39), Dylon wrote:
>> Myślałem też aby się poratować sygnałem błędu z wget-a i wrzucić go do
>> if-a, ale to chyba tak łatwo się nie da:(
>>
>
> Niestety - nie da się. Kiedyś wyczytałem że zwracanie rezultatu przez
> wget jest w planach, chyba nawet było w gałęzi rozwojowej, ale nie wiem
> na czym się skończyło, trzebaby zajrzeć.
>
>
"Moj" wget ma w man coś takiego:
EXIT STATUS
Wget may return one of several error codes if it encounters
problems.
0 No problems occurred.
1 Generic error code.
2 Parse error---for instance, when parsing command-line options, the
.wgetrc or .netrc...
3 File I/O error.
4 Network failure.
5 SSL verification failure.
6 Username/password authentication failure.
7 Protocol errors.
8 Server issued an error response.
With the exceptions of 0 and 1, the lower-numbered exit codes take
precedence over higher-numbered ones, when multiple types of errors are
encountered.
In versions of Wget prior to 1.12, Wget's exit status tended to be
unhelpful and inconsistent. Recursive downloads would virtually always
return 0 (success), regardless of any issues encountered, and non-
recursive fetches only returned the status corresponding to the most
recently-attempted download.
--
Tomek
Re: Skrypt w bash i problem z if :)
Author: mvoicem
Date: Thu, 30 Jun 2011 14:38
Date: Thu, 30 Jun 2011 14:38
18 lines
1726 bytes
1726 bytes
(30.06.2011 15:35), Tomek Kańka wrote: > mvoicem<mvoicem@gmail.com> napisał(a) >> (23.06.2011 12:39), Dylon wrote: >>> Myślałem też aby się poratować sygnałem błędu z wget-a i wrzucić go do >>> if-a, ale to chyba tak łatwo się nie da:( >>> >> >> Niestety - nie da się. Kiedyś wyczytałem że zwracanie rezultatu przez >> wget jest w planach, chyba nawet było w gałęzi rozwojowej, ale nie wiem >> na czym się skończyło, trzebaby zajrzeć. >> >> > > "Moj" wget ma w man coś takiego: O, w końcu coś z tym zrobili. Fajnie. p. m.
Re: Skrypt w bash i problem z if :)
Author: michal
Date: Fri, 01 Jul 2011 06:58
Date: Fri, 01 Jul 2011 06:58
26 lines
1972 bytes
1972 bytes
mvoicem <mvoicem@gmail.com> wrote:
>>
>> Nie jest jasne z oryginalnego opisu co to właściwie ma znaczyć, że "coś
>> poszło źle".
>
> Myślę że co najmniej przy connection timeout wget (czy coś) mogłoby
> zwracać "jest źle". A także (jako opcja?) , w przypadku 40x lub 50x.
Nie wiem co to jest "40x lub 50x" ale wget zwraca - z tą uwagą, że "In
versions of Wget prior to 1.12, Wget's exit status tended to be
unhelpful and inconsistent". Innymi słowy
if wget <cośtam> ... ; then
# tutaj jak wszystko dobrze
......
else
# mamy kłopoty
......
fi
A jak ktoś chce bardziej detalicznie no to trzeba popatrzeć na wartość $?.
Sugerowałem w zamian lftp bo to narzędzie bardziej elastyczne i
konsystentne.
Michał
Re: Skrypt w bash i problem z if :)
Author: Dylon
Date: Sun, 03 Jul 2011 22:23
Date: Sun, 03 Jul 2011 22:23
26 lines
1549 bytes
1549 bytes
Dnia Thu, 23 Jun 2011 10:39:00 +0000, Dylon napisał(a):
> Poratujcie mnie proszę jakąś podpowiedzią :)
Dziękuję serdecznie za sugestie.
Na razie poradziłem sobie trochę topornie (ale działa :) )
wget --timeout=120 --timestamping http://serwer/plik 2>test
TESTY=`grep "zapisano"<./test|awk '{print $1}'`
if [ -n "$TESTY" ];
...
Z całego komunikatu wyjścia interesuje mnie czy wystąpi tam linijka z
"bez pobierania" oraz zawężam to do pierwszego słowa bo cała linijka ze
znakami specjalnymi rozwala ifa.
lftp chyba nie ma (albo mi umknęło) opcji sprawdzania (czy na serwerze
jest nowszy) istniejącego pliku.
Pozdrawiam
--
Maciej Dylski
"[...]Licznik Millera jest lepszym detektorem promieniowania
i zuzywa o wiele mniej siana...[...]"
Re: Skrypt w bash i problem z if :)
Author: michal
Date: Mon, 04 Jul 2011 06:06
Date: Mon, 04 Jul 2011 06:06
25 lines
1795 bytes
1795 bytes
Dylon <dylon@unknown.pl> wrote:
>
> lftp chyba nie ma (albo mi umknęło) opcji sprawdzania (czy na serwerze
> jest nowszy) istniejącego pliku.
Z 'man lftp'
....
lftp has builtin mirror which can download or update a whole directory
tree. There is also reverse mirror (mirror -R) which uploads or updates
a directory tree on server. Mirror can also synchronize directories
between two remote servers, using FXP if available.
....
$ lftp
lftp :~> help mirror
Usage: mirror [OPTS] [remote [local]]
....
--ignore-time ignore time when deciding whether to download
-n, --only-newer download only newer files (-c won't work)
....
-N, --newer-than=SPEC download only files newer than specified time
....
Michał
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads