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" ... :wink:

Re: benötige hilfe vom hilfesystem ;-)

Verfasst: Sonntag 14. Dezember 2008, 16:57
von Hyperion
numerix hat geschrieben: Such mal nach "Popen" ... :wink:
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.
:shock:
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" ... :wink:
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 :oops: ;-)

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?

Code: Alles auswählen

output = p.communicate()[0
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 :oops: ;-)
Hehe ... also ich schon :-D
könntet ihr mir bitte das einmal erläutern?

Code: Alles auswählen

output = p.communicate()[0
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