Seite 1 von 1

Root Passwort setzen

Verfasst: Donnerstag 23. Dezember 2010, 21:43
von sttrader
Hallo an alle

Ich habe mal wider eine Frage wie kann ich mit Python
ein Linux Root Passwort setzen.

Code: Alles auswählen

def Install():
    os.system("sudo passwd")
    os.system(rootpass)
    os.system(rootpass)
Wenn ich sudo passwd ausführe möchte er ja 2 mal eine weitere eingaben
ich komme nicht drauf wie ich es hinbekomme :-(

LG ST

Re: Root Passwort setzen

Verfasst: Donnerstag 23. Dezember 2010, 21:58
von cofi
http://docs.python.org/library/subprocess.html und `communicate`

Das wurde dir doch schonmal geraten ..

Re: Root Passwort setzen

Verfasst: Donnerstag 23. Dezember 2010, 21:59
von sttrader
heheheheh Ja Stimmt da bin ich auch gerade finde nur kein Beispiel für
mein Problem :-(

Re: Root Passwort setzen

Verfasst: Donnerstag 23. Dezember 2010, 22:32
von sttrader
Hallo

So nun bin ich mit Hilfe der Hilfe bis hierher gekommen.

Code: Alles auswählen

def Install():
    p=subprocess.Popen("sudo passwd",stdin=subprocess.PIPE,shell=True)
    p.communicate(rootpass)
Jetzt bleibt nur noch das Problem das ich das Passwort ein zweites mal bestätigen muss.
Hat da jemand eine Lösung???

LG

Re: Root Passwort setzen

Verfasst: Freitag 24. Dezember 2010, 00:39
von cofi
Ohne es getestet zu haben: Nochmal dasselbe?

Re: Root Passwort setzen

Verfasst: Freitag 24. Dezember 2010, 01:15
von sttrader
danke

Re: Root Passwort setzen

Verfasst: Freitag 24. Dezember 2010, 02:30
von sttrader
So nun stundenlang gesucht aber keine Lösung gefunden auch nicht
in der Original Hilfe, schade ich komme da nicht weiter, vieleicht
weiß es ja einer von euch.

Wünsche euch allen ein Frohes Fest

MFG

Re: Root Passwort setzen

Verfasst: Freitag 24. Dezember 2010, 15:03
von Leonidas
Für Kommunikation mit externen Programmen die auf Eingaben des Users warten ist PExpect eine brauchbare Lösung.

Re: Root Passwort setzen

Verfasst: Freitag 24. Dezember 2010, 19:19
von Dauerbaustelle
Vielleicht solltest du auch noch ein <Enter> senden...

Re: Root Passwort setzen

Verfasst: Montag 27. Dezember 2010, 11:18
von Dav1d
Communicate weglassen und in p.stdin schreiben

Re: Root Passwort setzen

Verfasst: Mittwoch 29. Dezember 2010, 16:28
von sttrader
Ich habe es immer noch nicht hingekommen weder mit
communicate noch mit in p.stdin schreiben, es hackt immer
noch an der zweiten Bestätigung :-(

Re: Root Passwort setzen

Verfasst: Mittwoch 29. Dezember 2010, 16:32
von cofi
`communicate` kann keine Loesung sein:
http://docs.python.org/library/subprocess.html#subprocess.Popen.communicate 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.
Entschuldige bitte den Weg in die Weg in die Sackgasse.

Warum nutzt du nicht PExpect wie Leonidas vorgeschlagen hat?

Re: Root Passwort setzen

Verfasst: Mittwoch 29. Dezember 2010, 16:40
von sttrader
Hallo cofi

Für die Sackgasse brauchst du dich ja nicht entschuldigen wider was dazu gelernt :-)

PExpect gehört ja nicht zur Python Standard Installation, ich brauche
ein weg möglichst ohne Extra Pakete da ich einen Installer für eine Bestehende
Linux Distribution schreiben muss in dem dieses Paket nicht bei ist.

Es muss doch auch so gehen oder ???

Re: Root Passwort setzen

Verfasst: Mittwoch 29. Dezember 2010, 17:23
von Whitie
Hallo sttrader,

probier doch mal folgendes (ungetestet):

Code: Alles auswählen

p.communicate('rootpass\nrootpass\n')
evtl. auch ohne das zweite "\n".

Gruß Whitie

Re: Root Passwort setzen

Verfasst: Mittwoch 29. Dezember 2010, 17:30
von sttrader
Hallo Whitie :D :D :D :D :D :D :D :D :D :D


Danke dir 1000000000000 mal

So geht es :D :D :D :D :D

Code: Alles auswählen

def SetRootpasswd():
    p=subprocess.Popen("sudo passwd",stdin=subprocess.PIPE,shell=True)
    p.communicate('rootpass\nrootpass\n')

Re: Root Passwort setzen

Verfasst: Mittwoch 29. Dezember 2010, 17:37
von Dauerbaustelle
Dauerbaustelle hat geschrieben:Vielleicht solltest du auch noch ein <Enter> senden...
Punkt Punkt Punkt