千家信息网

shell学习之expect命令

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本文主要包括两个部分:expect命令的使用示例和对该示例进行说明。1. expect命令的使用示例 IP=192.168.1.18 PASS=passwd expect -c "
千家信息网最后更新 2026年11月01日shell学习之expect命令

本文主要包括两个部分:expect命令的使用示例和对该示例进行说明。

1. expect命令的使用示例

    IP=192.168.1.18    PASS=passwd    expect -c "             settimeout 60;             spawn ssh root@192.168.0.1             expect{                     \"*yes/no*\"{send \"yes\r\"; exp_continue}                     \"*password*\"{send \"$PASS\r\";}                    }                    expect eof"

2. 针对示例,对expect命令的使用进行说明

(1) -c 标志之后的命令在任何脚本之前执行,该命令应当被引用以防止被 shell 破坏。

(2) set timeout 60:设置超时时间,计时单位为秒,timeout -1 为永不超时。

(3) spawn是expect的初始命令,用于启动一个进程,之后所有的expect操作都在这个进程中进行,如果没有spawn语句,整个expect就无法进行下去,当然,如果真的不要spawn过程也没有关系,虽然这样就没有办法单独执行,但是这个脚本可以与任何调用它的进程进行交互。

(4) expect用于等候一个相匹配的输出,一旦匹配就执行后面的动作。在这个例子中,expect是依附于spawn命令的,当spawn后面的命令执行完毕后,expect命令就匹配命令执行后的关键词(yes/no),如果匹配到,就执行后面{ }中动作。

(5) expect的匹配可以看做是一个循环,通常匹配之后都会退出语句,但如果有exp_continue,则可以不断循环匹配。在该例子中,遇到"yes/no"时,送出"yes",然后继续expect,遇到密码提示时,送出密码,送完后退出。

(6) eof是必须去匹配的,在 spawn 进程结束后会向 expect 发送 eof;如果不去匹配,有时也能运行,比如 sleep 多少秒后再去 spawn 下一个命令,但是不要依赖这种行为,很有可能今天还可以,明天就不能用了。但是,如果不需要spawn的进程结束,不能 expect eof 了,如下面的例子:

      #!/usr/bin/expect       set timeout 30      spawn ssh 10.192.224.224      expect"password:"      send"mypassword\n"      expect "*$"      send "mkdirtmpdir\n"      expect"*$"

手动操作时 ssh 实际上也不会自己结束除非你 exit;所以你只能expect bash 的提示符,当然也可以是机器名等,这样才可以在远程创建一个目录。


命令 进程 示例 例子 动作 密码 脚本 语句 循环 提示 不断 两个 关键 关键词 办法 单位 实际 实际上 手动 提示符 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 互联网最新的科技 互联网通讯科技 极限挑战互联网科技 互联网科技网站 互联网科技宣传片 互联网金融和金融科技 中国互联网金融科技基金 金融科技和互联网金融 互联网和高科技公司 广州优美互联网科技 金融科技与互联网金融相同和不同 世界互联网科技公司市值排名 互联网科技的全部知识 上海钢联属于互联网科技股吗 江苏苏星互联网科技有限公司 厦门江牛科技互联网 下一代互联网重大应用科技园 银川新华互联网科技学校是国营吗 三亚科技创新互联网基地 易互联网科技有限公司 海南购全球互联网科技 团飞科技与伯堂互联网服务平台 重庆威客帮互联网科技 互联网金融中的现代科技 开一家科技互联网公司需要多少钱 健康食品互联网创新科技园项目 深圳市罗太互联网科技有限公司 互联网时代的科技公司 本届互联网大会上的黑科技
0