背景
在linux服务器上进行开发时,往往需要进行密码登录,甚至有的需要先登录堡垒机,再登录开发机,
输入过程较为繁琐,因此考虑把登录命令写在脚本中,进行自动化登录。
方法
ssh登录是一个交互的过程,且没有特定的参数指定密码的输入方式,因而不能用管道、重定向的方式实现。
这种情况可以使用expect包进行自动登录功能的实现。
expect是一个用来处理人与程序交互的包,可以将交互过程用程序实现,适用于做ssh自动登录。
可以使用whereis命令查看是否安装了expect,如果没有的话,可以自行使用包管理工具进行安装。
安装命令 yum install expect # 有的时候需要root权限,及sudo yum install expect
自动登录脚本的编写如下:
脚本名称 sandbox_sign_in.exp 注意是以.exp为后缀的文件,因为需要expect命令来执行
#!/usr/bin/expect
set timeout 20
spawn ssh username@host
expect "*password:"
send "password\r"
interact
expect eof
第一行注释指定了使用expect执行,
第二行设置超时时间为20秒,
第三行spawn为expect执行命令的关键字,
第四行expect表示交互获取的内容是否包含”password:”字符串,
第五行表示将输入内容发送过去(加了个\r表示回车),
第六行:interact代表执行完留在远程控制台,不加这句执行完后返回本地控制台。
第七行:expect执行结束,退出
将这个脚本命名存在本地,在保存的路径下,执行expect sandbox_sign_in.exp 即可实现自动登录.