Aperçu
Les administrateurs du système Linux se connectent normalement aux serveurs Linux en fournissant un mot de passe ou en utilisant une authentification basée sur une clé. sshpass est un outil qui nous permet de fournir automatiquement des mots de passe à l'invite de commande afin que les scripts automatisés puissent être exécutés comme souhaité par les utilisateurs. sshpass fournit un mot de passe à l'invite ssh à l'aide d'un tty dédié, faisant croire à ssh qu'un utilisateur interactif fournit un mot de passe.
Certaines des utilisations courantes de sshpass
1. effectuer des sauvegardes sur un serveur distant
2. exécuter des commandes sur des systèmes à une heure spécifiée.
Installation de sshpass
1. Distributions basées sur Centos :
Configurez le référentiel EPEL à partir de https://fedoraproject.org/wiki/EPEL, puis en tant que root, exécutez :
# yum -y install sshpass
2. Distributions basées sur Ubuntu/Debain :
En tant que root, exécutez :
# apt-get install sshpass
3. Compilez et installez à partir de la source :
# wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz # tar -zxvf sshpass.tar.gz # cd sshpass-1.05/ # ./configure # make # make install # which sshpass /usr/local/bin/sshpass
Obtenir de l'aide
# sshpass -h Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters -f filename Take password to use from file -d number Use number as file descriptor for getting password -p password Provide password as argument (security unwise) -e Password is passed as env-var "SSHPASS" With no parameters – password will be taken from stdin -h Show help (this screen) -V Print version information
Au plus l'un des -f, -d, -p ou -e doit être utilisé
Exemple 1 :fournir un mot de passe avec ssh
# sshpass -p 'password' ssh ldap.thegeekdiary.com -l root -o StrictHostKeyChecking=no
Où :
mot de passe est le mot de passe de votre serveur (ldap.thegeekdiary.com). 'StrictHostKeyChecking=non ' est utilisé pour contrôler les connexions aux machines dont la clé d'hôte n'est pas connue ou a changé.
EXEMPLE :2 POUR EXÉCUTER UNE COMMANDE SUR LE SERVEUR À DISTANCE VIZ VÉRIFIER LE TEMPS DE DISPONIBILITÉ ET UNNAME
Exemple 2 :Pour exécuter une commande sur le serveur distant
Essayons d'exécuter 2 commandes "uptime" et "uname" sur le serveur distant à l'aide de la commande sshpass :
# sshpass -p 'password' ssh ldap.thegeekdiary.com -l root -o StrictHostKeyChecking=no "uptime;uname -a"
Exemple de sortie :
18:49:34 up 21 days, 18:49, 3 users, load average: 0.01, 0.00, 0.00 Linux ldap.thegeekdiary.com 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux
Exemple 3 :copier un fichier à l'aide de rsync sur un serveur
Dans notre cas, nous copions un fichier sshpass.tar.gz sur un serveur distant ldap.thegeekdiary.com
# sshpass -p 'password' rsync -av --progress sshpass.tar.gz [email protected]:/tmp/
Sortie de la commande ci-dessus :
sending incremental file list sshpass.tar.gz 98362 100% 62.56MB/s 0:00:00 (xfer#1, to-check=0/1) sent 98472 bytes received 31 bytes 197006.00 bytes/sec total size is 98362 speedup is 1.00 root@server1:/home/thegeekdiary#
Exemple 4 :boucle for pour copier sur des serveurs distants
Créez un fichier comme suit :
# touch /tmp/scr
Le fichier doit contenir le nom des hôtes :
server2.thegeekdiary.com server3.thegeekdiary.com server4.thegeekdiary.com server5.thegeekdiary.com
# for i in `cat /tmp/scr`; do echo " ";echo "###$i####"; sshpass -p 'password' rsync -av --progress sshpass.tar.gz root@$i:/tmp/; done
Sortie de la commande ci-dessus :
###server2.thegeekdiary.com#### sending incremental file list sent 54 bytes received 12 bytes 132.00 bytes/sec total size is 98362 speedup is 1490.33 ###server3.thegeekdiary.com#### sending incremental file list sent 54 bytes received 12 bytes 44.00 bytes/sec total size is 98362 speedup is 1490.33 ###server4.thegeekdiary.com#### sending incremental file list sent 54 bytes received 12 bytes 132.00 bytes/sec total size is 98362 speedup is 1490.33 ###server5.thegeekdiary.com#### sending incremental file list sent 54 bytes received 12 bytes 132.00 bytes/sec total size is 98362 speedup is 1490.33