Ändern Sie das Unix-Passwort von der Befehlszeile aus über Python / Fabric

8

Ich möchte eine Möglichkeit haben, mein Passwort in einer Remote Ubuntu 10.4 Box mit Fabric zu aktualisieren.

Ich würde erwarten, dass mein fabfile.py in etwa so aussehen würde:

%Vor%

Leider ist der einzige mir bekannte Befehl, dass man das Passwort passwd ändern kann, und auf Ubuntu 10.4 scheint es keine Möglichkeit zu geben, das neue (oder alte) Passwort als Argument an% co_de weiterzuleiten %.

Welchen Befehl könnte man verwenden, um das Passwort eines Benutzers unter Ubuntu 10.4 über passwd ? zu ändern?

BEARBEITEN : Ich habe mir fabric angeschaut, und das mag funktionieren, aber es wird nicht von der man-Seite empfohlen.

BEARBEITEN : usermod -p funktionierte nicht über Fabric.

Ich habe auch eine (etwas unsichere) Variante von mikejs Antwort versucht, die das Problem gelöst hat:

%Vor%

Es ist keine sehr elegante Lösung, aber es funktioniert.

Danke fürs Lesen.

Brian

    
Brian M. Hunt 20.06.2010, 19:11
quelle

4 Antworten

14

Sie könnten die neuen und alten Passwörter mit passwd z. B.

in echo einspeisen %Vor%

(Die Option -e für echo ermöglicht die Interpretation von Backslash-Escapes, sodass die Zeilenumbrüche als solche interpretiert werden)

    
mikej 20.06.2010, 19:30
quelle
10

Der Trick besteht darin, eine Kombination aus usermod und Pythons crypt zu verwenden, um dein Passwort zu ändern:

%Vor%     
Roshambo 28.02.2011 02:29
quelle
5

Ich benutze chpasswd auf Ubuntu 11.04

%Vor%

Hinweis: Normalerweise funktioniert dieses Muster nicht:

%Vor%

weil nur das 'echo' erhöhte Privilegien bekommt, nicht der 'restricted_command'.

Allerdings funktioniert es hier, wenn fabric.api.sudo aufgerufen wird with shell = True (der Standardwert), Fabric assembliert den Befehl wie folgt:

%Vor%

sudo erzeugt eine neue Shell (/ bin / bash), die mit root-Rechten ausgeführt wird, und Dann führt diese eskalierte Shell den Befehl aus.

Eine andere Möglichkeit, mit sudo zu pipesieren, ist :

    
Christian Long 18.06.2011 04:09
quelle
3

Aus Interesse, ich muss eine ähnliche Aufgabe auf einer Sammlung von Solaris-Boxen machen (fügen Sie eine ganze Menge von Benutzern hinzu, setzen Sie ihr Passwort). Solaris usermod hat keine Option --password, daher habe ich in der Vergangenheit Expect verwendet, aber das Schreiben von Expect-Skripten kann sehr schmerzhaft sein.

Also werde ich diesmal Pythons crypt.crypt benutzen, / etc / shadow direkt editieren (natürlich mit Backups). Ссылка

Kommentatoren haben vorgeschlagen, verschiedene Echo-Beschwörungen zu verwenden, die an passwd weitergeleitet werden. AFAIK das wird nie funktionieren, da passwd programmiert ist, Eingaben von stdin zu ignorieren und nur Eingaben von einem interaktiven tty zu akzeptieren. Siehe Ссылка

    
Sonia Hamilton 15.03.2011 03:43
quelle

Tags und Links