Encfs Dateinamen decrypten

Aus Ethersex_Wiki
Version vom 28. März 2009, 15:34 Uhr von Stettberger (Diskussion | Beiträge) (Die Seite wurde neu angelegt: <pre>#!/usr/bin/python import string,sys,os encfsin,encfsout= os.popen2("encfsctl decode .one " ,"w") while (1): zeile = sys.stdin.readline() ...)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche
#!/usr/bin/python

import string,sys,os

encfsin,encfsout= os.popen2("encfsctl decode .one " ,"w")

while (1):
  zeile = sys.stdin.readline()
  #print zeile
  gefunden = zeile.find("changed  <-?-> changed    ")
  if (gefunden >= 0):
    #print zeile[26:]
    encfsin.write(zeile[26:])
    encfsin.flush()
    #encfsin.close()
    decrypt=encfsout.readline()
    #encfsout.close()
    print "changed  <-?-> changed    " + zeile[26:].strip() +"="+ decrypt.strip()
  else:
    print zeile.strip()
  if (zeile == ""):
    break

Erklärung: Wenn unison einen Versionskonflikt entdeckt, dann fragt er den Anwender, was er tun soll. Das hat natürlich bei einem verschlüsselten Dateisystem den Nachteil, dass man erst umständlich jeden Namen mit dem encfsctl-Kommando wieder dechiffrieren muss, um eine Entscheidung treffen zu können. Dafür hat Jochen dieses Skript erdacht: es sucht aus der Logdatei, die unsion anlegt die Zeilen mit dem String "changed <-?-> changed " heraus, wodurch unison einen Versionskonflikt anzeigt, dechiffriert dann die Namen und gibt das Ganze bekömmlich aufbereitet wieder aus :)