J'essaie d'exécuter une commande sshpass dans un script bash mais cela ne fonctionne pas.
Si j'exécute la même commande depuis le terminal, cela fonctionne bien, mais pas dans un script bash.
#! /bin/bash
sshpass -p 'password' ssh user@Host command
Je suis conscient des problèmes de sécurité mais ce n'est pas important maintenant.
Quelqu'un peut aider? Est-ce que je manque quelque chose?.
Merci
Faites which sshpass
dans votre ligne de commande pour obtenir le chemin absolu vers sshpass
et le remplacer dans le script bash.
Vous devriez probablement aussi faire la même chose avec la command
que vous essayez de lancer.
Le problème peut être que ce n'est pas le trouver.
Essayez l’option " -o StrictHostKeyChecking = no " sur ssh ("- o" étant le drapeau qui indique à ssh que vous allez utiliser une option). Cela accepte toute clé RSA entrante de votre connexion ssh, même si la clé ne figure pas dans la liste "hôte connu".
sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@Host 'command'
1 - Vous pouvez scripter la commande sshpass's ssh
comme ceci:
#!/bin/bash
export SSHPASS=password
sshpass -e ssh -oBatchMode=no user@Host
2 - Vous pouvez scripter la commande sshpass
de sftp
comme ceci:
#!/bin/bash
export SSHPASS=password
sshpass -e sftp -oBatchMode=no -b - user@Host << !
put someFile
get anotherFile
bye
!
Je ne comprenais pas comment la réponse acceptée répondait à la question de savoir comment exécuter des commandes sur le serveur après que sshpass est donné depuis le fichier de script bash. Pour cette raison, je fournis une réponse.
Après vos commandes de script fournies, exécutez des commandes supplémentaires comme ci-dessous:
sshpass -p 'password' ssh user@Host "ls; whois google.com;" #or whichever commands you would like to use, for multiple commands provide a semicolon ; after the command
Dans votre script:
#! /bin/bash
sshpass -p 'password' ssh user@Host "ls; whois google.com;"
Cela a fonctionné pour moi:
#!/bin/bash
#Variables
FILELOCAL=/var/www/folder/$(date +'%Y%m%d_%H-%M-%S').csv
SFTPHOSTNAME="myHost.com"
SFTPUSERNAME="myUser"
SFTPPASSWORD="myPass"
FOLDER="myFolderIfNeeded"
FILEREMOTE="fileNameRemote"
#SFTP CONNECTION
sshpass -p $SFTPPASSWORD sftp $SFTPUSERNAME@$SFTPHOSTNAME << !
cd $FOLDER
get $FILEREMOTE $FILELOCAL
ls
bye
!
Vous devez probablement installer sshpass:
Sudo apt-get install sshpass