神奇的expect
想写自动化脚本的时候,遇到需要交互的,如ssh,scp,就束手无策,直到我知道了expect。
expect 有一系列expect-send对组成,就像聊天一样。
expect A send B
expect C send D
先来个例子
#!/usr/bin/expect
set timeout 5
spawn ssh 192.168.2.38
expect "password" {send "slk\n"}
expect "Last login" {send " ls -l\n"}
expect eof
exit
/usr/bin/expect是指明该脚本要调用expect
set timeout 5,设置每个expect等待的时间,-1则为永不超时,在expect scp xxx xxx 的时候很好用,时间如果设太短,还没传完,expect就返回了。
spawn 创建一个进程,执行ssh 192.168.2.38命令,然后下面就是expect 和send的命令对了。
expect "password" {send "slk\n"}, 当出现“expect"的时候,发送,"slk\n",必须要加\n,就和我们平时自己输秘密最后要加个\n一样。
expect可以不止一个,所以下面可以继续expect和send。如果要执行的命令有很多,可以不写那么多expect send,直接把命令写在另一个脚本里,expect "Last login" {send " ./do.sh\n"} 就好了,expect是为交互而存在的,在不需要交互的地方调用expect是浪费自己的时间。
神奇的expect的更多相关文章
- 使用expect在script中切换到root用户(精华)
使用expect在script中切换到root用户 1.尚观版本 http://www.uplook.cn/biancheng/133/1335040/ 1 a. 命令行: /usr/bin/expe ...
- 使用 expect 重启失败的 git pull/push 操作
问题的提出 最近使用 github 上传.下载项目代码时,经常会卡很久,有时候在命令行打了 git push 然后就去上厕所了,结果等我回来的时候,发现 push 早已经失败了,还得重新提交一下.如果 ...
- expect用法
1. [#!/usr/bin/expect] 这一行告诉操作系统脚本里的代码使用那一个shell来执行.这里的expect其实和linux下的bash.windows下的cmd是一类东西. 注意: ...
- BZOJ 1006 【HNOI2008】 神奇的国度
题目链接:神奇的国度 一篇论文题--神奇的弦图,神奇的MCS-- 感觉我没有什么需要多说的,这里简单介绍一下MCS: 我们给每个点记录一个权值,从后往前依次确定完美消除序列中的点,每次选择权值最大的一 ...
- 前端精选文摘:BFC 神奇背后的原理
BFC 已经是一个耳听熟闻的词语了,网上有许多关于 BFC 的文章,介绍了如何触发 BFC 以及 BFC 的一些用处(如清浮动,防止 margin 重叠等).虽然我知道如何利用 BFC 解决这些问题, ...
- expect基本使用方法
参考: http://www.cnblogs.com/lzrabbit/p/4298794.html expect是linux系统中可以和子进程进行交互的一个命令,使用它可以做一些自动化工作.pyth ...
- MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)
前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...
- 一行神奇的javascript代码
写本篇文章的缘由是之前群里@墨尘发了一段js代码,如下: (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~ ...
- expect实现自动登录
自动登录主机(ssh) 建脚本item2login.sh,包含如下内容 #!/usr/bin/expect set timeout 30 spawn ssh -p [lindex $argv 0] [ ...
随机推荐
- 点我吧工作总结(技术篇) Velocity
1. 什么是velocity Velocity[vəˈlɑ:səti],名称字面翻译为:速度.速率.迅速.该项目的开源地址:http://velocity.apache.org/,它是一个基于Java ...
- sql 2000 关于用户权限以及sp3问题的排查
今天在服务器上布置项目的时候tomcat启动报错,说是没有读取数据库的权限,于是开始查看自己的代码,结果发现代码中的数据库配置是正确的,于是开始找数据库本身的问题,当查看权限的时候本人新开的账户没有读 ...
- eventProxy
1.功能 解决javascript回调地狱 fs.readFile('./file1.txt', 'utf8', function(err, content1){ fs.readFile('./fil ...
- Java基础学习 -- Java(OOP)程序的设计原则
避免代码复制.解决方案:函数.父类: 封装.尽量private每个类的成员变量,用操作封装数据,减少类与类之间成员变量的直接调用,而是调用method,降低耦合: 可扩展性最大化.尽量使用框架+数据的 ...
- Dynamics.js - 创建逼真的物理动画的 JS 库
Dynamics.js 是一个用来创建物理动画 JavaScript 库.你只需要把dynamics.js引入你的页面,然后就可以激活任何 DOM 元素的 CSS 属性动画,也可以用户 SVG 属性. ...
- Clipboard.js – 现代方式实现复制文本到剪贴板
复制文本到剪贴板应该并不难,目前已经有很成熟的 Flash 方法.但是 Flash 已经在很多场合不适用了,特别是随着 HTML5 技术的发展.今天推荐的这个 Clipboard.js 库不依赖 Fl ...
- 使用js制作一般网站首页图片轮播效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- form中动态生成Radiobutton控件
public partial class GetLabelFields : Form { int tableCount; public GetLabelFields(AxMapControl axma ...
- SharePoint Error - An unrecognized HTTP response was received when attempting to crawl this item
SharePoint 2013爬网报错 An unrecognized HTTP response was received when attempting to crawl this item. V ...
- 折腾一天的WordPress
自从昨天开始要写博客,在网上找了找大家都比较推崇著名的WordPress,所以自己就闲来无事要坐下测试弄一个,不弄不知道,一弄折磨人啊,公司的破网直接想让我崩溃,所以这一天就在这搭建环境中度过,不过值 ...