场景:
由于多台机必须要登陆执行命令,需要使用密钥一台台登录,所以每次登陆机器的时候都需要手动输入域账号密码。密码太长且复杂,手动输入容易输错,故使用脚本来做这个事情,实现免输入密码登陆,工作效率大大提升!
解决方法: 1、使用expect 2、使用sshpass
1、expect方式输入ssh密码 首先我们创建以一个文本文件,命名为 proxy.expect,内容如下: - #!/usr/bin/expect
- # 设置超时时间,单位秒
- set timeout 10
- # 主要功能是给ssh运行进程加个壳,用来传递交互指令
- # ssh -A 是转发密钥设置,用于有堡垒机的场景,一般情况下不需要
- spawn ssh -A user@1.1.1.1
- # 判断上次输出结果里是否包含 Password: 的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的 10秒
- expect "Password:"
- # 发送密码 \r 表示字符串结束
- send "yourpassword\r"
- # 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。
- # 如果没有这一句登录完成后会退出,而不是留在远程终端上。
- interact
复制代码注意一下,这个 proxy.expect 文件里的内容,都是交给 expect 去执行的,而不是 bash,所以第一行的内容是 #!/usr/bin/expect,并且里面的命令如 spawn、expect、send、interact 都是 expect 的命令而不是 bash 命令。
执行命令如下:
2、sshpass方式输入ssh密码
- 安装:
- yum install -y sshpass
- 命令格式:
- sshpass -p 你的密码 ssh -A -g yourname@ip
复制代码
|