1 votes

fournir le mot de passe pour sudo et openconnect en une seule commande alias

Je veux faire un alias pour openconnect, l'alias est

echo "password" | sudo openconnect server --user=username --passwd-on-stdin --no-cert-check

Tout fonctionne bien mais mon problème est qu'à chaque fois que je dois entrer mon mot de passe car j'utilise sudo . Que puis-je faire pour fournir également le mot de passe pour sudo dans cet alias ?

J'ai vu cette question mais ça n'a pas aidé.

2voto

QuickishFM Points 889

Vous pouvez utiliser :

echo "<sudo password>" | sudo -S sh -c "echo \"<openconnect password\" | openconnect server --user=username --passwd-on-stdin --no-cert-check"

en le remplaçant par le mot de passe nécessaire à l'utilisateur root et par votre mot de passe openconnect.

Cela devrait fonctionner parce que vous commencez par transmettre le mot de passe sudo à sudo lui-même (en utilisant -S comme dans votre question liée, pour recevoir le mot de passe via stdin) et ensuite vous exécutez (en tant que root) une autre commande - c'est ce qui suit sh -c fait (lorsqu'il est suivi d'une chaîne de caractères qui est votre commande). Nous ajoutons notre commande à sh -c qui inclut l'envoi du mot de passe d'openconnect à openconnect - à ce stade, openconnect fonctionne en tant que root et n'a donc pas besoin de sudo avant lui.

Bien que je n'utilise pas openconnect, j'ai testé avec echo "mypassword" | sudo -S sh -c "whoami | xargs -i echo {} pour tester le piping de la valeur de whoami qui me dit root confirmant que le sudo fonctionne. Il se peut que vous obteniez une ligne dans stdout (votre terminal) indiquant d'entrer le mot de passe, mais cela fonctionnera quand même - vous pouvez ignorer cette ligne si vous l'avez spécifiée dans stdin.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X