Ich möchte rsync in einem Python-Skript verwenden. Ich rufe es mit dem subprocess
Modul auf und authentifiziere mich mit öffentlichen Schlüsseln, die in der authorized_key
Datei auf dem Remotecomputer gespeichert sind .
Das einzige Problem ist, dass ich bei Verwendung von rsync mit einem falschen Remote-Benutzernamen zur Eingabe eines Kennworts aufgefordert werde, wodurch das Sicherungsskript offensichtlich für immer angehalten wird.
Kann ich rsync
das Beenden mit einem Fehler erzwingen , wenn die Authentifizierung nicht möglich ist, anstatt zur Eingabe eines Kennworts aufzufordern?
Udi
Betreff: James 'Vorschlag (nicht tty), für den Unterprozess versuchen Sie, Popd stdin = None als Parameter zu geben.
quelle
Lassen Sie zuerst den rsync über die Shell arbeiten. Der Befehl sollte so aussehen.
Wenn dies fehlschlägt, debuggen Sie den Befehl ssh selbst. Wenn das alles funktioniert, sehen Sie, was mit dem Python-Skript passiert
Dies ist kein schlechtes Tutorial
quelle
Je nachdem, wie Sie rsync starten, kann es hilfreich sein, RTY oder PTY nicht anzugeben.
Viele Programme prüfen, ob sie über eine steuernde TTY verfügen, bevor sie den Benutzer zur Eingabe auffordern. Das Standardverhalten von system () und ähnlichen Aufrufen besteht darin, Unterprogrammen eine tty bereitzustellen. Sie können dies jedoch deaktivieren.
Es kann auch möglich sein, die Kennwortauthentifizierung auf der Remote-Seite vollständig zu deaktivieren, wenn Sie die Kontrolle über beide Systeme haben und aus Sicherheitsgründen von der Kennwortauthentifizierung Abstand nehmen möchten, während Sie dieses Problem lösen.
Wenn Sie rsync über SSH ausführen, können Sie Ihrer Datei ssh_config für den betreffenden Host oder über den Befehlszeilenschalter -o Folgendes hinzufügen:
Bei einem schnellen Test (nur von ssh, nicht von rsync) wurde SSH sofort beendet, wenn mein öffentlicher Schlüssel nicht akzeptiert wurde, ohne mich zur Eingabe eines Kennworts aufzufordern.
quelle