Ich habe eine Automator-Anwendung mit dem folgenden Shell-Skript geschrieben, um eine FTP-Verbindung auf meinem System herzustellen:
sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
osascript -e 'tell app "Finder" to display alert "SFTP Opened"'
Dies funktioniert genau wie erwartet, außer dass der Befehl sudo ein Kennwort benötigt. Wenn derselbe Befehl auf dem Terminal ausgeführt wird, werden Sie zur Eingabe eines Kennworts aufgefordert. Wenn ich ihn jedoch als Automator-App ausführe, werden Sie nicht zur Eingabe aufgefordert. Gibt es überhaupt eine Möglichkeit, das Passwort im Automator-Skript programmgesteuert an dieses Sudo zu übergeben? Ich weiß, dass dies keine sichere Praxis ist, aber ich möchte es trotzdem tun, da mein System einigermaßen sicher ist und von niemand anderem als mir berührt wird.
Eine Methode "Shell-Skript ausführen ... mit Administratorrechten" gibt den folgenden Fehler aus:
quelle
do shell script "sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist" with administrator privileges
( Führen Sie einen der folgendenerwarten von
Sie können stattdessen ein Tool wie " Erwarten" verwenden, um die Interaktion mit zu skripten
sudo
.expect
ist für diese Situation ausgelegt.Das folgende Shell-Skript kann für Ihre beiden Befehle ausreichen:
AppleScript und mit Administratorrechten
Ein alternativer Ansatz ist die Verwendung des Apple Shell- Befehls do shell script . Der Befehl bietet eine Option mit Administratorrechten . Apples Technical Note 2065- Cover enthalten ausführliche Shell-Skripte.
Echo
Andere gängige Ansätze für dieses Problem sind die
echo
Übergabe des Kennwortssudo
mit einer Pipe. In dieser StackOverflow-Antwort werden dieser und andere verwandte Ansätze erläutert. Wie wird ein Befehl mit einem Kennwort versehen, das in bash zur Eingabe eines Befehls auffordert?quelle