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.