Root Passwort setzen

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
sttrader
User
Beiträge: 53
Registriert: Dienstag 12. Januar 2010, 11:22
Kontaktdaten:

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

http://docs.python.org/library/subprocess.html und `communicate`

Das wurde dir doch schonmal geraten ..
sttrader
User
Beiträge: 53
Registriert: Dienstag 12. Januar 2010, 11:22
Kontaktdaten:

heheheheh Ja Stimmt da bin ich auch gerade finde nur kein Beispiel für
mein Problem :-(
sttrader
User
Beiträge: 53
Registriert: Dienstag 12. Januar 2010, 11:22
Kontaktdaten:

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ohne es getestet zu haben: Nochmal dasselbe?
sttrader
User
Beiträge: 53
Registriert: Dienstag 12. Januar 2010, 11:22
Kontaktdaten:

danke
sttrader
User
Beiträge: 53
Registriert: Dienstag 12. Januar 2010, 11:22
Kontaktdaten:

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Für Kommunikation mit externen Programmen die auf Eingaben des Users warten ist PExpect eine brauchbare Lösung.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Vielleicht solltest du auch noch ein <Enter> senden...
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Communicate weglassen und in p.stdin schreiben
the more they change the more they stay the same
sttrader
User
Beiträge: 53
Registriert: Dienstag 12. Januar 2010, 11:22
Kontaktdaten:

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 :-(
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

`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?
sttrader
User
Beiträge: 53
Registriert: Dienstag 12. Januar 2010, 11:22
Kontaktdaten:

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 ???
Benutzeravatar
Whitie
User
Beiträge: 216
Registriert: Sonntag 4. Juni 2006, 12:39
Wohnort: Schulzendorf

Hallo sttrader,

probier doch mal folgendes (ungetestet):

Code: Alles auswählen

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

Gruß Whitie
sttrader
User
Beiträge: 53
Registriert: Dienstag 12. Januar 2010, 11:22
Kontaktdaten:

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')
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Dauerbaustelle hat geschrieben:Vielleicht solltest du auch noch ein <Enter> senden...
Punkt Punkt Punkt
Antworten