Zwei Befehle nacheinander über inet.d?

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
mitscherdinger
Beiträge: 250
Registriert: 08.02.2006 00:57:42

Zwei Befehle nacheinander über inet.d?

Beitrag von mitscherdinger » 23.01.2008 18:22:23

Hi!

Habe mir gerade einen Rechner nur zum Scannen eingerichtet, der über das Netzwerk angesprochen wird. Wie ein Teil von Euch vielleicht weiß, muss saned über's Netzwerk mit dem inet-Dämon gestartet werden. Ich habe also einen entsprechenden Eintrag in die inetd.conf eingetragen - tut auch alles!
Nun wäre es schön, wenn der Computer gleich runterfährt, wenn man mit Scannen fertig ist - sprich: Ist saned beendet, wird halt aufgerufen und der Rechner fährt runter. Geschickt, weil dann zum runterfahren nicht nochmal eingeloggt werden muss. Das spart Tastatur und Bildschirm.

Nun, an der Konsole führt man einen Befehl nach dem Befehl mit "&&" zwischen den beiden aus. Bei inetd.conf geht das anscheinend nicht. Also - zumindest habe ich's mal mit

Code: Alles auswählen

sane-port       stream  tcp     nowait  saned.saned     /usr/sbin/saned&&/sbin/halt   saned
und danach mit

Code: Alles auswählen

sane-port       stream  tcp     nowait  saned.saned     /usr/sbin/saned&&"sudo /sbin/halt"   saned
versucht. (sudo war entsprechend konfiguriert.) Aber nach Benutzung des Scanners fährt der Rechner nicht runter. Ich vermute also, dass man den "&&"-Trick in der inetd.conf nicht anwenden kann. Kann aber auch sein, dass man trotz Eintrag in /etc/sudoers als Benutzer saned halt nicht ausführen darf, weil saned kein vollwertiger User ist.

Wie auch immer - bestimmt kann man irgendwie eine ganze Latte Befehle über den inet-Dämon starten, allerdings weiß ich nicht wie... :?

Vielen Dank für jede Hilfe!

Mitsch

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

Beitrag von cosmac » 23.01.2008 19:14:27

hi,

die &&-Konstruktion geht im inetd.conf wirklich nicht.
Probier mal, die beiden Befehle in ein Script zu packen:

Code: Alles auswählen

#!/bin/sh
saned
sudo /sbin/halt
das kopierst du z.B. nach /usr/local/bin/scan, machst
es ausführbar und schreibst es in die inetd.conf:

Code: Alles auswählen

sane-port   stream  tcp   nowait  saned.saned   /usr/local/bin/scan   scan
Wenn shutdown über sudo tatsächlich nicht geht, könntest
du zwei Einträge in der inetd.conf machen, wobei /sbin/halt
als root ausgeführt wird:

Code: Alles auswählen

sane-port   stream  tcp   nowait  saned.saned   /usr/bin/saned   saned
saft   stream  tcp   nowait  root   /sbin/halt  halt
vom Client aus kannst du dann den Server so runterfahren

Code: Alles auswählen

netcat server saft
und evt. den Scan- und den Halt-Befehl auf dem Client in
einem Script zusammenfassen.

Der Port saft ist natürlich eigentlich für was anderes verplant,
aber der Name passt so gut und wer braucht schon "Simple
Asynchronous File Transfer"
Beware of programmers who carry screwdrivers.

mitscherdinger
Beiträge: 250
Registriert: 08.02.2006 00:57:42

Beitrag von mitscherdinger » 24.01.2008 09:13:24

cosmac hat geschrieben: die &&-Konstruktion geht im inetd.conf wirklich nicht.
Probier mal, die beiden Befehle in ein Script zu packen:

Code: Alles auswählen

#!/bin/sh
saned
sudo /sbin/halt
das kopierst du z.B. nach /usr/local/bin/scan, machst
es ausführbar und schreibst es in die inetd.conf:

Code: Alles auswählen

sane-port   stream  tcp   nowait  saned.saned   /usr/local/bin/scan   scan
Das klappt perfekt!
Vielen Dank für die schnelle Antwort!
Die Idee mit dem Script hatte ich eigentlich auch, aber das blöde war, dass ich auch hier versucht hatte, mit "&&" zu arbeiten - was nicht funktionierte. Irgendwie hatte ich nicht damit gerechnet, dass die bash das Script Zeile für Zeile nacheinander abarbeitet. Schon wieder was gelernt. :D
Jubelfreu!

Mitsch

Antworten