Ich versuche, ein Skript zu schreiben, das das Benutzerkennwort für einige sudo
-bezogene Befehle anfordert. Mein Ziel ist es, die Standardmethode zu emulieren, die OS X verwendet, um das Passwort des Benutzers zu erhalten, Password:
gefolgt von einem schlüsselähnlichen Symbol, wie im unten angehängten Screenshot zu sehen ist:
Ich habe versucht, die Antwort von How to get a password from a shell script without echoing over on Stack Overflow zu verwenden read -s
, aber das führt dazu, dass Password:
das Schlüsselsymbol nicht angezeigt wird, wenn es von einem Skript ausgeführt wird, aber das Symbol angezeigt wird, wenn es vom Terminal selbst ausgeführt wird. Was ist dieses Schlüsselsymbol und kann ich es im Zeichenmenü finden?
Ich erhalte das Schlüsselsymbol, wenn ich read -s
im Terminal laufe.
Da dies für genauso zu funktionieren scheint read -s
wie für sudo
, nehme ich an, dass dies eine Funktion von Terminal ist (um ein Schlüsselsymbol anzuzeigen, wenn eine Eingabe im stillen/versteckten Modus angefordert wird).
Die einfachste Antwort ist, das Skript einfach ohne sudo zu schreiben
dann sagen Sie dem Benutzer, dass er es mit sudo ausführen soll, zBsudo script
Das Skript wird mit Root-Rechten ausgeführt
„Dies hat den Vorteil, dass der Benutzer weiß, wonach gefragt wird und wo das Passwort verwendet wird, wenn Sie in Ihrem Skript eine Kopie nehmen oder es im Speicher lassen könnten
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, in meinem Terminal zu laufen stty -echo; cat; stty echo
und dann etwas einzugeben, und das Schlüsselsymbol wurde angezeigt. CtrlIch habe dann + gedrückt Dund es war weg.
kein Hang
read -s
ich im Terminal ausgeführt werde, also 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.vielleichtvielleichtharry
read -s
in meinem Skript nicht richtig eingerichtet. Danke für Ihre Hilfe!vielleichtvielleichtharry
kein Hang