Datei auf Server local über SSH bearbeiten mit Texteditor

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
martinjo
User
Beiträge: 186
Registriert: Dienstag 14. Juni 2011, 20:03

Hallo

Ich erstelle gerade ein Programm mit welche ich Dokumente auf einem Ubuntu Server prüfe. Nun frage ich mich, wie es möglich ist, dass ich eine Datei auf dem Server lokal mit einem Texteditor öffnen und auch abspeichern kann, ähnlich als ob das Dateisystem eingebunden wäre.

SSH Key ist erstellt, also anmelden ohne Passwort ist möglich.

Ach ja, es soll ein grafischer Editor genutzt werden wie gedit oder ähnliche.
__deets__
User
Beiträge: 14528
Registriert: Mittwoch 14. Oktober 2015, 14:29

Emacs kann das. Gegebenenfalls können KDE oder GTK Editoren das durch so etwas wie fish. Oder spezielle Plugins für (s)ftp & co.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Das ist eher eine Off-Topic-Frage, weil sie nichts mit Python zu tun hat. Nutze doch sshfs.
Benutzeravatar
martinjo
User
Beiträge: 186
Registriert: Dienstag 14. Juni 2011, 20:03

Sirius3 hat geschrieben:Das ist eher eine Off-Topic-Frage, weil sie nichts mit Python zu tun hat. Nutze doch sshfs.
Also ich möchte es ja aus einem Python Skript öffnen, klar mit subprocess z.B. soch davor muss ich die Datei ja verfügbar haben. Also einbinden, dafür ist dein genanntes Toll ja schon mal sehr gut.

Auch habe ich ___ gefunden. Damit kann ich auch auf ein entferntes Dateisystem über SSH zugreifen. Doch wie soll ich die Datei dann an den Editor leiten. Evtl. doch erst mit subprocess das Dateisystem einbinden.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Du hast von Texteditoren geschrieben. So kann kwrite z.B. direkt mit dem fish://-Protokoll arbeiten. Bei anderen muß man eben per mount das Dateisystem einbinden, hat auch nichts mit Python zu tun.
Benutzeravatar
martinjo
User
Beiträge: 186
Registriert: Dienstag 14. Juni 2011, 20:03

Hier jedenfalls meine Lösung:

Code: Alles auswählen

            # create mountpoint
            mountpoint = "/tmp/mp1/"
            if not os.path.exists(mountpoint):
                os.makedirs(mountpoint)
            sshfs = "%s@%s:/" % (self.user, self.ip)

            # mount
            status = os.system ('sshfs -o uid=%d "%s" "%s"' % (os.getuid(), sshfs, mountpoint))
            #edit file
            filepath ="/tmp/mp1/tmp/newtext"
            os.system("xed %s" % filepath)
            os.system("fusermount -u %s" % mountpoint)
Geholfen hat mir auch dieses Skript (sshfs mount tool (Python recipe)): http://code.activestate.com/recipes/573 ... ount-tool/
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@martinjo: wie immer, `os.system` ist veraltet und sollte durch `subprocess` ersetzt werden. Das macht auch vieles einfacher.

Code: Alles auswählen

# create mountpoint
mountpoint = "/tmp/mp1/"
if not os.path.exists(mountpoint):
    os.makedirs(mountpoint)
sshfs = "%s@%s:/" % (self.user, self.ip)
filepath = os.path.join(mountpoint, "tmp", "newtext")

# mount
subprocess.call(['sshfs', '-o', 'uid=%d' % os.getuid(), sshfs, mountpoint])
#edit file
subprocess.call(['xed', filepath])
subprocess.call(['fusermount', '-u', mountpoint])
sebastian0202
User
Beiträge: 168
Registriert: Montag 9. Mai 2016, 09:14
Wohnort: Berlin

Hallo,


vielleicht hast du die Möglichkeit X11 Forwarding mittels SSH zu nutzen.
Ich verbinde mich mit MobaXTerm durch SSH auf einen SLES Server
und rufe dann einfach Sublime Text Editor auf.

So kann ich direkt von meinem Arbeitsplatz aus auf dem Server programmieren.
Und ich brauche mir keine Gedanken machen wegen der Synchronisation.
Benutzeravatar
martinjo
User
Beiträge: 186
Registriert: Dienstag 14. Juni 2011, 20:03

Danke für die Tipps und Hinweise. Ich hatte schon das Gefühl doch da war was mit os.system :-)
IHack
User
Beiträge: 14
Registriert: Dienstag 13. März 2018, 11:17

So wirklich zu verstehen ist das nicht.
Ich bearbeite meine Dateien immer in einer gescreenten SSH- Session.

Wenn du das unbedingt local machen willst, ist sshfs schon die erste Wahl.
Dann solltest du aber autossh verwenden.
Damit umgehst du die Verbindungsabbrüche.

Oder, falls du auch auf dem Serve wirklich installieren kannst, mosh.
Antworten