shell脚本实现自动ssh连接
expect 的四个关键命令:
- spawn:启动新的进程
- expect:从进程接收字符串
- send:用于向进程发送字符串
- interact:允许用户交互
代码实现如下:(如果是第一次连接可以先手动连接一下,进行验证,之后就可以用这个代码实现)
#!/usr/bin/expect
set host "127.0.0.1"
set username "root"
set password "123"
set timeout -1
spawn ssh $username@$host
expect "*password:"
send "$password\r"
interact
-
#!/usr/bin/expect
使用expect来解释该脚本; -
set host "127.0.0.1"
设置连接的主机地址 -
set username "root"
设置连接的用户名 -
set password "123"
设置连接的密码 -
set timeout -1
设置超时时间永不超时,默认为10s -
spawn ssh $username@$host
spawn是进入expect环境后才可以执行的expect内部命令,执行ssh -
expect "*password:"
expect是从进程接收字符串,当发送ssh请求时,服务器会返回输入秘密的字符串,用expect来接收 -
send "$password\r"
send向进程发送字符串,此处是自动输入密码 -
interact
是expect用来打开用户与产生进程之间通信的命令,就是登陆以后将远程服务器的终端保持在当前终端,而不是将远程终端关掉