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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mac如何录屏 同时录内置声音

    Mac如何录屏 同时录内置声音首先需要一个插件,叫做SoundFlower参考操作为:https://www.jianshu.com/p/a8600e490be4步骤如下:在http://www.buildtoconnect.com/help/why-does-soundflower-installation-failed-on-mac下载Soundflower下完就配置环境打开如果soundflower一直下不了,下载错误怎么办:http://www.buildtoconnect.com/help/why-do

    2022年6月12日
    56
  • PotPlayer安装与配置[通俗易懂]

    PotPlayer安装与配置[通俗易懂]目录1.简介2.安装3.设置基本选项设置:播放选项设置:PotPlayer皮肤设置:1.简介PotPlayer一款小巧简单的视频播放软件,具有于强大的定制能力和个性化功能。2.安装官网下载potplayerhttp://potplayer.daum.net/?lang=zh_CN下载完成后双击安装即可,选项默认。3.设置首先打开软件,按…

    2022年5月21日
    1.6K
  • python 字符串 转义_python转义字符怎么用

    python 字符串 转义_python转义字符怎么用问题与背景python的字符串控制,有时候自动转义会带来很多问题,比如文件路径因为转义变得有异常,json字符串塞进json串中之后,自动的对引号加转义斜杠等,整理一下踩的一些坑。参考资料https://www.cnblogs.com/klobohyz/archive/2012/06/04/2535057.htmlpython使用r进行不转义字符串https://www.cnblogs.com/itdyb/p/5046415.htmlPython中的repr()函数解决方案与案例字

    2025年6月12日
    11
  • 硬件加密芯片介绍 及 加密芯片选择(加密IC) 加密芯片原理

    硬件加密芯片介绍 及 加密芯片选择(加密IC) 加密芯片原理前端时间有研究多款加密芯片,加密算法实现,以及激活成功教程可能,也有一些个人的观点,仅供参考;一,加密芯片的来源及工作流程:市面上的加密芯片,基本都是基于某款单片机,使用I2C或SPI等通讯,使用复杂加密算法加密来实现的,流程大致如下:主控芯片生成随机码–>主控芯片给加密芯片发送明文–>加密芯片通过加密算法对明文进行加密生成密文–>加密芯片返回密文给主控芯片–>主控芯片对密文进行解密生成解密值–>主控芯片对解密值与之前明文进行对比,比较.

    2022年6月25日
    55
  • Python fillna_python rfind函数

    Python fillna_python rfind函数假设我有这张桌子Type|Killed|SurvivedDog52Dog34Cat17Dognan3cownan2[Type]=Dog缺少Killed值之一.我想在[类型]=狗的[Killed]中归咎于平均值.我的代码如下:>搜索平均值d…

    2022年8月12日
    6
  • pycharm2020.2永久激活码_pycharm激活账号和密码

    pycharm2020.2永久激活码_pycharm激活账号和密码使用方法:使用自己学校的学校邮箱即可或者获取一个:http://t.cn/E9HAnz3

    2022年8月26日
    6

发表回复

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

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