Ich versuche, ein Skript zu schreiben, das das Benutzerkennwort für einige sudo
verwandte Befehle anfordert . Mein Ziel ist es, die Standardmethode zu emulieren, mit der OS X das Kennwort des Benutzers abruft, Password:
gefolgt von einem schlüsselförmigen Symbol, wie im folgenden Screenshot gezeigt:
Ich habe versucht, die Antwort von So erhalten Sie ein Kennwort von einem Shell-Skript zu erhalten, ohne den verwendeten Stapelüberlauf zu wiederholen. Dies read -s
führt jedoch dazu, dass beim Ausführen eines SkriptsPassword:
kein Schlüsselsymbol angezeigt wird, das Symbol jedoch angezeigt wird, wenn es vom Terminal selbst ausgeführt wird. Was ist dieses Schlüsselsymbol und kann ich es im Menü "Zeichen" finden?
read -s
ich im Terminal ausgeführt werde, daher gehe ich davon aus, dass dies tatsächlich eine Funktion von bash ist. Vielleicht gibt ein Blick in den Quellcode ( opensource.apple.com/source/bash/bash-99/bash-3.2/builtins/… ) weitere Hinweise.read -s
in meinem Skript nicht richtig eingerichtet. Danke für Ihre Hilfe!Antworten:
Ich erhalte das Schlüsselsymbol, wenn ich
read -s
im Terminal laufe.Da dies anscheinend genauso funktioniert
read -s
wie fürsudo
, gehe ich davon aus , dass dies eine Funktion von Terminal ist (um ein Schlüsselsymbol anzuzeigen, wenn eine Eingabe im stillen / versteckten Modus angefordert wird).quelle
Die einfachste Antwort ist, das Skript ohne sudo zu schreiben
Dann fordern Sie den Benutzer auf, es mit sudo auszuführen, z
sudo script
Das Skript wird mit Root-Rechten ausgeführt
`Dies hat den Vorteil, dass der Benutzer weiß, wonach er fragt und wo das Passwort verwendet wird, wenn Sie in Ihrem Skript eine Kopie erstellen oder im Speicher belassen könnten
quelle
sudo
. Ich entschuldige mich, wenn ich unklar war.Ich denke, es hat etwas damit zu tun, ob die Terminal-Echo-Option deaktiviert ist. Ich habe versucht,
stty -echo; cat; stty echo
in meinem Terminal zu laufen und dann etwas einzugeben, und das Schlüsselsymbol wurde angezeigt. Ich drückte dann Ctrl+ Dund es ging weg.quelle