Alle XMinuten Ping im Script

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Alternativende
Beiträge: 2094
Registriert: 07.07.2006 18:32:05

Alle XMinuten Ping im Script

Beitrag von Alternativende » 18.12.2008 11:28:54

Hallo zusammen,
ich habe folgendes Script auf meinem BackupServer im Einsatz.

Code: Alles auswählen

#!/bin/sh
/usr/sbin/openvpn --dev TUN --daemon --config MEINS.ovpn
sleep 20
sudo -u amandabackup /usr/sbin/amdump DailySet1
/usr/sbin/killall /usr/sbin/openvpn

exit 0;
Nun habe ich das Problem das während das Backup ausgeführt wird unter Umständen zu lange kein Traffic durch den VPN Tunnel gehen und er automatisch abgebaut wird. Das möchte ich nun verhindern indem alle 5 Minuten ein Ping an eine handvoll Server hinter dem Tunnel gehen. Wie kann ich das indem Script realisieren?

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Alle XMinuten Ping im Script

Beitrag von cosmac » 18.12.2008 11:47:28

hi,

mit ping :)

Code: Alles auswählen

ping -w $DAUER_DES_BACKUP_IN_SEKUNDEN -i 300 -n $HOST1 > /dev/null &
ping -w $DAUER_DES_BACKUP_IN_SEKUNDEN -i 300 -n $HOST2 > /dev/null &
Beware of programmers who carry screwdrivers.

flurischt

Re: Alle XMinuten Ping im Script

Beitrag von flurischt » 18.12.2008 11:50:47

oder vielleicht so etwas:

Code: Alles auswählen

#!/bin/sh

# host to ping
servername=127.0.0.1

# hier dein backup starten
/usr/sbin/openvpn --dev TUN --daemon --config MEINS.ovpn
sleep 20
sudo -u amandabackup /usr/sbin/amdump DailySet1 &

# solange amdump noch laeuft, pingen (5 mal) und dann 5 min warten...
while [ `ps -ef | grep amdump | wc -l` -ge 2 ]
        do
                ping -c 5 $servername
                sleep 5m
        done

# hier die openvpn verbindung trennen
/usr/sbin/killall /usr/sbin/openvpn

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Alle XMinuten Ping im Script

Beitrag von cosmac » 18.12.2008 12:20:47

o.k., viel besser, ich ziehe meinen Antrag zurück. Aber da gäb's noch einen Spezialbefehl:

Code: Alles auswählen

while killall -0 amdump > /dev/null
        do
        ping ...
Beware of programmers who carry screwdrivers.

omgwtfbbq
Beiträge: 51
Registriert: 17.12.2008 20:57:36

Re: Alle XMinuten Ping im Script

Beitrag von omgwtfbbq » 18.12.2008 12:29:28

http://www.linuxhilfen.org/befehle/crontab.html

Da du das Wort "Backup" erwähnt hast wird entsprechendes Script wohl schon als Cronjob laufen .... einfach den Ping-Befehl hintendran hängen, etwa so ähnlich wie es bereits erwähnt wurde:

Code: Alles auswählen

ping -qi 60*MINUTENINTERVALL HOSTNAME 

Alternativende
Beiträge: 2094
Registriert: 07.07.2006 18:32:05

Re: Alle XMinuten Ping im Script

Beitrag von Alternativende » 18.12.2008 14:11:53

flurischt hat geschrieben:oder vielleicht so etwas:

Code: Alles auswählen

#!/bin/sh

# host to ping
servername=127.0.0.1

# hier dein backup starten
/usr/sbin/openvpn --dev TUN --daemon --config MEINS.ovpn
sleep 20
sudo -u amandabackup /usr/sbin/amdump DailySet1 &

# solange amdump noch laeuft, pingen (5 mal) und dann 5 min warten...
while [ `ps -ef | grep amdump | wc -l` -ge 2 ]
        do
                ping -c 5 $servername
                sleep 5m
        done

# hier die openvpn verbindung trennen
/usr/sbin/killall /usr/sbin/openvpn
Wahnsinn! Vielen Dank! Ich werde testen ob das funktioniert. Klasse. Nur zum Verständnis was macht diese Zeile im einzelnen ?

Code: Alles auswählen

while [ `ps -ef | grep amdump | wc -l` -ge 2 ]

flurischt

Re: Alle XMinuten Ping im Script

Beitrag von flurischt » 18.12.2008 17:17:49

ps -ef --> gibt die aktuellen prozesse zurück
| grep amdump --> sucht in den prozessen nach dem programm amdump
| wc -l --> zählt die zeilen (wenn grösser oder gleich 2 so wurde ein laufender amdump prozess gefunden)

solange also ein prozess von amdump läuft, wird gepingt und 5 min gewartet.

wichtig ist aber auch das & nach dem Backupbefehl:

Code: Alles auswählen

sudo -u amandabackup /usr/sbin/amdump DailySet1 &
(sonst kommt das script erst zur while schlaufe, wenn das backup beendet ist...)

Alternativende
Beiträge: 2094
Registriert: 07.07.2006 18:32:05

Re: Alle XMinuten Ping im Script

Beitrag von Alternativende » 19.12.2008 08:56:32

Wow vielen Dank. Dein Script ist vor 5 Minuten gestartet. Mal sehen morgen Nachmittag sollte es etwa fertig sein. Dann sehen wir hoffentlich ob es klappt.


Danke Danke!

Athlux
Beiträge: 543
Registriert: 16.05.2004 22:15:56

Re: Alle XMinuten Ping im Script

Beitrag von Athlux » 19.12.2008 12:16:37

Nur mal kurz eine Frage.Ist die keepalive Option auf dem OpenVPN Server in der config vorhanden?
Genau diese Option sorgt nämlich dafür das er nicht einfach so trennt.

Code: Alles auswählen

# The keepalive directive causes ping-like
# messages to be sent back and forth over
# the link so that each side knows when
# the other side has gone down.
# Ping every 10 seconds, assume that remote
# peer is down if no ping received during
# a 120 second time period.
keepalive 10 120
Gruß Athlux

Alternativende
Beiträge: 2094
Registriert: 07.07.2006 18:32:05

Re: Alle XMinuten Ping im Script

Beitrag von Alternativende » 21.12.2008 15:06:13

Er beendet das Script nicht automatisch. Der Prozess und die Verbindung sind geschlossen, aber das SCript läuft immer noch. Vielleicht sollte man ein exit 0; ans Ende setzen?

flurischt

Re: Alle XMinuten Ping im Script

Beitrag von flurischt » 21.12.2008 15:09:33

ok,

wie sieht die ausgabe aus, wenn du den befehl

Code: Alles auswählen

ps -ef | grep amdump
in der console eingibst?

Alternativende
Beiträge: 2094
Registriert: 07.07.2006 18:32:05

Re: Alle XMinuten Ping im Script

Beitrag von Alternativende » 22.12.2008 18:27:51

Hallo,
das kann ich im Moment leider nicht testen da ich noch Prbleme mit dem backup selbst habe und derzeit keinen neuen Versuch starten kann, aber was ich sagen kann ist, dass Amanda das Backup beendet hat und planmäßig eine Mail geschrieben hat. Allerdings sehe ich in htop das Script immer noch laufen genauso wie amdump etc..

flurischt

Re: Alle XMinuten Ping im Script

Beitrag von flurischt » 23.12.2008 18:08:16

das script (oder genauer die while schlaufe) endet, sobald kein amdump prozess mehr läuft.
da htop bei dir amdump noch anzeigt, heist das, dass amdump noch läuft und daher wird sich auch das script nicht beenden...

laufen mehrere backups gleichzeitig? falls ja funktioniert dieses script nicht und man müsste es anders lösen. (vielleicht mit dem timeout von openvpn)

Alternativende
Beiträge: 2094
Registriert: 07.07.2006 18:32:05

Re: Alle XMinuten Ping im Script

Beitrag von Alternativende » 31.12.2008 17:58:26

Hallo,
es gab keinen offenen amdump Prozess mehr, aber das Script amdump.sh wurde dennoch ausgeführt. Die VPN Verbindung war beendet aber das Script noch geöffnet ua. auch sleep5.

Kann ich die Ping Ausgabe auch irgendwie in eine Log schreiben? Etwas stimmt mit dem Backup an sich nämlich nicht ganz...

flurischt

Re: Alle XMinuten Ping im Script

Beitrag von flurischt » 01.01.2009 14:54:08

ah, du hast das script amdump.sh genannt! dann ist klar, warum das script immer noch weiterläuft...

grep amdump findet nicht nur den amdump prozess sondern auch dein script (amdump.sh) daher wird die "while" schlaufe nicht verlassen
ändere im script die zeile mit dem "while [ " mal auf folgendes um:

Code: Alles auswählen

while [ `ps -ef | grep "amdump DailySet1" | wc -l` -ge 2 ]
so sollte das script dann korrekt beenden.

ja, du kannst die ausgabe von ping schon in ein file schreiben (das wird dir aber nicht viel sagen)

Code: Alles auswählen

ping -c1 $servername > /tmp/pinglog

Alternativende
Beiträge: 2094
Registriert: 07.07.2006 18:32:05

Re: Alle XMinuten Ping im Script

Beitrag von Alternativende » 02.01.2009 13:38:41

Ich habe das mit dem Log mal eingefügt. Mal sehen ob er im Verlauf des Backups irgendwann Abbrüche hat oder nicht.

Alternativende
Beiträge: 2094
Registriert: 07.07.2006 18:32:05

Re: Alle XMinuten Ping im Script

Beitrag von Alternativende » 07.01.2009 14:39:41

Soweit sieht es wirklich super aus.
Ich habe das Script wie folgt abgeändert:

Code: Alles auswählen

#!/bin/sh

# host to ping
servername=192.168.0.2
servername2=192.168.3.5

# hier dein backup starten
/usr/sbin/openvpn --dev TUN --daemon --config XX.ovpn
sleep 10
/usr/sbin/openvpn --dev TUN --daemon --config BBB.ovpn
sleep 10
sudo -u amandabackup /usr/sbin/amdump DailySet1 &

# solange amdump noch laeuft, pingen (5 mal) und dann 5 min warten...
while [ `ps -ef | grep amdump | wc -l` -ge 2 ]
        do
                ping -c 5 $servername 
                sleep 5m
		  ping -c 5 $servername2
		  sleep 5m	
        done

# hier die openvpn verbindung trennen
/usr/sbin/killall /usr/sbin/openvpn

exit 0;
Sollte doch auch funktionieren oder?

flurischt

Re: Alle XMinuten Ping im Script

Beitrag von flurischt » 07.01.2009 16:04:55

ja, sollte eigentlich auch funktionieren.

ändere aber noch das "grep" auf

Code: Alles auswählen

grep amdump DailySet1
sonst wird das script wieder nicht abbrechen wein dein script "amdump.sh" heisst...

Alternativende
Beiträge: 2094
Registriert: 07.07.2006 18:32:05

Re: Alle XMinuten Ping im Script

Beitrag von Alternativende » 08.01.2009 08:16:19

Ja hatte ich schon geändert. Danke!

Antworten