Linux
常用
管理语句
Shell命令(变量)
正则表达式
重定向
EXPECT
流程控制
函数
日志
SED
sed常用操作
sed组合命令
sed脚本
AWK
awk常用
awk流程控制
awk脚本
SSH
SSH密钥的批量分发与执行
SSH连接很慢
ACL文件访问控制
计划任务
常用语句
批量添加用户和密码
批量修改密码
临时和永久关闭Selinux
修改主机名
Linux内核参数
无人值守安装
ISO镜像(mondorescue)
软件管理
SYSTEM服务
YUM本地仓
存储管理
逻辑卷LVM
磁盘阵列RAID
备份恢复相关命令
fio磁盘性能测试
内存管理
IPTABLES防火墙
FIREWALLD防火墙
curl请求
Linux问题
漏洞修复
限制网卡带宽
CentosYUM源
rsyslog 占用内存过高
df -h 卡住解决
Linux故障问题
网络配置
升级内核
Openssl生成证书
CENTOS6升级7
本文档使用MrDoc发布
返回首页
-
+
EXPECT
2020年2月5日 12:21
admin
##expect安装 yum -y install expect 或 apt-get install expect ##expect命令 spawn 交互程序开始后面跟命令或者指定程序 expect 获取匹配信息匹配成功则执行expect后面的程序动作 send exp_send 用于发送指定的字符串信息 exp_continue 在expect中多次匹配就需要用到 send_user 用来打印输出 相当于shell中的echo exit 退出expect脚本 eof expect执行结束 退出 set 定义变量 puts 输出变量 set timeout 设置超时时间 ##expect用法 spawn ssh username@host # 远程登录 expect "*assword" # 提示为:"username@host's password:", 等待用户输入密码、 send "${password}\r" # 这时使用send模拟用户输入密码的字符串,完成登录验证 #spawn 后面跟上一个命令操作,表示开启一个会话。expect 等待输出特定的字符串(通常是提示符),然后使用send 发送交互字符串。 ####expect多分支写法: spawn ssh-copy-id -f -o ConnectTimeout=5 $SERVER_USER@$SERVER_IP expect { "yes/no" { send "yes\r"; exp_continue } #exp_continue 附加于某个 expect 判断项之后,可以使该项被匹配后,还能继续匹配该 expect 判断语句内的其他项。 -nocase "password:" { send "$SERVER_PAWD\r" } #-nocase 不区分大小写 } expect eof #interact 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。 #expect eof 结束expect匹配。一般为远程连接时,连接中断会报此错。在此处出现理解为interact已经退出expect捕获信息了,再次执行expect eof即会报错。 ##expect支持if语句 if {条件1} { 条件1执行语句 } elif {条件2} { 条件2执行语句 } else { 其他情况执行语句 } #说明: #1.if的条件用{}来包含条件 #2.if和后面的{}必须有空格隔开 #3.两个花括号之间必须有空格隔开,比如if {} {},否则会报错 expect:extra characters after close-brace #3.使用{来衔接下一行,所以if的条件后需要加左花括号{ #4.else不能单独放一行,所以else要跟在}后面
分享到: