2016-06-13 11 views
2

Ich habe ein Problem beim Abrufen eines Bash-Skripts in Applescript. Was ich brauche, ist, dass die Applescript-Datei nach dem Benutzernamen und dem Passwort fragt, damit das Bash-Skript mit den Berechtigungen sudo ausgeführt wird, da es Aufgaben ausführt, die nicht als Administrator ausgeführt werden können, wie beispielsweise Schreiben an /etc/.Ausführen eines Bash-Skripts in Applescript

Da dieses Skript (in einer .dmg Datei mit Platypus verpackt) wird an eine Reihe von Benutzern verteilt werden, kann ich nicht auf absolute Pfade verlassen, und müssen stattdessen den Pfad der Applescript-Datei erhalten, wenn es ausgeführt wird sudo Berechtigungen, und führen Sie das Bash-Skript aus demselben Verzeichnis aus.

Bisher hat alles, was ich über SO-Posts und andere Seiten kommen konnte, dazu geführt, dass osascript sich darüber beschwert hat, dass es das Bash-Skript nicht finden kann. Irgendwelche Ideen?

Es scheint, dass dies funktionieren könnte, aber es Syntaxfehler:

set wd to do shell script "pwd" 

tell application "Terminal" 
    set run_cmd to "/bin/bash " & wd & "/osx.sh" 
    do script run_cmd with administrator privileges 
end tell 
+0

Sie richtig relevant Applescript-Code schreiben sollte .. – andlrc

+0

Scripting Terminal.app ist nicht erforderlich, da ist ein 'do shell script' Befehl. Und relative Pfade können einfach mit den verschiedenen "Pfad zu ..." Formen erstellt werden. Wo befindet sich das Bash-Skript? – vadian

Antwort

0

Wenn Ihr Skript als Anwendung gespeichert wird, es muss Folgendes enthalten:

Set myPath to path to me 

Die Variable myPath wird der vollständige Pfad sein zu deiner App Von dort müssen Sie nur einen Unterordner hinzufügen, wie "Inhalt: Ressourcen: my_shell_script", um zu wissen, wo sich Ihr Shell-Skript befindet. Vergessen Sie nicht, Ihren Pfad in den Posix (Unix) -Pfad für den Befehl do shell script zu konvertieren.

Benutzer-Passwort fragen, können Sie Anzeigedialog mit versteckten Option nicht eingegebenen Zeichen angezeigt werden:

set myInput to display dialog "Enter your password" default answer "" with hidden answer 
set myPwd to text returned of myInput 

Benutzernamen zu erhalten, gibt es viele mögliche Methoden sind; dies ist nur eine:

set UserName to do shell script "/usr/bin/whoami" 

Wenn jedoch dieser Benutzer nicht Admin-Rechte hat, werden Sie noch für die Admin-Benutzernamen haben zu fragen.

Last, but not least, können Sie Ihre Shell-Skript ausgeführt werden Shell-Skript tun (wie Vadian sagt)

Set R to do shell script "my_script-here"