5 votes

Comment ouvrir un shell script dans une nouvelle fenêtre du Terminal et l'exécuter avec des privilèges d'administrateur.

J'ai besoin d'ouvrir par programmation un shell script dans une fenêtre Terminal et de l'exécuter avec des privilèges d'administrateur. J'utilise osascript car il affiche une invite pratique pour un login/mot de passe administrateur.

J'utilise actuellement ce :

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

Le problème est que, même après avoir entré les informations d'identification dans l'invite OS X, le script nouvellement ouvert demandera un mot de passe à la première commande sudo.

Comment passer les informations d'identification de l'administrateur au script ouvert ?

0 votes

Ne pouvez-vous pas exécuter directement le script nécessitant des droits d'administrateur (au lieu d'utiliser Terminal comme intermédiaire) ?

0 votes

Non, car l'exécution du script l'exécute directement en arrière-plan. J'ai besoin d'une fenêtre de terminal pour l'interaction avec l'utilisateur.

3voto

Brethil Points 647

J'essaierais d'écrire un simple script :

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

sauvegardez-le en tant que something.command et changez ses permissions en exécutables avec chmod +x puis l'exécuter à partir d'AppleScript avec

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

Au lieu de /usr/bin/id vous pouvez appeler n'importe quel script que vous devez exécuter avec des privilèges d'administrateur alors.

EDIT :

Ça va marcher :

osascript -e 'do shell script "sudo /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal" with administrator privileges'

0 votes

Merci, mais cela ressemble à la situation actuelle : quelque chose.command demande un mot de passe, ce que j'essaie d'éviter. J'aimerais avoir une fenêtre d'invite OS X, qui permette d'entrer un autre utilisateur avec des privilèges d'administrateur par exemple. Osascript offre une telle fonctionnalité avec 'with administrator privileges'.

1 votes

La dernière modification contient la solution

0 votes

Merci Brethil, votre modification a fait l'affaire. J'ai fini par utiliser cette ligne : osascript -e 'do shell script "sudo /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal \"'"$appDir"'\"" with administrator privileges' . Les privilèges d'administrateur demandés par la boîte de dialogue OS X ont été transmis avec succès au script exécuté.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X