Ping script

B

Bellerophon

Anathema
Hallo!
Ich brauche folgendes:
Ein Script, dass einen bestimmten Rechner anpingt und dann feststellt ob der auch antwortet.
Falls ja soll ein Programm entweder keinen Zugriff mehr aufs Netzwerk haben oder
ja... oder azureus soll pausieren ;)

Code:
ping 191.168.0.23
if [ $? = 0 }
then

else
fi
soweit hab ichs schon gebracht...
er pingt, und fragt ab
0 wird der exitstatus von ping, wenn er eine (oder mehrere) antwort(en) bekommen hat
falls er nicht null ist hat der host nicht geantwortet (der exitstatus wird glaub ich 1)
aber was soll ich jetzt nach then und else schreiben?
gibts ein befehl der einem prozess den Netzwerkzugriff verwehrt?
Brachialisch wäre azureus dann ganz zuzumachen... wie würde dann das aussehen (aber netzwerzugriff sperren wäre mir lieber....)

hat jemand ne idee?
Danke für eure hilfe!
 
Fallses Python auch tut:
Code:
import os
host = "127.0.0.1"
returnvalue = os.system("ping %s" % host)
if(returnvalue == 0):
	bla
else:
	blub
:)
 
ja, das problem ist nicht die struktur, sondern was ich dann anstatt des bla und des blubs schreiben soll :P

Also eine möglichkeit ist das ganze zu und aufzumachen
ungefähr so:
Code:
ping 191.168.0.23
if [ $? = 0 ]
then
killall azureus
else
./azureus
fi
dann stellt sich aber das problem, dass ich überprüfen muss ob azureus schon läuft (ich will das ja nicht 5 mal offen haben), das script soll ja ständig nachfragen.

aber schöner wärs echt wenn man azureus zwar offen lassen könnte, aber ihm den netzzugang verwehren würde!

hat jemand ne idee?
 
Hallo

Der Netztzugang ist ja im Falle dass ping kein Echo bekommt für diese Resource schon gesperrt. ;)

Wie deine Anwendung damit umgeht, ist eine andere Frage, die du in der jeweiligen Doku dazu erfahren kannst.
Sorry, ich kenne azureus nicht und habe auch keine Luste es extra zu installieren und nachzulesen.

Wie du feststellst, ob ein Programm bereits läuft wurde hier schon x-mal besprochen.
ps aux|grep "[a]zureus"
Um deine Anwendung so zu configurieren dass sie bestimmte Ziele auslässt, beschäftige dich mit dieser, oder frag im Forum Anwendungen nochmal nach.

Dein Shell betreffender Teil ist schon ok. so, wenn du es mit ping machen möchtest.
Allerdings würde ich die Ausgabe von ping nach /dev/null schieben und die Option "Quiet output" benutzen.

Gruß Wolfgang
 
also ich hab das jetzt so geschrieben, dass azureus gestartet bzw gestoppt wird, wenn der ping gescheitert bzw erfolgreich war.

sieht jetzt so aus:
Code:
while [ 1=1 ]
do
ping 192.168.0.42 -c 1
if [ $? = 0 ]
then
	echo "Host da, prüfe ob azureus läuft"
	ps aux|grep "[a]zureus"
	if [ $? = 0 ] 
		then	
		echo "schliesse Azureus...."
		killall azureus
		fi
else
	echo "Host down, prüfe ob azureus läuft"
	ps aux|grep "[a]zureus"
	if [ $? = 0 ]
	then
		echo "azureus läuft schon"
	else
		echo " starte azureus"
		cd /home/bellerophon/Programme/azureus
		./azureus &

	fi
fi
sleep 10
done
jetzt hab ich eins, nein zwei probleme:
1) wenn ich das script in der normalen konsole starte, dann kann es azureus nicht killen (weil es keine rootrechte hat) aber wenn ich es in der root konsole starte, dann macht es ein anderes azureus auf (nicht mehr für den benutzer, sondern das vom root, folglich läuft es unter falschem benutzer
wie kann ich also aus der normalen konsole prozesse killen?
2) wenn ich azureus "per hand" von der rootkonsole aus kille, dann bleibt es immernoch offen, der prozess verschwindet zwar aus der liste, aber das fenster bleibt offen! wie kann ich das verhindern?

übrigens: azureus ist ein java programm! weiss nicht ob das irgendwas damit zu tun hat, aber ich denke es könnte sein, also schreib ichs mal hin :P
 
Zuletzt bearbeitet:
[...]
1) wenn ich das script in der normalen konsole starte, dann kann es azureus nicht killen (weil es keine rootrechte hat) aber wenn ich es in der root konsole starte, dann macht es ein anderes azureus auf (nicht mehr für den benutzer, sondern das vom root, folglich läuft es unter falschem benutzer
wie kann ich also aus der normalen konsole prozesse killen? [...]
Schau dir mal die man-Page von "su" an. Da könnte was dabei sein, das die bei deinem 1. Problem hilft.
man su schrieb:
NAME
su - Eine Shell mit veränderter Identität starten

ÜBERSICHT
su [OPTION]... [-] [BENUTZER [ARG]...]

BESCHREIBUNG
Ändere die effektive Benutzer- und Gruppen-ID in die des BENUTZERs.

[...]

-c, --commmand=COMMAND
gib einen einzelnen BEFEHL an die Shell
 
das mit su klappt ja ganz gut...
jetzt muss ich nur azureus richtig beenden können, kann mir da vll jemand helfen?
 

Ähnliche Themen

Queue für copy Script

Hilfe bei Scriptanpassung für VMWare 5.1 HA und USV Shutdown

Ping-Tool

Bash - Problem mit verschachtelten Schleifen

Environment variablen per script verändern

Zurück
Oben