mountpoints abfrage

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
unlimitopen
User
Beiträge: 13
Registriert: Sonntag 14. Dezember 2008, 15:24

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!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
unlimitopen
User
Beiträge: 13
Registriert: Sonntag 14. Dezember 2008, 15:24

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
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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:
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

numerix hat geschrieben: Such mal nach "Popen" ... :wink:
Besser Subprocess ... nicht, dass er da zuerst das alte popen findet ;-)
unlimitopen
User
Beiträge: 13
Registriert: Sonntag 14. Dezember 2008, 15:24

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!
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Omg, dass ist keine Lösung das ist wovor man dich gerade gewarnt hat. Schau dir mal Subprocess an.
unlimitopen
User
Beiträge: 13
Registriert: Sonntag 14. Dezember 2008, 15:24

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!
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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 ... :)
unlimitopen
User
Beiträge: 13
Registriert: Sonntag 14. Dezember 2008, 15:24

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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
unlimitopen
User
Beiträge: 13
Registriert: Sonntag 14. Dezember 2008, 15:24

für die Info's

Grüße
Antworten