web-dev-qa-db-fra.com

Plusieurs commandes dans sshpass

Existe-t-il un moyen d'utiliser les multiples commandes dans sshpass, j'ai essayé avec des combinaisons de différence, mais cela jette une erreur.

$ Sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no $username@$ipaddress << EOF
  command_one
  command_two
  command_three
EOF

Quelle est la commande correcte et exacte, veuillez me fournir un exemple si possible.

4
Harry

Votre solution fonctionne avec ou sans SSHPASS, si cela ne fonctionne pas pour vous, il y a probablement quelque chose d'autre faux.

Notez également que vous devriez toujours citer toutes les variables.

En outre, vous ne devriez pas désactiver la stricthostkeyChecking légèrement. Si votre clé d'hôte change fréquemment, votre serveur est probablement compromis

Voici quelques façons d'accomplir votre objectif cependant:


En utilisant un séparateur de commande (;, &&, ||)

sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress" 'command_one; command_two; command_three'

Utilisation d'un point ici (citation unique EOF pour avoir des substitutions de variables/de commande se développer sur l'hôte distant):

sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress" <<EOF
  command_one
  command_two
  command_three
EOF

Utilisation d'un fichier séparé:

fichier.sh

command_one
command_two
command_three

Ensuite, exécutez comme ceci:

cat file.sh | sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress"

Utiliser un tunnel SSH:

sshpass -p "$password" ssh -f -L 3306:localhost:3306 "$username@ipaddress" sleep 300 # This will open a tunnel to the remote Host and hold it open for 5 minutes
ssh -T "$username@ipaddress" 'command_one'
ssh -T "$username@ipaddress" 'command_two'
ssh -T "$username@ipaddress" 'command_three'

6
jesse_b

Essayez-le comme ceci:

$ Sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no $username@$ipaddress << EOF
command_one;
command_two;
command_three;
EOF

J'ai fait ce qui précède et ça marche bien.

3
slm