Übersicht
Linux-Systemadministratoren melden sich normalerweise bei den Linux-Servern an, indem sie entweder ein Kennwort angeben oder eine schlüsselbasierte Authentifizierung verwenden. sshpass ist ein Tool, mit dem wir Passwörter automatisch an die Eingabeaufforderung liefern können, sodass automatisierte Skripte nach Wunsch der Benutzer ausgeführt werden können. sshpass liefert das Passwort an die ssh-Eingabeaufforderung mit dediziertem tty und täuscht ssh vor, zu glauben, dass ein interaktiver Benutzer ein Passwort liefert.
Einige der üblichen Verwendungen von sshpass
1. Backups auf einen Remote-Server bringen
2. Ausführen von Befehlen auf Systemen zu einem bestimmten Zeitpunkt.
sshpass-Installation
1. Centos-basierte Distributionen:
Richten Sie das EPEL-Repository von https://fedoraproject.org/wiki/EPEL ein und führen Sie dann als Root aus:
# yum -y install sshpass
2. Ubuntu/Debain-basierte Distributionen:
Als Root ausführen:
# apt-get install sshpass
3. Kompilieren und installieren Sie von der Quelle:
# 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
Hilfe bekommen
# 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
Es sollte höchstens eines von -f, -d, -p oder -e verwendet werden
Beispiel 1:Passwort mit ssh angeben
# sshpass -p 'password' ssh ldap.thegeekdiary.com -l root -o StrictHostKeyChecking=no
Wo:
Passwort ist das Passwort Ihres Servers (ldap.thegeekdiary.com). ‘StrictHostKeyChecking=no ‘ wird verwendet, um Anmeldungen an Rechnern zu kontrollieren, deren Hostschlüssel nicht bekannt ist oder sich geändert hat.
BEISPIEL:2, UM EINEN BEFEHL AUF DEM REMOTE-SERVER AUSZUFÜHREN, VIZ UPTIME UND UNAME PRÜFEN
Beispiel 2:So führen Sie einen Befehl auf dem Remote-Server aus
Lassen Sie uns versuchen, die beiden Befehle „uptime“ und „uname“ auf dem Remote-Server mit dem sshpass-Befehl auszuführen:
# sshpass -p 'password' ssh ldap.thegeekdiary.com -l root -o StrictHostKeyChecking=no "uptime;uname -a"
Beispielausgabe:
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
Beispiel 3:Kopieren einer Datei mit rsync auf einen Server
In unserem Fall kopieren wir eine Datei sshpass.tar.gz auf einen entfernten Server ldap.thegeekdiary.com
# sshpass -p 'password' rsync -av --progress sshpass.tar.gz [email protected]:/tmp/
Ausgabe des obigen Befehls:
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#
Beispiel 4:for-Schleife zum Kopieren auf entfernte Server
Erstellen Sie eine Datei wie folgt:
# touch /tmp/scr
Die Datei sollte den Namen des Hosts enthalten:
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
Ausgabe des obigen Befehls:
###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