參考文章:http://www.mamicode.com/info-detail-1105345.html
1.ssh與sshpass的區別
- ssh登錄需要與用戶進行交互,需要用戶輸入密碼
- sshpass 允許使用-p參數指定明文密碼
2.sshpass的用法
使用-p參數指定密碼 |
|
使用ssh第一次登錄某台服務器時,會有提示“Are you sure you want to continue connecting (yes/no)”,這時用sshpass會不好使 解決辦法:可以在ssh命令后面加上 -o StrictHostKeyChecking=no來解決 eg:sshpass -p password ssh -o StrictHostKeyChecking=no user@ip 除此之外還可以修改ssh的配置文件,在所有機器上修改/etc/ssh/ssh_config (mac中為/etc/ssh_config)文件中設置StrictHostKeyChecking no即可(默認為 #StrictHostKeyChecking ask ) |
使用-f參數從指定文件中讀取密碼 |
echo 'password' >mypasswd sshpass -f mypasswd ssh user@ip |
|
使用-e參數從環境變量中獲取ssh密碼 | export SSHPASS= "password " sshpass -e ssh user@ip |
案例:
功能 | 腳本 | 知識點 | ||||||
驗證服務器是夠能夠成功登錄 | cat check_passwd.sh #!/bin/bash ips=`cat server_list.txt` for ip in $ips do echo ==========$ip=========== sshpass -p "server_password" ssh root@$ip ":" [ $? -eq 0 ] && echo -e "\033[32m ==$ip==password is ok... \033[0m" || echo -e "\033[31m ==$ip==Password is error!!! \033[0m" done |
1.server_list.txt是存放server IP的list 2.驗證是否能登陸時,使用命令ssh root@$ip ":" ,其中":"代表要在登陸到的服務器中執行的命令,如果沒有這個命令,使用該命令就直接登錄到遠程機器中,而不會執行后續步驟 3.shell中設置顏的格式為格式: echo -e "\033[字背景顏色;字體顏色m 字符串 \033[0m" 其中其他屬性與字體顏色同時使用時用時,格式為 echo -e "\033[5m \033[字背景顏色;字體顏色m 字符串 \033[0m" ,其中兩者順序可以調換
|