注意:
在使用 spawn 参数之前,要先安装 expect
内容:
内容一:set 参数
1.1 set 参数的作用
设置 expect 参数等待执行的时间 (默认是 30 秒) 或者其它变量
1.2 set 参数的案例
#!/bin/bash
set timeout 30
或者:
#!/usr/bin/expect
set timeout 30
(补充:这里以设置 expect 参数的等待时间为 30 秒为例)
内容二:spawn 参数
2.1 spawn 参数的作用
脚本开始根据出现的输出自动执行命令
2.2 spawn 参数的使用案例
#!/bin/bash
expect << EOF
spawn ssh mingyuzhu@10.0.0.1
expect "password:" {send "123\r"}
expect ">" {send "\r"}
EOF
或者:
#!/usr/bin/expect
spawn ssh mingyuzhu@10.0.0.1
expect {"password:" {send "123\r"}}
expect eof
(补充:这里以使用 mingyuzhu 用户通过 SSH 登录 IP 地址为 10.0.0.1 的服务器,同时当输出的最后的字段是 “password:” 时自动输入 “123” 并回车为例)
内容三:expect 参数
3.1 expect 参数的作用
后面接预期出现的内容。可以跟 send 参数配合,实现出现预期内容后执行什么命令,也可以不跟 send 参数配合只是出现什么内容后直接退出
3.2 expect 参数的使用案例
3.2.1 expect 参数和 send 参数配合的使用案例 (出现预期内容后自动执行命令)
#!/bin/bash
expect << EOF
spawn ssh mingyuzhu@10.0.0.1
expect "password:" {send "123\r"}
expect ">" {send "\r"}
EOF
或者:
#!/usr/bin/expect
spawn ssh mingyuzhu@10.0.0.1
expect {"password:" {send "123\r"}}
expect eof
(补充:这里以使用 mingyuzhu 用户通过 SSH 登录 IP 地址为 10.0.0.1 的服务器,同时当输出的最后的文本是 “password:” 时自动输入 “123” 并回车为例)
3.2.2 expect 参数不和 send 参数配合的使用案例 (出现什么内容后直接退出)
#!/usr/bin/expect
spawn ssh mingyuzhu@10.0.0.1
expect {
\"Linux*\" { exit 200 }
timeout { exit 100 }
incorrect { exit 100 }
eof { exit 100 }
}
return $?
interact
expect eof
(
补充:
1) 这里以使用 mingyuzhu 用户通过 SSH 登录 IP 地址为 10.0.0.1 的服务器
2) 同时当输出的最后的文本是以 “Linux” 开头时,返回值是 200,超市或其他的返回值是 100
3) 并最后将控制权还给用户为例
)
内容四:send 参数
4.1 send 参数的作用
后面接要执行的命令。当预期出现的内容出现后,执行这些命令
4.2 send 参数的使用案例
#!/bin/bash
expect << EOF
spawn ssh mingyuzhu@10.0.0.1
expect "password:" {send "123\r"}
expect ">" {send "\r"}
EOF
或者:
#!/usr/bin/expect
spawn ssh mingyuzhu@10.0.0.1
expect {"password:" {send "123\r"}}
expect eof
(补充:这里以使用 mingyuzhu 用户通过 SSH 登录 IP 地址为 10.0.0.1 的服务器,同时当输出的最后的字段是 “password:” 时自动输入 “123” 并回车为例)
内容五:eof\EOF 参数
5.1 eof\EOF 参数的作用
代表结束所有,如果没有 EOF 的话最后的命令可能不会执行完
5.2 eof\EOF 参数的使用案例
#!/bin/bash
expect << EOF
spawn ssh mingyuzhu@10.0.0.1
expect "password:" {send "123\r"}
expect ">" {send "\r"}
EOF
或者:
#!/usr/bin/expect
spawn ssh mingyuzhu@10.0.0.1
expect {"password:" {send "123\r"}}
expect eof
(补充:这里以使用 mingyuzhu 用户通过 SSH 登录 IP 地址为 10.0.0.1 的服务器,同时当输出的最后的字段是 “password:” 时自动输入 “123” 并回车为例)
内容六:interact 参数
6.1 interact 参数的作用
代表结束自动交互,就是把控制权交给用户
6.2 interact 参数的使用案例
#!/bin/bash
expect << EOF
spawn ssh mingyuzhu@10.0.0.1
expect "password:" {send "123\r"}
expect ">" {send "\r"}
EOF
或者:
#!/usr/bin/expect
spawn ssh mingyuzhu@10.0.0.1
expect {"password:" {send "123\r"}}
expect eof
(补充:这里以使用 mingyuzhu 用户通过 SSH 登录 IP 地址为 10.0.0.1 的服务器,同时当输出的最后的字段是 “password:” 时自动输入 “123” 并回车为例)