Přehled
Správci systému Linux se běžně přihlašují k serverům Linux buď zadáním hesla, nebo pomocí ověřování na základě klíče. sshpass je nástroj, který nám umožňuje automaticky dodávat hesla do příkazového řádku, aby bylo možné spouštět automatické skripty podle přání uživatelů. sshpass dodává heslo do výzvy ssh pomocí vyhrazeného tty, čímž klame ssh, aby se domníval, že heslo zadává interaktivní uživatel.
Některá z běžných použití sshpass
1. přijímání záloh na vzdálený server
2. provádění příkazů na systémech v určený čas.
Instalace sshpass
1. Distribuce založené na Centos:
Nastavte úložiště EPEL z https://fedoraproject.org/wiki/EPEL a poté jako root:
# yum -y install sshpass
2. Distribuce založené na Ubuntu/Debainu:
Jako root spusťte:
# apt-get install sshpass
3. Zkompilujte a nainstalujte ze zdroje:
# 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
Získání nápovědy
# 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
Mělo by být použito maximálně jedno z -f, -d, -p nebo -e
Příklad 1:zadejte heslo pomocí ssh
# sshpass -p 'password' ssh ldap.thegeekdiary.com -l root -o StrictHostKeyChecking=no
Kde:
heslo je heslo vašeho serveru (ldap.thegeekdiary.com). ‘StrictHostKeyChecking=no ‘ se používá k řízení přihlášení k počítačům, jejichž hostitelský klíč není znám nebo se změnil.
PŘÍKLAD:2 PRO SPUŠTĚNÍ NĚKTERÉHO PŘÍKAZU NA VZDÁLENÉM SERVERU VIZ KONTROLA UPTIME A UNAME
Příklad 2:Spuštění nějakého příkazu na vzdáleném serveru
Zkusme spustit 2 příkazy „uptime“ a „uname“ na vzdáleném serveru pomocí příkazu sshpass:
# sshpass -p 'password' ssh ldap.thegeekdiary.com -l root -o StrictHostKeyChecking=no "uptime;uname -a"
Ukázkový výstup:
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
Příklad 3:Kopírování souboru pomocí rsync na server
V našem případě kopírujeme soubor sshpass.tar.gz na vzdálený server ldap.thegeekdiary.com
# sshpass -p 'password' rsync -av --progress sshpass.tar.gz [email protected]:/tmp/
Výstup výše uvedeného příkazu:
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#
Příklad 4:smyčka for pro kopírování na vzdálené servery
Vytvořte soubor následujícím způsobem:
# touch /tmp/scr
Soubor by měl obsahovat názvy hostitelů:
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
Výstup příkazu výše:
###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