bash-script soll sich nach bestimmter zeit beenden
bash-script soll sich nach bestimmter zeit beenden
hallo,
ich möchte per tcpdump mein netz checken. dies soll über ein shell script funktionieren
gestartet wird es zu gewissen zeiten per cronjob, dass problem ist das beenden des scripts nach einer bestimmten zeit.
gibt es irgendeine einfache methode um das script nach 10min. zu beenden?
hier der ansatz von meinem script:
#!/bin/bash
tcpdump -nn -i eth2 net 192.168.10.0/24 >> netzscan.log
vg
meta[/i]
ich möchte per tcpdump mein netz checken. dies soll über ein shell script funktionieren
gestartet wird es zu gewissen zeiten per cronjob, dass problem ist das beenden des scripts nach einer bestimmten zeit.
gibt es irgendeine einfache methode um das script nach 10min. zu beenden?
hier der ansatz von meinem script:
#!/bin/bash
tcpdump -nn -i eth2 net 192.168.10.0/24 >> netzscan.log
vg
meta[/i]
- deadeye
- Beiträge: 561
- Registriert: 14.04.2004 15:32:18
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Ukio, rechts hinterm Feld
-
Kontaktdaten:
Du änderst Dein bashscript folgendermaßen ab:
Und rufst das Script dann im Cronjob auch mit einem "&" am Ende auf, sonst hängen die nachfolgenden Cronjobs evtl. noch die 10 Minuten.
Ist ungetestet, müsste aber theorethisch gehen. Allerdings finde ich das jetzt auch nicht so arg viel eleganter als einen zusätzlichen Cronjob, der tcpdump wieder killt.
Und natürlich noch der obligatorische Hinweis, dass Dein Vorhaben evtl. rechtlich nicht ganz sauber ist, wenn Du den Netzverkehr anderer Leute sniffst und auch noch speicherst. Sie sollten zum. Bescheid wissen und ihr Einverständnis geben. Na klar, es wird sicherlich um Dein Heimnetzwerk gehen, wo Papa, Mama und Bruder surfen, aber ich wollts ja nur mal gesagt haben .
Gruß
deadeye
Code: Alles auswählen
#!/bin/bash
tcpdump -nn -i eth2 net 192.168.10.0/24 >> netzscan.log &
sleep 36000
killall tcpdump
Ist ungetestet, müsste aber theorethisch gehen. Allerdings finde ich das jetzt auch nicht so arg viel eleganter als einen zusätzlichen Cronjob, der tcpdump wieder killt.
Und natürlich noch der obligatorische Hinweis, dass Dein Vorhaben evtl. rechtlich nicht ganz sauber ist, wenn Du den Netzverkehr anderer Leute sniffst und auch noch speicherst. Sie sollten zum. Bescheid wissen und ihr Einverständnis geben. Na klar, es wird sicherlich um Dein Heimnetzwerk gehen, wo Papa, Mama und Bruder surfen, aber ich wollts ja nur mal gesagt haben .
Gruß
deadeye
das script wurde per cron gestartet, soweit alles in ordnung
das log file wurde auch angelegt, allerdings war es leer.
habe zuvor per hand getestet ob es funktioniert und das hat es auch.
ich habe dann mit ps aux folgendes gesehen:
warum wird daraus ein zombie, irgendwelche ideen?
thx
das log file wurde auch angelegt, allerdings war es leer.
habe zuvor per hand getestet ob es funktioniert und das hat es auch.
ich habe dann mit ps aux folgendes gesehen:
Code: Alles auswählen
root 15712 0.0 0.2 2692 1208 ? Ss 10:03 0:00 /bin/bash /root/netzscan.sh
root 15714 0.0 0.0 0 0 ? Z 10:03 0:00 [cron] <defunct>
root 15715 0.0 0.1 2000 556 ? S 10:03 0:00 sleep 120
thx
Vielleicht beginnt jemand nach zu strahlen?
Code: Alles auswählen
apt-cache show timeout
@cosmac:
wieder mit dem ergebnis das es funktioniert wenn ich es per hand ausführe ./netzscan.sh
aber wenn es über einen cronjob gestartet wird tut sich nichts, es wird zwar das netzscan.log angelegt, bleibt aber leer...
so sieht der cronjob aus (die zeiten habe ich gestern zum testen genommen):
vielleicht liegt da der hund begraben?
da hast du recht darum hab ich das gleich versucht:je nachdem, was du vorhast, könnte sich tcpdump auch
nach einer bestimmten Anzahl Pakete beenden.
Code: Alles auswählen
#!/bin/bash
nohup tcpdump -c 1000 -nn -i eth2 net 192.168.10.0/24 >> netzscan.log &
aber wenn es über einen cronjob gestartet wird tut sich nichts, es wird zwar das netzscan.log angelegt, bleibt aber leer...
so sieht der cronjob aus (die zeiten habe ich gestern zum testen genommen):
Code: Alles auswählen
30,35,40 21 * * * /root/netzscan.sh
ich konnte das problem lösen
absolute pfad angabe ist des rätsels lösung:
und schon geht das teil. wenn der cron das script startet bekomme ich trotzdem zombie prozesse, aber es wird alles so geloggt wie es sein soll - how ever
cheers
meta
absolute pfad angabe ist des rätsels lösung:
Code: Alles auswählen
nohup /usr/sbin/tcpdump -c 1000 -nn -i eth2 net 192.168.10.0/24 >> netzscan.log &
cheers
meta
andere ansatz:
mit ulimit kannst du für eine laufende shell deine ressourcen einstellen
z.b. veranlasst den kernel, deine shell nach 60 sekunden zu beenden ...
mit ulimit kannst du für eine laufende shell deine ressourcen einstellen
Code: Alles auswählen
ulimit -t 60
gruss pischti
debian stable
debian stable