Ping Script

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
hackbard4711
Beiträge: 310
Registriert: 15.07.2005 20:15:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Koblenz
Kontaktdaten:

Ping Script

Beitrag von hackbard4711 » 29.06.2006 13:09:03

Hallo, ich stehe gerade vor einem kleinen Problem.

Ich möchte, dass wenn sich ein Benutzer mit einem bestimmten Benutzername an der Shell anmeldet, dass ein bestimmte knoten im Netzwerk gepingt werden. Bei dem Ping soll über eine bestimmte (von 6) Ethernetschnittstelle ein Ping an eine IP-Adresse gesendet werden, die der Benutzer vorher mittels Webinterface angegeben hat.

Beispiel: Der Benutzer gibt im Webinterface in ein Feld die zu Pingende Adresse an und die Schnittstelle über die gepingt werden soll (mittels Radiobutton). Meine möglichkeit wäre jetzt die jeweiligen Informationen mittels PHP in eine Datei zu schreiben. In dieser steht dann quasi die Schnittstelle über die der Ping rausgehen soll und die Zieladresse. Auch möglich wäre es ja den ganzen Ping-Befehl in die Datei zu schreiben. Das einzigste was ich hier jetzt wissen muss ist, wie ich diese Datei dann als Script in der Shell ausführen kann.

Desweitern soll sich der Benutzer nach dem er die Einstellungen über das Webinterface gemacht hat mittels ssh an dem Server anmelden. Allerdings soll er nicht frei auf dem Server rumrennen können. (Sprich nur auch den Ping befehl beschrängt bzw auf das Script.

Ich habe etwas ähnliches mit Minicom gemacht.

Auszug aus der /etc/passwd:

Code: Alles auswählen

schueler:x:1001:1001:,,,:/home/schueler:/usr/bin/minicom
pinger:x:1002:1002:,,,:/home/pinger:/bin/ping 192.168.1.1
Also mit dem Minicom das geht. der Benutzer Schueler meldet sich an, Minicom geht auf und wenn der Benutzer Minicom beendet wird die ssh-sitzung sofort beendet.

Bei dem User Pinger kann ich mich anmelden und bekomme mit der IP in der /etc/passwd angezeigt

Code: Alles auswählen

 keine Shell 
Wenn ich die IP weglasse, bekomme ich nur die Infos angezeigt wie ich den ping-Befehl zu benutzen habe.

Code: Alles auswählen

remoteserver:/# su pinger
Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]
            [-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
            [-M mtu discovery hint] [-S sndbuf]
            [ -T timestamp option ] [ -Q tos ] [hop1 ...] destination
remoteserver:/#
Muss das jetzt irgendwie hinbekommen das der da nen ping macht aber weis nicht wie.

Hoffe hab das halbwegs verständlich erklärt. Wenn nicht könnt ihr auch gerne noch mal fragen.

Danke schon mal für eure Hilfe.
Never touch a running System ! ! !
________
MFG

hacki

r2k
Beiträge: 99
Registriert: 18.09.2004 12:05:02

Beitrag von r2k » 29.06.2006 14:13:54

Hallo du
ich würde das etwa so machen (Achtung Basellösung):

Code: Alles auswählen

pinger:x:1002:1002:,,,:/home/pinger:/bin/pingshell
und die /bin/pingshell enhält:

Code: Alles auswählen

#!/bin/bash
ping -c4 192.168.1.1
exit
Gruess
r2k

Benutzeravatar
hackbard4711
Beiträge: 310
Registriert: 15.07.2005 20:15:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Koblenz
Kontaktdaten:

Beitrag von hackbard4711 » 29.06.2006 14:32:36

Danke erst mal. Hab das jetzt genau so gemacht wie du gesagt hast:

Code: Alles auswählen

remoteserver:/# su pinger
Keine Shell
remoteserver:/#
Irgendwie will das nicht :(
Never touch a running System ! ! !
________
MFG

hacki

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 29.06.2006 14:44:48

Das Problem duerfte darin liegen, dass deine pingshell nicht in /etc/shells enthalten ist. In dieser Datei ist eine Liste aller als gueltig erachteten Shells zu finden. Du koenntest testweise deine pingshell mal dort eintragen.

Benutzeravatar
cpeine
Beiträge: 170
Registriert: 13.08.2003 15:16:22

Beitrag von cpeine » 29.06.2006 14:45:40

Hallo,

wenn du deine eigene shell 'basteln' willst, solltest du zumindest basisch c Kenntnisse besitzen, auf die schnelle hab ich diese Seite gefunden.
Als minimales Shell beispiel ist minishell recht hilfreich, den Quelltext gibt es hier

aber warum nimmst du nicht eine standart shell, lässt den ping als script beim anmelden laufen, wartest auf das beenden und loggst den user wieder aus?
Avoid the Gates of Hell, use Linux!

Benutzeravatar
hackbard4711
Beiträge: 310
Registriert: 15.07.2005 20:15:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Koblenz
Kontaktdaten:

Beitrag von hackbard4711 » 29.06.2006 14:52:29

jo klar wenn du mir sagst wie! Probier aber auch gerade mal das von nepos
Never touch a running System ! ! !
________
MFG

hacki

Benutzeravatar
hackbard4711
Beiträge: 310
Registriert: 15.07.2005 20:15:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Koblenz
Kontaktdaten:

Beitrag von hackbard4711 » 29.06.2006 14:56:33

Klappt aber auch nicht mit dem Eintrag. Immernoch die selbe Meldung!
Never touch a running System ! ! !
________
MFG

hacki

Benutzeravatar
herrchen
Beiträge: 3257
Registriert: 15.08.2005 20:45:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von herrchen » 29.06.2006 14:58:35

hackbard4711 hat geschrieben:jo klar wenn du mir sagst wie!
wie wäre es, wenn du kurz beschreibst, wozu das alles gut sein soll?
ich kann mir darauf gar keinen reim machen.
vielleicht gibt es eine elegantere lösung.

herrchen

Benutzeravatar
herrchen
Beiträge: 3257
Registriert: 15.08.2005 20:45:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von herrchen » 29.06.2006 14:59:44

hackbard4711 hat geschrieben:Klappt aber auch nicht mit dem Eintrag. Immernoch die selbe Meldung!
ist das script ausführbar?

herrchen

Benutzeravatar
hackbard4711
Beiträge: 310
Registriert: 15.07.2005 20:15:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Koblenz
Kontaktdaten:

Beitrag von hackbard4711 » 29.06.2006 15:09:44

Das ganze ist für ein Webinterface über das man Router konfigurieren kann. und über einen java ssh client kann man halt bzw soll man halt die router etc pingen können. aber es geht jetzt. hab leider die falsche Berechtigung drauf gehabt. ;) Danke noch mal
Never touch a running System ! ! !
________
MFG

hacki

Benutzeravatar
hackbard4711
Beiträge: 310
Registriert: 15.07.2005 20:15:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Koblenz
Kontaktdaten:

Beitrag von hackbard4711 » 29.06.2006 16:41:19

Mh na sowas eben gings einwandfrei und jetzt macht der das hier:

Code: Alles auswählen

remoteserver:~# su pinger1
ping: icmp open socket: Operation not permitted
remoteserver:~#
Einer eine Idee woran das liegt?

Der erlaubt es irgendwie nur noch root zu pingen! Wieso?
Never touch a running System ! ! !
________
MFG

hacki

Benutzeravatar
herrchen
Beiträge: 3257
Registriert: 15.08.2005 20:45:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von herrchen » 29.06.2006 16:48:09

hackbard4711 hat geschrieben: Der erlaubt es irgendwie nur noch root zu pingen! Wieso?
das SUID bit ist nicht gesetzt für "/bin/ping".
da hast du wohl rumgespielt ...

herrchen

Benutzeravatar
hackbard4711
Beiträge: 310
Registriert: 15.07.2005 20:15:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Koblenz
Kontaktdaten:

Beitrag von hackbard4711 » 29.06.2006 16:49:34

Möglich. Wäre nett wenn du mir sagst wo ich das setze!

Danke
Never touch a running System ! ! !
________
MFG

hacki

Benutzeravatar
herrchen
Beiträge: 3257
Registriert: 15.08.2005 20:45:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von herrchen » 29.06.2006 16:53:52

hackbard4711 hat geschrieben:Wäre nett wenn du mir sagst wo ich das setze!
was ist los? ist google down?

http://www.google.de/search?hl=de&q=sui ... uche&meta=

herrchen

Benutzeravatar
hackbard4711
Beiträge: 310
Registriert: 15.07.2005 20:15:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Koblenz
Kontaktdaten:

Beitrag von hackbard4711 » 03.07.2006 19:28:52

So. Das Pingen funktioniert jetzt soweit. Allerdings schreibe ich die Dateien für die Shell immer mit einem PHP-Script. Mein Problem ist jetzt das die Datei der Benutzergruppe WWW-Data gehört und dem Benutzer WWW-Data. Allerdings kann ich mich damit nicht mehr auf der shell einloggen.

Meine Frage: Wie bekomme ich es hin das der Benutzer Pinger das ganze trotzdem noch ausführen kann, ohne, dass ich jedesmal auf der console den owner ändern muss?

Hab den Benutzer auch der Gruppe WWW-Data hinzugefügt aber das klappt leider nicht :(

Wäre dankbar für weitere Hilfe
Never touch a running System ! ! !
________
MFG

hacki

Antworten