Seite 1 von 1
mountpoints abfrage
Verfasst: Sonntag 14. Dezember 2008, 15:38
von unlimitopen
Hallo zusammen,
trotz studieren der Bücher Python Paxisbuch Addison Wesley und GE-Packt vom Mtip Verlag scheinen mir die Möglichkeiten aus zu gehen.
ich möchte gerne mir ein kleines Tool in Python zu schreiben, was mir das löschen von Partitionen erleichtert.
das ganze soll so ablaufen das meiner einer eine Info (in einer GUI) bekommt welche Partitionen gemountet sind - und ich wähle diese dann aus die gelöscht werden soll.
dann fängt das Programm 'shred' die Partition voll zu schreiben - zum Schluss mache ich noch ein makefs ext3 .... und fertig.
ich scheitere leider am auslesen der Mountpoints ... hat einer einen Tipp für mich...
Wahrscheinlich sollte ich so etwas eher in einem Bashscript unterbringen?
Grüße und danke!
Verfasst: Sonntag 14. Dezember 2008, 15:51
von Hyperion
Wieso nutzt Du nicht einfach
mount und parst Die Ausgabe? (Oder ggf. einfach die /etc/mtab)
Wobei Du eine gemountete Partition ja kaum löschen können wirst ... oder brauchst Du die Info eben zum "unmounten"?
Und es gibt eigentlich keinen Grund ein Bash-Script da vorzuziehen, oder zumindest sehe ich da keinen
Ok, per dialog-Varianten kann man dort auch etwas GUI basteln, aber so richtig flexibel ist man dort damit ja nicht.
benötige hilfe vom hilfesystem ;-)
Verfasst: Sonntag 14. Dezember 2008, 16:32
von unlimitopen
Hallo,
danke für die Atwort....
1. ja ich benötige die Informationen um Sie sichtbar zu machen...
(damit ich weiß von welcher ich den Inhalt löschen kann)
wahrscheinlich Offtopic - (sorry newbie)
wie kann ich in der py commandozeile nach mount suchen?
help (mount)
Code: Alles auswählen
>>> help (mount)
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
help (mount)
NameError: name 'mount' is not defined
Re: benötige hilfe vom hilfesystem ;-)
Verfasst: Sonntag 14. Dezember 2008, 16:46
von numerix
unlimitopen hat geschrieben:wahrscheinlich Offtopic - (sorry newbie)
wie kann ich in der py commandozeile nach mount suchen?
Da brauchst du nicht nach "mount" suchen, weil "mount" keine Python-Funktion ist.
Du musst das Linux-Kommando "mount" aus einem Python-Programm heraus aufrufen. Such mal nach "Popen" ...
Re: benötige hilfe vom hilfesystem ;-)
Verfasst: Sonntag 14. Dezember 2008, 16:57
von Hyperion
numerix hat geschrieben:
Such mal nach "Popen" ...
Besser Subprocess ... nicht, dass er da zuerst das alte
popen findet
der 1 mm weiter
Verfasst: Sonntag 14. Dezember 2008, 16:59
von unlimitopen
Hallo und danke!
bin weitergekommen, suche gerade die passagen im Buch warum ich nicht darauf gekommen bin?
popen ist die Lösung ....
Code: Alles auswählen
#! /usr/bin/python
import os
f=os.popen("mount -l")
for i in f.readlines():
print "myresult:",i,
jetzt nur noch das ganze passend formatieren und weiter gehts...
mit popen kann ich dann auch shred ansteuern
Vielen Dank!
Verfasst: Sonntag 14. Dezember 2008, 17:05
von DasIch
Omg, dass ist keine Lösung das ist wovor man dich gerade gewarnt hat. Schau dir mal
Subprocess an.
schade
Verfasst: Sonntag 14. Dezember 2008, 17:13
von unlimitopen
da war ich wohl zu voreilig....... bzw. zu langsam.
ich nehm die Lösung zurück und kümmere mich weiter!
mal sehen ob ich das mit subprocess ohne hilfe hinbekomme.
grüße und mein dank der warnungen!
Re: benötige hilfe vom hilfesystem ;-)
Verfasst: Sonntag 14. Dezember 2008, 18:45
von numerix
Hyperion hat geschrieben:numerix hat geschrieben:
Such mal nach "Popen" ...
Besser Subprocess ... nicht, dass er da zuerst das alte
popen findet
Du hast wahrhaftig eine prophetische Gabe ...
hey...
Verfasst: Sonntag 14. Dezember 2008, 19:03
von unlimitopen
soo. lustig finde ich das gar nicht
Code: Alles auswählen
#!/usr/bin/python
import subprocess
p = subprocess.Popen(["mount", "-l"], stdout=subprocess.PIPE)
output = p.communicate()[0]
print output
ist nun meine Lösung...
könntet ihr mir bitte das einmal erläutern?
output wird als variable für den späteren Print definiert.
p ist klar, aber
communicate()[0]
vielen Dank! schönen Abend
Re: hey...
Verfasst: Sonntag 14. Dezember 2008, 19:33
von Hyperion
unlimitopen hat geschrieben:soo. lustig finde ich das gar nicht
Hehe ... also ich schon
könntet ihr mir bitte das einmal erläutern?
output wird als variable für den späteren Print definiert.
p ist klar, aber
communicate()[0]
Sag mal wo haste das denn alles her? Guckst Du auch mal in die Doku? Da steht doch alles drin:
Python Doku hat geschrieben:
Popen.communicate(input=None)
Interact with process: Send data to stdin. Read data from stdout and stderr, until end-of-file is reached. Wait for process to terminate. The optional input argument should be a string to be sent to the child process, or None, if no data should be sent to the child.
communicate() returns a tuple (stdout, stderr).
Note that if you want to send data to the process’s stdin, you need to create the Popen object with stdin=PIPE. Similarly, to get anything other than None in the result tuple, you need to give stdout=PIPE and/or stderr=PIPE too.
Du bekommst also ein Tupel zurück. Der erste Wert ist das, was der Prozess auf stdout geschrieben hat, der zweite enthält ggf. Fehlerbenachrichtigungen von stderr. Durch die [0] hinter dem Methodenaufruf in Deinem Code selektierst Du einfach den Text, der auf stdout geschrieben wurde.
danke
Verfasst: Sonntag 14. Dezember 2008, 20:24
von unlimitopen
für die Info's
Grüße