linux terminal set title bash




Wie ssh aus einem Bash-Skript heraus? (3)

  1. Wenn Sie möchten, dass die Passwortabfrage nicht mehr angezeigt wird, verwenden Sie die schlüsselbasierte Authentifizierung ( hier beschrieben ).

  2. Um Befehle remote über ssh auszuführen, müssen Sie sie wie folgt als Argument an ssh übergeben:

root @ host: ~ # ssh root @ www 'ps -ef | grep apache | grep -v grep | WC -l '

Ich versuche, eine SSH-Verbindung zu erstellen und einige Dinge auf dem Remote-Server aus dem Skript heraus zu tun.

Das Terminal fragt mich jedoch nach einem Passwort und öffnet dann die Verbindung im Terminalfenster statt des Skripts. Die Befehle werden erst ausgeführt, wenn ich die Verbindung beendet habe.

Wie kann ich innerhalb eines Bash-Skripts ssh ausführen?


Es gibt noch einen anderen Weg, dies mit Shared Connections zu tun, dh jemand leitet die Verbindung mit einem Passwort ein und jede nachfolgende Verbindung multiplext den gleichen Kanal, was die Notwendigkeit einer erneuten Authentifizierung unnötig macht. (Und es ist auch schneller)

# ~/.ssh/config 
ControlMaster auto
ControlPath ~/.ssh/pool/%[email protected]%h

dann müssen Sie sich nur einloggen, und solange Sie angemeldet sind, kann das Bash-Skript SSH-Verbindungen öffnen.

Sie können dann Ihr Skript daran hindern, zu arbeiten, wenn jemand den Kanal noch nicht geöffnet hat durch:

ssh ... -o KbdInteractiveAuthentication=no ....

Wenn Sie weiterhin Kennwörter verwenden und keinen Schlüsselaustausch verwenden möchten, können Sie dies mit 'expect' wie folgt erreichen:

#!/usr/bin/expect -f
spawn ssh [email protected]
expect "password:"
sleep 1
send "<your password>\r"
command1
command2
commandN




ssh