博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
expect的安装与使用
阅读量:5856 次
发布时间:2019-06-19

本文共 2771 字,大约阅读时间需要 9 分钟。

expect的安装与使用

是什么

expect 是用来进行自动化控制和测试的工具。主要是和交互式软件telnet ftp ssh 等进行自动化的交互。

如何安装

1.检测是否安装

ls /usr/bin |grep expect

如果不存在,则进行安装

2.安装

sudo apt-get install expect
$ ls /usr/bin |grep expectautoexpectexpectexpect_autoexpectexpect_autopasswdexpect_cryptdirexpect_decryptdirexpect_dislocateexpect_ftp-rfcexpect_kibitzexpect_lpunlockexpect_mkpasswdexpect_multixtermexpect_passmassexpect_rftpexpect_rlogin-cwdexpect_timed-readexpect_timed-runexpect_tknewsbiffexpect_tkpasswdexpect_unbufferexpect_weatherexpect_xkibitzexpect_xpstat

具体使用

案例一,进入ssh脚本

spawn是进入expect环境后才可以执行的expect内部命令。expect是一种脚本语言,它能够代替我们实现与终端的交互,我们不必再守候在电脑旁边输入密码,或是根据系统的输出再运行相应的命令。

1.创建脚本

#! /usr/bin/expect# 设置超时时间set timeout 3# fork一个子进程执行sshspawn ssh root@xxx.xxx.xxx.xxx# 捕获到密码expect "*password*"# 输入密码并回车send "xxxxxx\r"# 捕获#expect "*#"# 进入常用目录下send "cd /home/wwwroot/default\r"# 允许用户进行交互interact

2.创建权限

sudo chmod +x xxx.sh

3.执行脚本

./xxx.sh
jiqing@Ubuntu:~/sh$ ./xxx.sh spawn ssh root@xxxroot@xxx's password: Last login: Thu Jun 21 15:07:03 2018 from 218.93.209.10Welcome to Alibaba Cloud Elastic Compute Service ![root@iZuf6ingetk3pr7xgv1vq1Z ~]# cd /home/wwwroot/default[root@iZuf6ingetk3pr7xgv1vq1Z default]#

优化通用版本,支持第一次yes判断,支持ip输入

#! /usr/bin/expectset ip [lindex $argv 0]set password [lindex $argv 1]if {$ip == ""} {    puts "请输入ip"    exit }if {$password == ""} {    set password "123456"}# 设置超时时间set timeout 3# fork一个子进程执行sshspawn ssh root@$ipexpect {      "*yes/no*" { send "yes\r"; exp_continue}    "*password*" { send "$password\r" }}  # 捕获到密码# expect "*password*"# 输入密码并回车# send "$password\r"# 捕获#expect "*#"# 进入常用目录下send "cd /home/wwwroot/default\r" # 允许用户进行交互interact

继续升级成昵称,比ip更好用

#! /usr/bin/expectset pro_name [lindex $argv 0]set password [lindex $argv 1]if {$pro_name == ""} {    puts "请输入名称"    exit }switch $pro_name {    "meiren" -    "yanglu" -    "wenbo" {        set ip "ip1"    }    "siemens" {        set ip "ip2"    }    "tqmp" {        set ip "ip3"    }    default {        puts "请输入正确的名称"        exit    }}if {$password == ""} {    set password "xxx"}# 设置超时时间set timeout 3# fork一个子进程执行sshspawn ssh root@$ipexpect {      "*yes/no*" { send "yes\r"; exp_continue}    "*password:*" { send "$password\r" }}  # 捕获到密码# expect "*password*"# 输入密码并回车# send "$password\r"# 捕获#expect "*#"# 进入常用目录下send "cd /home/wwwroot/default\r" # 允许用户进行交互interact

422101-20180622150305506-1793129647.png

666 ,一个脚本,一键链接ssh。

案例二,进行cd操作

#! /usr/bin/expect# 跳转到项目目录下set pro_name [lindex $argv 0]spawn bashif {$pro_name != ""} {    set target_dir "/home/wwwroot/default/$pro_name"} else {    set target_dir "/home/wwwroot/default"}# 判断目录是否存在if {![file isdirectory $target_dir]} {    puts "项目目录不存在"    set target_dir "/home/wwwroot/default"}send "cd $target_dir\r"interact

ps:expect的语法与shell脚本有点不同,多用用就习惯了。运用起来,让他们帮助你更好的工作。

更多功能,需要在工作中去探索和使用。我爱linux。

转载地址:http://roojx.baihongyu.com/

你可能感兴趣的文章
hexo博客解决不蒜子统计无法显示问题
查看>>
Hibernate中使用c3p0连接池
查看>>
sharepoint 工作流 infopath任务表单中 重复表数据的读写
查看>>
使用fio测试磁盘I/O性能报告
查看>>
python-20:爬取糗事百科段子源码
查看>>
通过qq通信原理
查看>>
我的友情链接
查看>>
免安装版tomcat启动startup.bat闪退问题
查看>>
Linux下架设CS1.6服务器
查看>>
超酷的时间选择控件
查看>>
oracle中scott/tiger、sys、SYSDBA、system都是什么用
查看>>
Deprecated:split()
查看>>
react学习之es6小结
查看>>
设置更改root密码(远程,本地)、连接mysql、mysql常用命令
查看>>
企业员工电脑如何加入域?
查看>>
字节序和大小端
查看>>
nginx 日志切割
查看>>
使用py-kms搭建KMS服务器
查看>>
使用Windows PowerShell查看系统信硬件信息-1
查看>>
我的友情链接
查看>>