In Python, wie schreibt man einen string in eine Datei auf einer remote-Maschine?

Auf Computer1, ich habe ein Python2.7 Skript berechnet, dass eine große (bis zu 10MB) Binär-string im RAM, die würde ich gerne schreiben, um eine Datei auf Computer2 im Dialogfeld Lizenzaktivierung, die eine remote-Maschine. Was ist der beste Weg, dies zu tun?

Einschränkungen:

  • Beide Maschinen sind Ubuntu 13.04. Die Verbindung zwischen Ihnen ist schnell-Sie sind auf dem gleichen Netzwerk.

  • Zielverzeichnis noch nicht existieren, auf Computer2 im Dialogfeld Lizenzaktivierung, es kann also erstellt werden müssen.

  • Wenn es einfach ist, ich möchte vermeiden, schreiben Sie die Zeichenfolge aus dem RAM auf eine temporäre Datei auf Computer1. Nicht zu beseitigen, dass Lösungen, die möglicherweise verwenden Sie ein system-Aufruf von rsync?

  • Weil der string ist Binär, es könnte bytes enthalten, dass interpretiert werden könnte als ein Zeilenumbruch. Dies würde scheinen, um auszuschließen, Lösungen, die möglicherweise verwenden Sie einen system-Aufruf der echo-Befehl auf Computer2 im Dialogfeld Lizenzaktivierung.

  • Möchte ich dies so leicht auf Computer2 im Dialogfeld Lizenzaktivierung wie möglich. So, ich möchte vermeiden, laufen Dienste wie ftp auf Computer2 im Dialogfeld Lizenzaktivierung oder engagieren sich in anderen Konfigurations-Aktivitäten. Plus, ich don ' T verstehen die Sicherheit, dass auch, und so möchte vermeiden Sie das öffnen von zusätzlichen ports, es sei denn wirklich notwendig.

  • Habe ich ssh-keys einrichten, auf Computer1 und Computer2 im Dialogfeld Lizenzaktivierung und würde Sie gerne benutzen für die Authentifizierung.

  • EDIT: Rechner1 ist das ausführen mehrerer threads, und so ist es möglich, dass mehr als ein thread könnte versuchen zu schreiben, um die gleiche Datei auf Computer2 im Dialogfeld Lizenzaktivierung auf überlappende Zeiten. Ich habe nichts dagegen, die Ineffizienz verursacht durch die Datei geschrieben, zweimal (oder mehr) in diesem Fall, aber die resultierende Datei auf Computer2 im Dialogfeld Lizenzaktivierung sollte nicht beschädigt werden durch die gleichzeitige schreibt. Vielleicht einen OS-lock auf Computer2 im Dialogfeld Lizenzaktivierung benötigt wird?

Ich bin wühlen für ein rsync-Lösung, da es eine in sich geschlossene Einheit, die ich verstehe Recht gut, und erfordert keine Konfiguration auf Computer2 im Dialogfeld Lizenzaktivierung.

  • Sie können werfen Sie einen Blick auf python sockets (tcp-sockets in Ihrem Fall). Was auch immer Schema müssen Sie umgesetzt werden können mit Ihnen.
  • sftp scheint der wahrscheinlichste Kandidat. wiki.python.org/moin/SecureShell stackoverflow.com/questions/432385/...
  • Wie lange würde es dauern, um die übertragung von 10 MB auf die andere Seite? Werden unterbrochene verbindungen, und die Wiederaufnahme wahrscheinlich? Diese Fragen relevant sein könnte, um zu entscheiden, ob Erik Allik Lösung - das wäre mein Favorit als gut benutzbar ist hier.
  • Nicht ohne die Eröffnung eines zusätzlichen port - scheint unerwünscht hier. SSH-Verbindung würde wahrscheinlich besser sein...
  • Bearbeitet die Frage, zu erklären, dass die Verbindung zwischen den Maschinen ist schnell.
InformationsquelleAutor Iron Pillow | 2013-10-05
Schreibe einen Kommentar