bash scripje

Pagina: 1
Acties:

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Ik draai een mysql data base, en om die te vullen met de nieuwste data draai ik om de zoveel tijd een cronjobje met een klein simpel bash scripje:
code:
1
2
wget -q -O  users.txt  http://site/info.html
mysql < /l2/stats/users

Dus ik haal eerst een pagina op met info die ik in de database wil hebben en daarna gooi ik ze de database in (met scripje /l2/stats/users)
Tot zover geen probleem. Maar als die site down is of er een timeout optreed ofzo dan zit ik met een de gebakken peren.

Ik neem aan dat als de site down is dat de users.txt gewoon wordt overschreven en het resultaat dus een lege file is. Dit wil ik dus tegengaan, maar weet neit goed hoe ik dat moet aanpakken.

...


  • Insanergy
  • Registratie: Juli 2001
  • Laatst online: 29-11-2025
hint: kan je niet gewoon ff testen of de data die wordt weggeschreven ook echt data bevat?

But I thought YOU did the backups...


  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Kan ik niet gewoon iets doen met de file grote van users.txt?
code:
1
2
3
4
wget -q -O users.txt http://site/info.html
if [users.txt meer dan 0 bytes]; then 
mysql < /l2/stats/users
fi

Zo :?

...


  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 16:17

odysseus

Debian GNU/Linux Sid

if [ -z users.txt ]; is wat je zoekt denk ik.

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Ja dat is om te kijken of "operand has zero length".
Maar dan moet ik nog ff een variabele hebben met de inhoud van de users.txt, toch? Zo :?
code:
1
2
3
4
5
wget -q -O users.txt http://site/info.html
$users= cat users.txt
if [-n $users]; then 
mysql < /l2/stats/users
fi

...


Verwijderd

Kopieer dan eerst de users.txt naar een andere filenaam,
dan je wget
dan testen op zero length
als file 0 bytes is kopieer oude file terug
anders importeren die hap

En hoe dat in script gaat mag je zelf uitzoeken >:)

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 14:03

TrailBlazer

Karnemelk FTW

ping eerst die server en indien succesvol verder gaan

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Op zondag 07 april 2002 18:25 schreef janjanjansen het volgende:
als file 0 bytes is
Mijn vraag is dus juist hoe dat moet....

En pingen heeft niet zoveel zin tegen een timeout. Ik kan de time out van wget wel hoger zetten maarja dat heeft neit veel zin als bv apache onderuit ligt.

...


Verwijderd

Op zondag 07 april 2002 18:28 schreef Haranaka het volgende:

[..]

Mijn vraag is dus juist hoe dat moet....
Dat antwoord had odysseus al gegeven

  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 28-07 15:42

RvdH

Uitvinder van RickRAID

Op zondag 07 april 2002 17:44 schreef Haranaka het volgende:
code:
1
2
wget -q -O  users.txt  http://site/info.html
mysql < /l2/stats/users
code:
1
2
wget -q -O  users.txt  http://site/info.html && \
mysql < /l2/stats/users

3 characters.. das alles :)

Verwijderd

Eerst de server pingen heeft weinig zin als de server (het OS) wel "up" is maar de webserver software down is of een probleem heeft.

Ik zou de oude lokale file renamen naar iets met een datum erin ofzo (bij wijze van backup/historie).
Dan de wget doen.
Dan testen of de file aanwezig is / bytesize testen.
Dan pas importeren.

  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 16:17

odysseus

Debian GNU/Linux Sid

Het antwoord van strlen lijkt me het slimst, als je tenminste zeker weet dat het nooit zal gebeuren dat er wel een bestand op de server staat maar dat het leeg is. In dat geval krijg je alsnog een probleem.

Leven is het meervoud van lef | In order to make an apple pie from scratch, you must first create the universe.


Verwijderd

om in een script te testen of een file bestaat
en groter is dan nul bytes doe je;

if [ -s users.txt ] ; then
mysql .............
fi

man test ( test is hetzelfde als if [ )

[ -s file True if file exists and has a size greater than zero. ]
Pagina: 1