J'ai ce script lignes de mon fournisseur de services Internet:
sudo bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
Cela fonctionne si je colle ligne par ligne dans Terminal. Je veux créer un fichier * .command et l'exécuter en double-cliquant dessus. Mais tout ce que je reçois, c'est l'invite du mot de passe puis la fenêtre bash vide. Le fichier "options" résultant est vide.
J'ai essayé ceci:
#!/bin/bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
Je reçois:
/ etc / ppp / options: autorisation refusée
Je pense que je dois utiliser une commande pour obtenir les privilèges root à partir de bash.
Réponses:
Prenez le script que vous avez créé:
Enregistrez-le dans votre répertoire personnel ou dans un répertoire "scripts" dans votre répertoire personnel, sous le nom l2tp.sh. Autorisez-le à être exécuté (écrivez cette commande dans Terminal):
Pour exécuter le fichier en utilisant sudo (privilèges root):
Méthode n ° 1. Dans le type de terminal:
Méthode n ° 2 Créez un fichier run_l2tp.command avec ce contenu:
Permettez qu'il soit exécuté:
Lorsque vous double-cliquez sur run_l2tp.command et entrez le mot de passe, le fichier l2tp.sh sera exécuté avec les privilèges root.
Méthode n ° 3 Si, pour des raisons de sécurité, vous ne souhaitez pas qu'un utilisateur de votre système puisse exécuter le script, mais plutôt un mot de passe administrateur, vous pouvez également enregistrer le script shell, puis Utilisez le programme AppleScript Editor pour créer un AppleScript.
Le AppleScript serait un one-liner, en disant
do shell script «your script's name here» with administrator privileges
. Enregistrez ce script en tant qu'application. Ensuite, lorsque vous cliquez dessus, il vous demandera un mot de passe administrateur, puis exécutera le script shell avec les privilèges d'administrateur.Évidemment, remplacez
«your script's name here»
par le chemin d'accès à votre script.Quelques notes:
la source
Sauvegarde ça:
sur votre bureau dans un fichier nommé
script.sh
.Ouvrez une fenêtre de terminal et tapez:
Entrez votre mot de passe lorsque vous y êtes invité et toutes les commandes du fichier s'exécuteront avec des privilèges de super utilisateur.
la source
Si, pour des raisons de sécurité, vous ne souhaitez pas qu'un utilisateur de votre système puisse exécuter le script, mais plutôt un mot de passe administratif, vous pouvez également enregistrer le script shell, puis utiliser le programme. AppleScript Editor pour créer un AppleScript.
AppleScript serait un one-liner, en disant
do shell script «your script's name here» with administrator privileges
. Enregistrez ce script en tant qu'application. Ensuite, lorsque vous cliquez dessus, il vous demandera un mot de passe administrateur, puis exécutera le script shell avec les privilèges d'administrateur.Évidemment, remplacez
«your script's name here»
par le chemin d'accès à votre script.la source
Le problème est que lorsque vous le faites à partir de la ligne de commande, vous commencez
bash
par ce que vous faitessudo
, puis vous envoyez les deux commandes suivantes àbash
, pas le shell original. (le signe étant que vous devezexit
deux fois)Lorsque vous le faites dans un script, le
bash
commande ne se ferme jamais. Les deux commandes suivantes ne s'exécutent donc jamais.Ce n'est pas aussi élégant que la solution AppleScript, mais si vous voulez le faire en tant que script depuis la ligne de commande, l'équivalent serait:
Si nous n'avions pas besoin de la redirection io (le
>>
bit), nous pourrions simplement appeler la commande directement viasudo
sans avoir besoin de l'sudo sh -c
astuce. (Et notez que je devais citer l'argument pour l'sh -c
empêcher d'exécuter l'écho en tant que root, mais en ajoutant le fichier en tant qu'utilisateur d'origine.)Il va travailler en tant que
.command
fichier à partir du Finder, mais il va faire apparaître une fenêtre de terminal, vous demandant votre mot de passe, et si correctement saisi, va exécuter les commandes. (en supposant que vous ne vous êtes pas authentifié récemment poursudo
... si vous l'avez fait, cela se déroulera sans invite)la source