Linux系统expect命令操作实例
更新日期:2015-04-11 08:23 作者:w8系统下载 来源:w8xitong.com
Linux众多命令中,expect命令比较不常见,我们可以使用expect命令来实现脚本的自动登录、等待进程的反馈等。那么expect命令还有哪些用途呢?随小编一起来瞧瞧吧。
先来看一段代码:
#!/usr/bin/expect
set timeout 30
spawn ssh -l root 192.168.1.188
expect “password:”
send “abc123456\r”
interact
对这6行进行下解释:
第1行[#!/usr/bin/expect]
这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。 这一行需要在脚本的第一行。
第2行[set timeout 30]
基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒
第3行 [spawn ssh -l username 192.168.1.188]
spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命 令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。 它主要的功能是给ssh运行进程加个壳,用来传递交互指令。
第4行[expect “password:”]
这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命 令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30 秒
第5行[send “abc123456\r”]
这里就是执行交互动作,与手工输入密码的动作等效。
温馨提示: 命令字符串结尾别忘记加上“\r”,如果出现异常等待的状态可以核查一下。
第6行[interact]
执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。
在Linux下,执行ssh登陆或者是scp复制文件的时候可以使用到该命令,实现自动输入密码。
案例1:远程执行命令
#!/usr/bin/expect -f
set timeout 30
spawn ssh -l root 192.168.1.188
expect {
“yes/no” { send “yes\r”;exp_continue }
“password:” { send “abc123456\r” }
}
expect -re “\](\$|#) ”
send “bash /root/test.sh \r”
expect -re “\](\$|#) ”
send “exit\r”
该代码的功能是执行远程服务器上的/root/test.sh脚本,参数“-re”是匹配正则表达式。可以写多行send,执行多个命令。该脚本的另一种写法
#!/bin/bash
expect -c “
spawn ssh root@192.168.1.188 \”ifconfig;whoami;pwd;echo hello;\“
expect {
\”*assword\“ {set timeout 30; send \”abc123456\r\“;}
\”yes/no\“ {send \”yes\r\“; exp_continue;}
系统推荐
电脑公司 Ghost W8.1 X64 极速体验版 V2015.07
电脑公司Ghost Win8.1 X64位 推荐装机版v2017.06(绝对激活)
- 番茄花园 Ghost W8.1 X64 正式装机版 2016.02 01-30
- 深度技术Ghost Win8.1 x64 增强装机版2017V06(无需激活) 05-21
- 新萝卜家园Ghost Win8.1 X64 绿色装机版2017v08(永久激活) 07-22
- 番茄花园Whost W8.1 32位 装机版 2016.08(自动激活) 07-28
- 中关村 GHOST_W8.1_32位 快速装机版 v2014.12 11-26
- 电脑公司 GHOST W8.1 64位 装机特别版 2015.02 01-30
- 新萝卜家园Ghost Win8.1 x64位 家庭装机版v201806(激活版) 05-26
- 电脑公司Ghost Win8.1 64位 快速装机版v2018.09月(绝对激活) 08-27
- 番茄花园Ghost Win8.1x86 电脑城装机版v2021.06月(自动激活) 05-11
- 系统之家Ghost Win8.1 (32位) 收藏装机版V2017.12月(免激活) 11-30
- 电脑公司Ghost Win8.1 X64位 极速通用版v201705(免激活) 05-10
- 新萝卜家园Ghost Win8.1 X64 多驱动装机版V2020年04月(自动激活) 03-18
- 系统之家Ghost Win8.1 64位 经典装机版2018V05(完美激活) 04-30
- 番茄花园Ghost W8.1 32位 增强装机版 2015.12 11-27
- 深度技术Ghost Win8.1 (X32) 装机装机版V201806(完美激活) 05-26
- 1 系统之家Ghost Win8.1 x64 推荐装机版2020年06月(无需激活)
- 2 番茄花园Ghost Win8.1x86 完美装机版v202101(绝对激活)
- 3 番茄花园Win8.1 大神2021新年春节版64位
- 4 深度技术Win8.1 完整装机版 2019.11(32位)
- 5 电脑公司Ghost Win8.1 X64 稳定装机版v2017.07月(无需激活)
- 6 雨林木风 Ghost W8.1 64位 装机版 2016.07
- 7 Ghost W8.1 32位 装机版 2016.06
- 8 新萝卜家园Ghost Win8.1 x64位 快速装机版V2019年08月(无需激活)
- 9 中关村 GHOST W8.1 X64 安全装机版 2015.06
- 10 大地系统 Ghost W8.1 32位 装机版 2016.05标准
- 1 电脑公司Ghost W8.1 x32 纯净版(免激活)2016.01
- 2 电脑公司Ghost Win8.1x86 完美纯净版V201912(无需激活)
- 3 深度技术Ghost Win8.1 X32 纯净版V2017年04月(绝对激活)
- 4 电脑公司Ghost Win8.1 64位 经典纯净版v2021.01月(完美激活)
- 5 番茄花园官网Ghost W8.132位 万能纯净版 2016.07
- 6 新萝卜家园Window8.1 32位 尝鲜纯净版 v2020.04
- 7 雨林木风Win8.1 Ghost 64位 老机纯净版 v2020.02
- 8 电脑公司Ghost Win8.1x86 好用纯净版2021.08(绝对激活)
- 9 电脑公司Ghost Win8.1 X64位 办公纯净版V201710(无需激活)
- 10 新萝卜家园Ghost Win8.1 x64位 精选纯净版v201808(绝对激活)
- 1 宏碁(acer)Ghost W8.1 32位 专用系统 V2016
- 2 联想笔记本 Ghost W8.1 32位 装机版 2016.06
- 3 华硕 GHOST W8.1 64位 极速装机版 2015.09
- 4 宏碁笔记本 Ghost W8.1 32位 装机版 2016.05
- 5 (dell戴尔)GHOST W8.1 64位 修正版 2016
- 6 【2014.09】惠普专用(32位)GhostW8.1x86专业快速装机版系统
- 7 东芝笔记本 Ghost W8.1 64位 装机版 2016.05
- 8 (toshiba东芝)GHOST W8.1 64位 旗舰版 2016
- 9 联想笔记本 GHOST W8.1 64位 免激活专业版 2014.12
- 10 (asus华硕)GHOST W8.1 64位 特别版 2016