2010-10-15 18 views
5

Je souhaite exécuter une commande nécessitant sudo dans la machine locale. Donc, comme le suggère la documentation, j'ai utilisé la commande locale, mais elle m'a demandé d'entrer le mot de passe. Comment puis-je éviter ça? Y a-t-il un endroit où je peux enregistrer mon mot de passe de machine locale?Tissu: Utilisation de la commande locale

local('sudo /etc/init.d/tomcat6 start',capture=True) 

Répondre

4

Vérifiez la commande visudo, qui vous permettra d'éditer le fichier /etc/sudoers, dans lequel vous pouvez définir les utilisateurs, les commandes et le mot de passe-exigences sur une machine (par exemple mlzboy utilisateur n'a pas besoin d'entrer un mot de passe pour exécutez /etc/init.d/tomcat6). Ne pas oublier cela peut créer un problème de sécurité.

Sudoers manual

4

Si vous ne prévoyez pas de partager la fabfile vous pouvez utiliser:

echo "password\n" | sudo -S /etc/init.d/tomcat6 start 

selon la page man sudo:

Les causes option -S (stdin) sudo pour lire le mot de passe de l'entrée standard au lieu du périphérique terminal. Le mot de passe doit être suivi d'un caractère de retour à la ligne.

+0

Brillant! Travaillé comme charme! – deeshank

1

Si vous souhaitez utiliser sudo, mais sur l'ip réalimentation:

from fabric.api import sudo,env 
env.hosts =['127.0.0.1'] 
sudo('aptitude search fabric') 

Pas besoin de modifier sudoers, étant donné que vous avez un serveur ssh en cours d'exécution au niveau local.