scriptje met dynamische bestandsnamen

Pagina: 1
Acties:

  • Whizzer
  • Registratie: November 2000
  • Laatst online: 16-08 21:58
Tja, het klinkt moeilijk, dus daarom leg ik het maar eens uit.

Ik wil per dag via cron een scriptje lopen en dat bestandje met wat logging over ping-statistieken weg schrijft op de harde schijf. Het cron gedeelte lukt wel, maar ik zit in de knoei met het scriptje.

Het scriptje ziet er als volgt uit:
code:
1
2
#!/bin/sh
ping -c 50 <ip-nummer> > /home/logging/ping.log

Het gedonder is nu dus dat hij iedere dag wegschrijft naar ping.log en dat na 1 dag dat bestand dus overschreven wordt.

Wat ik dus graag zou willen is dat de bestandsnaam dan ping-<datum>.log wordt. Dus iets als ping-8-Nov-2001.log...

Ik heb geen idee, wel gezocht, maar hoe ga ik dit oplossen? Lijkt me niet echt moeilijk als je het weet, toch?

Ik ben geweldig.. en bescheiden! En dat siert me...


  • imdos
  • Registratie: Maart 2000
  • Laatst online: 05-08 12:09

imdos

I use FreeNAS and Ubuntu

kijk maar ff naar date. ( man date kom je een eind mee)

pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem


Verwijderd

Je kunt ook 'ping -c 50 <ip-nummer> >> /home/logging/ping.log' doen. Dan wordt het toegevoegd.

  • Sjonny
  • Registratie: Maart 2001
  • Laatst online: 12:03

Sjonny

Fratser

en om je filename goed te krijgen moet je dus `` back quotes gebruiken. zit links boven naast de 1 :)
ping-`date`.log
maar date met een param dat ie de tijd weg laat is wel wat makkelijker ... zie dus dat antwoord van imdos..

The problem is in the part of your brain that handles intelligence.


  • Whizzer
  • Registratie: November 2000
  • Laatst online: 16-08 21:58
Thanx, het is inderdaad inmiddels gelukt, dank jullie..

Beetje dom om niet even in de man van date te kijken, hoe simpel kan het soms zijn...

Rest mij nog 1 klein vraagje en ja, deze keer heb ik wel 'man ping' gedaan en ook nog even gezocht...

De ping onder linux laat, althans bij mij, geen request time outs zien e.d. alleen de tijden van geslaagde packets... Hoe kan ik die dingen wel voor de dag krijgen?? Het zal wel een simpele optie zijn, maar ik zie 'm zo snel niet...

Ik ben geweldig.. en bescheiden! En dat siert me...


Verwijderd

Hmm hier een compleet scrippie:
code:
1
2
3
4
5
6
7
8
9
10
#!/bash/sh
IP="172.0.0.1";
DATE=`date "+%e-%m-%Y"`;
FILENAME="ping.${IP}.${DATE}.log";

ping -c 1 ${IP} 1>&2 2> ${FILENAME}

## Uitleg
# 1>&2 zorg ervoor dat alle goeie uitvoer als error code word behandeld
# 2> ${FILENAME} zorg ervoor dat error code word omgeleid naar ${FILENAME}

je kan dit scrippie gebruiken door hem executable te maken:

$ chmod u+x <filename>

en dan gewoon in een cronjob zetten ;)






su6

  • Whizzer
  • Registratie: November 2000
  • Laatst online: 16-08 21:58
Ik heb hem nu zo:
code:
1
2
#!/bin/sh
ping -c 10 [ip-nummer] > /home/logging/ping-`date +%d-%m-%Y-%T`.log

Dat request time-out enz wil nog niet helemaal lukken, ook niet met behulp van hierboven, dus dat is nog het enige, maar voor de rest werkt het goed.

Thanx ieder

Maar het ping ding mag evt. nog opgelost worden...

Ik ben geweldig.. en bescheiden! En dat siert me...


  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 12:52

odysseus

Debian GNU/Linux Sid

Ik denk dat ping zo'n connection-timeout naar STDERR stuurt in plaats van naar STDOUT. Even een oplossing zoals hierboven al genoemd met 2>&1 zou dan moeten werken.

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


  • Whizzer
  • Registratie: November 2000
  • Laatst online: 16-08 21:58
Misschien heb ik een exotisch iets, maar dit is het resultaat:
code:
1
2
3
4
5
6
7
8
9
10
[root@masjientje dennis]# ping 194.229.56.26 2>&1
PING 194.229.56.26 (194.229.56.26) from xxx.xxx.xxx.xxx : 56(84) bytes of data.

--- 194.229.56.26 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss
[root@whizzer dennis]# ping 194.229.56.26 1>&2
PING 194.229.56.26 (194.229.56.26) from xxx.xxx.xxx.xxx : 56(84) bytes of data.

--- 194.229.56.26 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss

Geen foutmeldingen dus, ook niet als ik het naar een file laat sturen...

Ik ben geweldig.. en bescheiden! En dat siert me...


  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 12:52

odysseus

Debian GNU/Linux Sid

Als je die twee nu combineert gaat het wel werken...doe eens iets als:
code:
1
ping -c 10 127.0.0.1 &> bestandsnaam

of:
code:
1
ping -c 10 127.0.0.1 > bestandsnaam 2>&1

Beide opdrachten doen hetzelfde: ze sturen de de output van kanaal #1 (stdout) en #2 (stderr) naar het bestand 'bestandsnaam'. Wat er in feite gebeurt: je geeft aan dat stdout geredirect moet worden naar het bestand en vervolgens zeg je dat stderr naar stdout moet gaan, dat dus weer doorverwijst naar het bestand. De bovenste notatie is in feite een verkorting van de tweede, ontstaan omdat dit een zo vaak voorkomende combinatie is.

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


  • Whizzer
  • Registratie: November 2000
  • Laatst online: 16-08 21:58
code:
1
2
3
4
5
6
[root@whizzer dennis]# ping -c 10 194.229.56.26 > bestandsnaam 2>&1
[root@whizzer dennis]# more bestandsnaam 
PING 194.229.56.26 (194.229.56.26) from 213.84.87.15 : 56(84) bytes of data.

--- 194.229.56.26 ping statistics ---
10 packets transmitted, 0 packets received, 100% packet loss

En:
code:
1
2
3
4
5
6
[root@whizzer dennis]# ping -c 10 194.229.56.26 &> bestandsnaam
[root@whizzer dennis]# more bestandsnaam 
PING 194.229.56.26 (194.229.56.26) from 213.84.87.15 : 56(84) bytes of data.

--- 194.229.56.26 ping statistics ---
10 packets transmitted, 0 packets received, 100% packet loss

Ben ik nu gek?? Ik wil gewoon mooi de meldingen 'request time-out' enzo zien...

Ik ben geweldig.. en bescheiden! En dat siert me...


  • odysseus
  • Registratie: Augustus 2000
  • Laatst online: 12:52

odysseus

Debian GNU/Linux Sid

Hmm...Bingo! Ik zat me al af te vragen wat er nog mis kon zijn met die pipes, maar daar zit het probleem dus niet. Ping *laat* namelijk helemaal geen time-outs zien...logisch dat je die dan niet in je logs terugziet...

Voorbeeld:
code:
1
2
3
4
5
6
odysseus:/home/odysseus# ping -c 10 192.168.0.23
PING 192.168.0.23 (192.168.0.23): 56 data bytes

--- 192.168.0.23 ping statistics ---
10 packets transmitted, 0 packets received, 100% packet loss
odysseus:/home/odysseus#

Je kunt wel iets meer zichtbaar maken met het programma 'sing', maar veel is het nog niet:
code:
1
2
3
4
5
6
7
odysseus:/home/odysseus# sing -c 10 192.168.0.23
SINGing to 192.168.0.23 (192.168.0.23): 16 data bytes
Ouch!! 192.168.0.30 sings host 192.168.0.23 unreachable!!

--- 192.168.0.23 sing statistics ---
10 packets transmitted, 0 packets received, 100% packet loss
odysseus:/home/odysseus#

De windows/dos ping laat deze meldingen wel zien, dus als je ze echt nodig hebt (waarom eigenlijk?) dan kun je altijd nog ping.exe draaien via dosemu of zo...

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

Pagina: 1