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:
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
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 :
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 Ссылка