2017-10-06 8 views
0

Je suis en train de faire quelque chose commesudo su avec le nom d'utilisateur, mot de passe et commande

echo 'my_password' | sudo -S su -c some-user ./some_command 

J'ai regardé

How can I apply password to sudo in one line command and execute su root?

et

run a sudo command, specifying the password on the same line

Mais ni l'un ni l'autre ne répond vraiment à ma question bove.

Je reçois toujours l'invite de mot de passe pour mon utilisateur.

+0

Pourquoi ne pas simplement paramétrer sudo pour ne pas demander de mot de passe pour un utilisateur qui exécute some_command? –

+0

Travailler avec un serveur où sudo a été configuré à partir d'une autre équipe. Donc, je ne peux pas exécuter de commandes en dehors de mon utilisateur. Suce. Eh bien je cours en tant que root via ansible mais ce n'est pas la norme. –

Répondre

3

J'ai deux réponses pour vous.

La première réponse est "ne pas le faire". Il y a, presque certainement, un meilleur moyen. Vous pouvez spécifier à sudo que certains utilisateurs peuvent exécuter certaines commandes sans entrer de mot de passe. Selon toute vraisemblance, c'est ce que vous voulez faire.

Ayant échoué à vous convaincre, cependant, je vais vous laisser un petit secret. sshpass travaux sur sudo, donc:

sshpass -p 'my password' sudo -S su -c some-user ./some_command 

Bien sûr, alors là, nous pouvons couper l'homme du milieu su:

sshpass -p 'my password' sudo -S -u some-user ./some_command 
+0

En utilisant cette réponse, mon système demande toujours le mot de passe pour l'utilisateur actuellement connecté –

0

Vous pouvez utiliser attendre. Commencez par installer la commande expect rpm, puis exécutez la commande suivante:

expect -c "spawn sudo /tmp/test.sh; sleep 3; expect -re \"password\"; send \"mypassword\r\n\";set timeout 5;expect -re \"time=\";"