Linux Systembefehle mit screen im Hintergrund ausführen
Auf NerdsHeaven.de präsentieren wir dir starke Deals & Angebote im Bereich Technik und Gadgets. Installiere dir jetzt unsere Android oder iOS App, um keine Knaller-Angebote mehr zu verpassen.
OS und Programm:
– Linux bzw. unixoid
– Screen, ssh bzw. alles was ihr mit screen noch so laufen lassen wollt
Problem:
Sagen wir mal ihr wollt ein Alias haben der einen Screen im Hintergrund öffnet und anschließend darin transparent einen anderen Befehl (in unserem Bsp. was mit ssh) absetzt, d.h. auch ausführt. Der Spaß ist nicht so einfach wie man anfänglich glauben mag, zumindest stand meine Wenigkeit erstmal da wie Max im Blaubeerfeld.
Lösung:
Unser Alias ssh-wurst soll einen Screen im Hintergrund öffnen und darin eine ssh-Session zu einem entfernten Rechner 192.168.100.100 aufbauen.
Dazu müssen wir screen sagen, dass eine neue Session aufgebaut werden soll, aber diese nicht „attached“ werden soll. Das bewerkstelligen wir durch die Optionen -d -m. Nachdem das erfolgreich erledigt wurde (&&) soll screen einen ssh-Session zu 192.168.100.100 mit dem Nutzer BoWoMiSe und den entsprechenden Public-Key key aufbauen. Dazu sendet screen den entsprechenden Befehl an die im „detached mode“ laufende Session (-p 0 -X stuff).
Auf stuff folgt der gewünschte Befehl, umfasst von $’…n‘. Wichtig hierbei ist die Escapesequenz n am Ende, was dazu dient den übermittelten Befehl auch abzusetzen (vgl. Escapesequenzen vs. grep und co).
Der zusammengesetze Befehl würde wie folgt lauten:
alias ssh-wurst=“screen -d -m && screen -p 0 -X stuff $’ssh [email protected] -i ~/.ssh/keyn'“
Mir ist bewusst, dass dieses Beispiel nicht unbedingt sinnvoll sein mag, aber wenn nun noch mit ssh-Fowarding gearbeitet wird, dann sieht es schon anders aus Der Einsatz in Start-Up Scripten wäre natürlich auch noch zu erwähnen.