expect java,Expect 使用详解「建议收藏」

expect java,Expect 使用详解「建议收藏」第1章expect概括expect期待expect是Unix系统中用来进行自动化控制和测试的软件工具,由DonLibes制作,作为Tcl脚本语言的一个扩展,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制;也可利用Tk工具,将交互程序包装在X11的图形用户界面中。…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

第1章 expect 概括

expect 期待

expect是Unix系统中用来进行自动化控制和测试的软件工具,由Don Libes制作,作为Tcl脚本语言的一个扩展,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制;也可利用Tk工具,将交互程序包装在X11的图形用户界面中。

我们通过Shell可以实现简单的控制流功能,如:循环、判断等。但是对于需要交互的场合则必须通过人工来干预,比如普通用户使用sudo命令时就需要我们手动输入密码;expect就是能够完成这种自动交互任务,而无需人的干预。

第2章 使用总结:

为什么先写总结,刚才是自己使用expect也纠结了一会,总结下,在结合下面的两个案例

1、需要注意先规划好expect 大概结构,实现效果,需要参数,路径、命令

2d7ea6fa940758be3165e78e5c819dfa.png

2、写shell脚本注意shell脚本中的变量需要对于expect中的变量.

8aa93ac8f5a2218b8477c69258d30ce8.png

2.1 使用例子

2.2 首先安装expect

[shell]

Centos OS yum 安装

yum install -y expect

Ubuntu 系统安装

apt-get install expect

[/shell]

2.3 例子一:SSH 自动远程支持mkdir

#提示写expect 需要两个脚本一个 .exp 和 .sh 如下:

#创建一个expect自动执行脚本

[shell]

root@xuebao shell]# cat expect_mkdir.exp

#!/usr/bin/expect

set date [lindex $argv 0]

set password [lindex $argv 1]

#spawn scp $src_file $username@$host:$dest_file

spawn ssh 192.20.3.99 mkdir /home/tbt/webappdata/backup/$date

expect {

“yes/no” {send “yes\r”;exp_continue}

“*password” {send “$password\r”}

}

expect eof

[/shell]

#脚本解释

[shell]

[root@xuebao shell]# cat expect_mkdir.exp

#!/usr/bin/expect  #解释器,告诉操作系统,使用expect必须加。

set date [lindex $argv 0] # expect脚本可以接受从shell 脚本中传递过来的参数.可以使用n从0开始,分别表示第一个,第二个,第三个….参数

set password [lindex $argv 1] #从shellz中传递密码

spawn ssh 192.20.3.99 mkdir /home/tbt/webappdata/backup/$date # spawn后面加上需要执行的shell命令、其中$date 是加的shell脚本中的时间变量

expect {

“yes/no” {send “yes\r”;exp_continue} #行交互动作,与手工输入密码的动作等效。

“*password” {send “$password\r”} #行交互动作,与手工输入密码的动作等效。

}

expect eof

[/shell]

注意:expect脚本必须以expect eof结束。

2.4 相对于的shell脚本

[shell]

[root@xuebao shell]# cat expect_mkdir.sh

#!/bin/sh

#####################

#by xuebao

#2017.05.27

#####################

date=`date +%Y%m%d` #定义了一个时间变量

password=123456 #传递密码

cd /home/shell #进入存放expect_mkdir.exp 的目录

./expect_mkdir.exp $date $password #执行并传参

[/shell]

2.5 例子2 自动SCP 命令

[shell]

[root@xuebao shell]# cat expect_app.exp

#!/usr/bin/expect

set host [lindex $argv 0]

set port [lindex $argv 1]

set username [lindex $argv 2]

set password [lindex $argv 3]

set src_file [lindex $argv 4]

set dest_file [lindex $argv 5]

#spawn scp $src_file $username@$host:$dest_file

spawn scp -P $port -r $src_file $username@$host:$dest_file

expect {

“yes/no” {send “yes\r”;exp_continue}

“*password” {send “$password\r”}

}

expect eof

[/shell]

2.6 相对于的shell脚本

[shell]

[root@xuebao shell]# cat expect_app.sh

#!/bin/sh

#####################

#by xuebao

#2017.05.27

#####################

DATE=`date +%Y%m%d`

src_file=”/home/tbt/webappdata/$DATE/test* “

dest_file=”/home/tbt/webappdata/backup/$DATE/”

host=109.202.3.100

port=22

username=root

password=12345678

#scp back host

cd /home/shell

./expect_app.exp $host $port $username $password $src_file $dest_file

echo “end”

[/shell]

最后提示:

如果文件scp 文件过大、传送中断开,因为expect默认timeout为30S

手动添加set timeout -1设置超时时间为无穷大,问题解决

在expect 脚本中添加

d7a99bdcfdd459191b2f726420f54e86.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234612.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 小米手机解BL锁教程

    小米手机解BL锁教程1.找到设置,找到我的设备2.点击全部参数,点miui版本,点3下。3.返回,找到更多设置4.找到开发者选项5.找到设备定状态6.绑定账号和设备,关机,按开键加音量减,进去fast模式,链接电脑。7. 电脑打开下载解锁工具:点击链接下载将解锁工具解压缩,点击unlock.exe。7.解锁工具里登入可解锁的小米账号,同时将手机进入fastboot模式(关机状态下长按音量下键和电源键),用数据线连接电脑,提示已连接手机即可,若没有驱动点击图标安装即可。8.设备已解锁-解锁成功

    2022年6月12日
    58
  • php中urlencode()和urldecode()URL编码函数浅析[转]

    php中urlencode()和urldecode()URL编码函数浅析[转]

    2021年10月30日
    45
  • 反向传播算法(过程及公式推导)「建议收藏」

    反向传播算法(过程及公式推导)「建议收藏」一、反向传播的由来在我们开始DL的研究之前,需要把ANN—人工神经元网络以及bp算法做一个简单解释。关于ANN的结构,我不再多说,网上有大量的学习资料,主要就是搞清一些名词:输入层/输入神经元,输出

    2022年8月4日
    5
  • Django接口_django中几个html互相跳转

    Django接口_django中几个html互相跳转前言在RESTful规范中,有关版本的问题,用restful规范做开放接口的时候,用户请求API,系统返回数据。但是难免在系统发展的过程中,不可避免的需要添加新的资源,或者修改现有资源。因此,改动升

    2022年7月29日
    16
  • linux安装svn服务器_svn安装配置

    linux安装svn服务器_svn安装配置1.https://tortoisesvn.net/downloads.html网站下载2.安装的时候如果出现下图的报错打开这个网站https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=49062,会自动帮你下载下载完成后安装即可3.没有特殊需求则默认安装4.出现这个则安装成功MySQL安装…

    2022年8月18日
    9
  • mysql索引利弊分析

    mysql索引利弊分析

    2021年11月6日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号