comment passer le mot de passe aux commandes sudo?

3

sur OSX je fais

sudo route delete default
sudo route add default 192.168.178.1

changer ma passerelle par défaut.

Lorsque je lance un fichier sh avec ces fichiers, un mot de passe est demandé à chaque fois. Que je lance comme

sh changegw.sh.

Comment puis-je passer mon mot de passe avant la main?

zcqwevb
la source
Au lieu de transmettre votre mot de passe au script, vous pouvez appeler le script avec sudo sh changegw.sh ou courir sudo bash pour obtenir un shell root, lancez votre script à partir de là. Vous n'aurez alors pas besoin de sudo dans le script.
rob

Réponses:

9

Pour sudo, l'option -S permet d'accepter le mot de passe à partir de l'entrée standard. Voici l'entrée homme:

-S          The -S (stdin) option causes sudo to read the password from
            the standard input instead of the terminal device.

Cela vous permettra d’exécuter une commande telle que:

echo myPassword | sudo -S ls /tmp
Lucas Kauffman
la source
2
L'inconvénient est que votre mot de passe est maintenant dans l'historique du shell.
rob
@rob Vous pouvez éviter cela assez facilement avec le truc Ignorespace. stackoverflow.com/a/5750144/490592
Chad von Nau
0

Bien qu'il soit plus simple d'exécuter simplement le script en tant que root, vous pouvez également créer un groupe dans le fichier sudoers pouvant exécuter le programme sans mot de passe et ajouter votre nom d'utilisateur à ce groupe.

Je n'ai jamais fait cela personnellement, cependant, et je ne peux pas recommander une ligne spécifique à ajouter à votre fichier sudoers.

Babu
la source