参考文章:http://www.mamicode.com/info-detail-1105345.html
1.ssh与sshpass的区别
- ssh登录需要与用户进行交互,需要用户输入密码
- sshpass 允许使用-p参数指定明文密码
2.sshpass的用法
使用-p参数指定密码
- sshpass -p password ssh -p port user@ip 登录
- sshpass -p password ssh -p port user@ip " cmd " 执行命令
- sshpass -p password scp user@ip:remote_file local scp命令
使用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" ,其中两者顺序可以调换
字背景颜色范围:40----49
字颜色:30-----------39
其他属性
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐