Wie kann man SSHPASS dazu bringen, nicht auf das Ergebnis des gesendeten Befehls zu warten, sondern stattdessen die Verbindung zu trennen?

Wie kann man SSHPASS dazu bringen, nicht auf das Ergebnis des gesendeten Befehls zu warten, sondern stattdessen die Verbindung zu trennen?

Ich verwende SSHPASS, um ein Linux-basiertes Gerät zu Automatisierungszwecken über eine temporäre IP zu konfigurieren.

sshpass -p $TARGET_password ssh -o StrictHostKeyChecking=no $TARGET_username@$TARGET_IP 'bash -s' < $configfile

Ich sende ein Skript mit einer Reihe von Befehlen, von denen der letzte die Konfiguration der permanenten IP vornimmt.

Sobald das Skript die IP ändert, bleibt es hängen, da die Sitzung mit der temporären IP verloren geht.

Es ist also möglich, den Befehl zum Ändern der IP zu senden und die Verbindung sofort zu trennen, ohne auf eine Antwort zu warten.

Antwort1

Trennen Sie die VerbindungVores ändert die Adresse. Lassen Sie beispielsweise den letzten Befehl mit dem &Operator im Hintergrund ausführen, vielleicht so:

( (sleep 1; ip addr change ...) &)

Es gibt für SSHPASS keine gute Möglichkeit zu wissen, ob es keine ACK empfängt, weil der Befehl erfolgreich war (und die IP geändert wurde), oder ob es keine ACK empfängt, weil die Befehlspakete den Server nicht erreicht haben.überhaupt(aufgrund von Netzwerkproblemen). Im ersten Fall soll die Verbindung getrennt werden, im zweiten Fall sollen die unbestätigten Pakete weiter übertragen werden.

verwandte Informationen