Bash-Skript verwenden, um Befehle an den SSH-Client zu senden?

Bash-Skript verwenden, um Befehle an den SSH-Client zu senden?

Guten Tag allerseits,

<enter>~CMir ist vor Kurzem aufgefallen, dass ich mithilfe einer Escape-Sequenz wie dieser über eine Remote-SSH-Verbindung Befehle an meine lokale Arbeitsstation zurücksenden kann :

[root@host ~]# 
[root@host ~]# 
ssh> !ip ad

Nun würde ich dies gerne mit einem Bash-Skript tun können, um automatisch Befehle auf meiner lokalen Workstation auszuführen oder andere Dinge zu tun, aber ich konnte keine Möglichkeit finden, Befehle programmgesteuert an diese Shell zurückzusenden, und habe auch niemanden gefunden, der danach gefragt/es versucht hat. Um es klarzustellen: Ich versuche nicht, Befehle über SSH AN einen Remote-Server zu senden - ich versuche, Befehle VON einer SSH-Verbindung über den Client (wie oben abgebildet) ZURÜCK an meine Workstation zu senden.

Wenn jemand Vorschläge hat oder weiß, wie das geht, wäre ich für Ihre Hilfe sehr dankbar. Danke!

Antwort1

Ich denke, das ist nicht möglich, weil das Escape-Zeichen nie bei Bash auf dem Remote-System ankommt. Es wird von Ihrem lokalen SSH-Client abgefangen, bevor es von der Remote-Bash überhaupt gesetzt werden kann.

Ich weiß, dass es nicht das ist, was Sie wollten, und je nach Ihrer Situation vielleicht auch nicht umsetzbar ist, aber mit einer alternativen Lösung können Sie Ihr Ziel möglicherweise erreichen:

Führen Sie den Befehl auf Ihrem lokalen Computer aus, indem Sie per SSH vom Remotecomputer darauf zugreifen:

[root@remote-host ~]# ssh your-local-machine ip ad

Antwort2

Aus Sicherheitsgründen können Sie innerhalb einer SSH-Verbindung keine lokalen Befehle von einem entfernten Host ausführen.

Um Befehle weiterzugeben, beenden Sie die Verbindung über das Terminal, also vom lokalen Server aus.

Wenn Sie also sowohl eine Verbindung als auch ein Skript über eine SSH-Verbindung ausführen möchten, können Sie einen Blick auf expect werfen. Dabei wird Ihre SSH-Verbindung jedoch in eine andere Anwendung eingebettet oder eingeschlossen, und nicht direkt von der Remote-Shell aus.

verwandte Informationen