Hallo, LC!
Ich wollte heute eine Art “Dongle-Funktionalität” unter Debian (mit Hotplug und einem USB-Stick) skripten.
Kurz erklärt soll das Ding folgendes machen: Wird der Stick mit einer bestimmten Datei gesteckt, soll auf tty 12 eine root-shell aufgehen (funktioniert jetzt auch alles wunderbar) und wenn der USB-Stick abgesteckt wird, soll die Shell auf tty 12 natürlich zwecks Sicherheit auch wieder gekillt werden.
Mein Problem ist nun: Welche Shell muß ich genau killen? Einfach mit ps, grep und Konsorten nach tty 12 und bash etc. zu suchen um die PID zu kriegen erscheint mir persönlich wenig sicher.
Kriegt man, wenn man die Shell mit dem open-Kommando ausführt irgendwie die PID der neu gestarteten Shell zurück? Die MAN-Pages zur Bash schweigen sich da eher drüber aus, das was ich gefunden habe bezieht sich nur auf Parent-PIDs und PIDs für Prozesse, die in den Hintergrund geschaltet werden (“&”-Operator).
Der genaue Aufruf von open sieht bei mir so aus:
open -c 12 -s — /bin/bash
Und genau die PID der aufgerufenen bash interessiert mich brennend ;-)
Fällt euch da etwas dazu ein?
Grüße,
Dominik
Hmm. Das kam einen Tag zu spät ;-)
Trotzdem danke, habs jetzt anderweitig gelöst.
Für alle, die sowas nochmal irgendwie brauchen können hier eine Kurzanleitung:
Prinzipiell weiß man, welche Umgebungsvariablen beim Aufruf der bash mit open gesetzt sind, so z.B. die Variable “DEVICE”; der Wert dieser Variablen ist zu diesem Zeitpunkt eindeutig. Ergo muß man “nur” alle PIDs im /proc-Dateisystem durchsuchen und die PIDs finden, die als exe-Link auf die Bash zeigen und in der Datei “environ” die gesuchte Umgebungsvariable gesetzt haben (erfordert natürlich root-Rechte).
ciao,
Dominik