加速器:Expect脚本
1、Expect简介
Expect是由 Don Libes 基于Tcl语言开发的,并被广泛应用于交互式操作和自动化测试的场景中,它尤其适用于需要对多台服务器执行相同操作的环境中,可以大幅度提高系统管理人员的工作效率。目前,大部分 Unix/Linux 系统安装有expect。万一系统中没有,可以从 http://expect.nist.gov/| f52496c84460745c17c9a9c5df59acb61 | 下载相应的包安装。
2、Expect语言最基本的命令
$ expect
expect1.1> send ....
expect1.1> expect ....
........
#!expect -f
expect "hi"
send "hello there"
spawn命令会调用另一个程序。它的第一个参数要启动程序的名字;剩余的参数则会被传递给该程序作为参数。比如:
expect1.1> spawn ssh username@192.168.1.1
命令会衍生出一个ssh进程,以username用户的身份登陆ip地址为192.168.1.1的电脑中。
用户通过spawn,send和expect这三个基本命令,就可以编写一段expect程序来实现自动化工作。
3、Gentoo下Expect的安装
$ sudo emerge -avt dev-tcltk/expect
4、示例:Expect两个脚本的实现
4.1 通过lftp登陆别人的电脑
#!/usr/bin/expect
set timeout 1
set host [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh $host -l $user
expect {"(yes/no)?" {send "yes"expect "Password"send "$password\r"}"Password:" {send "$password\r"}
}
send "exit \n"
spawn lftp sftp://$user@$host
expect "Password:"
send "$password\r"
interact
#!/usr/bin/expect
set timeout 1
set host 192.168.0.50
set user xiaomi
set password 123
spawn ssh $host -l $user
expect {"(yes/no)?" {send "yes"expect "Password"send "$password"}"Password:" {send "$password\r"}
}
send "exit \n"
spawn lftp sftp://$user@$host
expect "Password:"
send "$password\r"
interact
4.2 内核更新
#!/usr/bin/expect
set timeout 60
set kernel [lindex $argv 0]
spawn su
expect "Password:"
send "123\r"
expect "#"
send "cd /usr/src/ \n"
expect "#"
send "cp ./linux/.config ./linux-$kernel-gentoo/ \n"
expect "#"
send "rm linux \n"
expect "#"
send "ln -s /usr/src/linux-$kernel-gentoo linux \n"
expect "#"
send "cd linux \n"
expect "#"
send "make -j4 && make modules_install \n"
expect "#"
send "mount /boot && rm /boot/kernel-* \n"
expect "#"
send "cp arch/x86/boot/bzImage /boot/kernel-$kernel-gentoo \n"
expect "#"
send "grub2-mkconfig -o /boot/grub/grub.cfg \n"
expect "#"
send "grub2-install /dev/sda \n"
expect "#"
send "exit \n"
interact
$ expect kernel_renew.expect 4.2.1//4.2.1为你内核新版本号
加速器:Expect脚本相关推荐
- ssh其他机器的Expect脚本
ssh登陆其他机器的Expect脚本 #!/usr/bin/expect -fset user [lindex $argv 0] set ipaddr [lindex $argv 1] set pas ...
- expect脚本同步文件、 expect脚本指定host和要同步的文件 、 构建文件分发系统 、批量远程执行命令...
为什么80%的码农都做不了架构师?>>> 20.31 expect脚本同步文件 使用expect脚本同步文件 说明:核心命令是rsync #! /usr/bin/expect ...
- 小型自动化运维--expect脚本之自动同步
小型自动化运维--expect脚本之自动同步 expect脚本可以运用于自动化运维多个方面,例如:可以自动到远程机器执行命令,也可以传输文件到远程机器上. 脚本如下: #!/usr/bin/expec ...
- 20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行
20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行命令 20.30 expect脚本传递参数 20.27 分发系统介绍 分发系统,什么叫分发系统,首先 ...
- linux 行尾加字符串,linux – cat in expect脚本在字符串结尾添加新行
我在expect脚本中有以下内容 spawn cat version expect -re 5.*.* set VERSION $expect_out(0,string) spawn rpm --ad ...
- linux脚本expect分区,linux – 从不同位置执行Expect脚本
我试图从两个不同的位置运行我的Expect脚本,它将使用引用的以下Expect可执行文件: >我的linux主目录(#!/usr/bin/expect) >另一台服务器上的清晰视图(#!/ ...
- 小型自动化运维--expect脚本之传递函数
小型自动化运维--expect脚本之传递函数 [root@shiyanji ~]# vim 3.expect #!/usr/bin/expect set user [lindex $argv 0] s ...
- 使expect脚本传回返回值
使expect脚本传回返回值 1.使用expect示例: spawn $SPAWN_CMD expect { -re "Enter password for new role:" ...
- expect脚本同步文件,expect脚本指定host和要同步的文件,构建文件分发系统,批量远程执行命令...
2019独角兽企业重金招聘Python工程师标准>>> expect脚本同步文件 更改权限 执行脚本 查看执行结果 expect eof需要加上,作用是等脚本命令执行完再进行退出 e ...
最新文章
- [转自脚本之家] Javascript cookie 详解
- Vue-员工管理系统
- [蓝桥杯][2017年第八届真题]包子凑数(解题报告)
- Android的intent之间复杂参数的传递
- 贪心/二分查找 BestCoder Round #43 1002 pog loves szh II
- .NET 6 对 StackOverflow 的优化
- Codeforces Round #447 Div. 2 A.B.C
- html css 样式中100%width 仍有白边解决办法
- 斯坦福教授亲自上课!字节跳动夏令营超硬核课程实践项目等你来战
- 高薪诚聘游戏引擎研发,有意者请与我联系!
- 软件可靠性的一些关注点
- WebApplication(Web应用程序)和WebSite(网站)的区别
- QT_kvaser动态链接库配置
- matlab norm函数_机器人手眼标定MATLAB及C++实现(二十九)
- 64位CPU对于移动设备是没有意义
- 我是住在山里的小和尚,我把我的寺庙生活告诉大家[转载之2]
- 自兴人工智能——Python第三课(字符串和字典)
- python中保留两位小数或者多位小数的方法
- win10在电脑已经连接WIFI的情况下查询到WiFi密码(不方便询问或没有办法获得密码的时候)
- 决策树(分类树)——红酒数据(分类树的八个参数,一个属性,四个接口,以及绘图所用的代码)