So öffnen Sie ein Shell-Skript in einem neuen Terminalfenster und führen es mit Administratorrechten aus

Ich muss ein Shell-Skript programmgesteuert in einem Terminalfenster öffnen und es mit Administratorrechten ausführen. Ich verwende osascript, da es eine praktische Eingabeaufforderung für ein Administrator-Login/Passwort anzeigt.

Ich benutze derzeit das:

osascript -e 'do shell script "open -a Terminal \"'"$appDir"'\"" with administrator privileges'

Das Problem ist, dass das neu geöffnete Skript selbst nach Eingabe der Anmeldeinformationen in der OS X-Eingabeaufforderung beim ersten sudo-Befehl nach einem Passwort fragt.

Wie übergebe ich die Administratoranmeldeinformationen an das geöffnete Skript?

Können Sie das Skript, das Administratorrechte erfordert, nicht direkt ausführen (anstatt Terminal als Zwischenprodukt zu verwenden)?
Nein, da das Ausführen des Skripts es direkt im Hintergrund ausführt. Ich brauche ein Terminalfenster für die Benutzerinteraktion.

Antworten (1)

Ich würde versuchen, ein einfaches Skript zu schreiben:

#!/bin/bash
sudo /usr/bin/id

Speichern Sie dies als something.command, ändern Sie seine Berechtigungen in ausführbar mit chmod +xund führen Sie es dann von AppleScript aus mit aus

osascript -e 'do shell script "open -a Terminal ./something.command"'

Stattdessen /usr/bin/idkönnen Sie jedes Skript aufrufen, das Sie dann mit Administratorrechten ausführen müssen.

BEARBEITEN:

Das wird funktionieren:

osascript -e 'do shell script "sudo /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal" with administrator privileges'
Danke, aber das ist ähnlich wie im aktuellen Zustand: something.command fordert zur Eingabe eines Passworts auf, was ich zu vermeiden versuche. Ich hätte gerne ein OS X-Eingabeaufforderungsfenster, das es beispielsweise ermöglicht, einen anderen Benutzer mit Administratorrechten einzugeben. Osascript bietet eine solche Funktionalität mit 'mit Administratorrechten' an.
Letzte Änderung enthält die Lösung
Danke Brethil, deine Bearbeitung hat es geschafft. Am Ende habe ich diese Zeile verwendet: osascript -e 'do shell script "sudo /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal \"'"$appDir"'\"" with administrator privileges'. Vom OS X-Dialogfeld angeforderte Administratorrechte wurden erfolgreich an das ausgeführte Skript übergeben.