J'ai un système auquel je ne peux me connecter que sous mon nom d'utilisateur (myuser), mais je dois exécuter des commandes en tant qu'autre utilisateur (scriptuser). Jusqu'ici, je suis venu avec ce qui suit pour exécuter les commandes dont j'ai besoin:
ssh -tq myuser@hostname "sudo -u scriptuser bash -c \"ls -al\""
Si toutefois, lorsque j'essaie d'exécuter une commande plus complexe, telle que [[ -d "/tmp/Some directory" ]] && rm -rf "/tmp/Some directory"
j'ai rapidement des problèmes avec les citations. Je ne sais pas comment je pourrais passer cet exemple de commande complexe à bash -c
, alors que \"
les limites de la commande que je passe sont déjà délimitées (et que je ne sais donc pas comment citer / tmp / Some directory, qui inclut des espaces.
Existe-t-il une solution générale me permettant de passer n’importe quelle commande, quelle que soit la complexité / folie de la citation, ou s’agit-il d’une limite quelconque que j’ai atteinte? Existe-t-il d'autres solutions possibles et peut-être plus lisibles?