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.