Vous voulez améliorer cette question ? Mettez à jour la question afin qu'elle soit sur le sujet pour Unix et Linux Stack Exchange.
Fermé il y a 2 ans.
Améliorer cette question
Existe-t-il un moyen d'utiliser les multiples commandes dans sshpass
, j'ai essayé avec des combinaisons de différences mais cela génère une erreur.
$ sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no [email protected]$ipaddress << EOF
command_one
command_two
command_three
EOF
Quelle est la commande correcte et exacte, veuillez me fournir un exemple si possible.
Réponse acceptée :
Votre solution fonctionne avec ou sans sshpass, si cela ne fonctionne pas pour vous, il y a probablement quelque chose d'autre qui ne va pas.
Notez également que vous devez toujours citer chaque variable.
De plus, vous ne devriez pas désactiver à la légère la vérification stricte des clés d'hôte. Si votre clé d'hôte change fréquemment, votre serveur est probablement compromis
Voici quelques façons d'atteindre votre objectif :
Utilisation d'un séparateur de commandes (;
, &&
, ||
)
sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "[email protected]" 'command_one; command_two; command_three'
Utilisation d'un here-doc (EOF entre guillemets simples pour que toutes les substitutions de variables/commandes se développent sur l'hôte distant) :
sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "[email protected]" <<EOF
command_one
command_two
command_three
EOF
Utilisation d'un fichier séparé :
fichier.sh
command_one
command_two
command_three
Exécutez ensuite comme ceci :
cat file.sh | sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "[email protected]"
Utilisation d'un tunnel ssh :
sshpass -p "$password" ssh -f -L 3306:localhost:3306 "[email protected]" sleep 300 # This will open a tunnel to the remote host and hold it open for 5 minutes
ssh -T "[email protected]" 'command_one'
ssh -T "[email protected]" 'command_two'
ssh -T "[email protected]" 'command_three'