2016-05-04 8 views
0

Ich möchte überprüfen, ob eine bestimmte Datei fake-file.txt existiert in einem freigegebenen Ordner //123.456.7.890/Data/ und wenn es tut, möchte ich es entfernen und eine neue Datei schreiben real-file.txt. Ich nicht wollen paramiko Modul für diese Aufgabe verwenden, und habe es auf einem Windows-Rechner wie folgt arbeiten:Überprüfen Sie, ob die Datei existiert und entfernen Sie sie mit Python auf Freigabe ohne paramiko

filename = '//123.456.7.890/Data/fake-file.txt' 
if os.exists(filename): 
    os.remove(filename) 
    #and so on 

Allerdings ist diese Methode funktioniert nicht auf einem Unix-basierten Rechner (CentOS in diesem Fall). Ich bekomme einen IOError, dass die Datei nicht existiert. Ich bin nicht wirklich vertraut mit Unix-basierten Maschinen, so dass wahrscheinlich etwas schief läuft mit der Referenz. Wie kann ich dieses Problem beheben? Wenn etwas unklar ist, lass es mich wissen!

PS. der Ordner ist passwortgeschützt und ich bin in der Lage, es von der Klemme SSH

+1

Darf ich fragen, warum Sie paramiko nicht verwenden möchten? Du hast gesagt, dass du mit ssh auf die Datei zugreifst, so dass es definitiv wie ein Job für paramiko aussieht ... Du kannst auch 'subprocess' verwenden und rohe Befehle ausführen ... – Cyrbil

Antwort

1

Es ist nicht wirklich eine Python Frage. Unter Linux greifen Sie auf entfernte Dateisysteme zu, indem Sie sie in ein lokales leeres Verzeichnis (das möglicherweise nicht benötigte Berechtigungen erfordert) einbinden und dann über dieses Verzeichnis darauf zugreifen (dann als Mountpoint bezeichnet). So etwas wie

$ mkdir ./1234567890 
$ mount -t cifs //123.456.7.890/Data -o username=username,password=password ./1234567890 

wenn dies gelingt, der Linux-Dateinamen Sie in Ihrem Python-Programm verwenden ./1234567890/fake-file.txt sein.

Einige Linux-Systeme können mit einem Automounter-System konfiguriert werden, so dass bestimmte Dateispeicher automatisch das Mount für Sie übernehmen. Sie müssen mit Ihrer lokalen Systemverwaltung sprechen, um festzustellen, ob und wie dies lokal implementiert wird.

PS 123.456.7.890 ist keine gültige IP-Adresse, aber ich gehe davon aus, dass Sie die tatsächliche und gültige IP-Adresse, die Sie tatsächlich verwenden, ausblenden. 123.45.67.89 ist eine bessere Wahl für eine "zufällige" IP-Adresse oder 192.168.22.33 (zufällige private IP).