当前位置:首页 » 编程软件 » linuxexpect执行脚本

linuxexpect执行脚本

发布时间: 2023-01-06 23:54:55

linux shell脚本嵌入一段expect

expect -c 用全路径?比如 /usr/bin/expect -c

㈡ Linux操作系统中expect如何使用

在Linux系统中,expect是一个自动化交互套件,也是一个用来处理交互的命令;利用expect,我们可以将交互过程写在一个脚本上,让其自动化完成,从而帮助运维人员提高工作效率、节约时间。那么Linux系统中expect该如何使用?我们来看看详细的内容介绍。

Linux系统中expect该如何使用?

expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。

expect自动交互流程:

spawn启动指定进程--expect获取指定关键字--send向指定程序发送指定字符--执行完成退出。

注意:该脚本能够执行的前提条件是安装了expect

yum install -y expect

expect常用命令总结:

spawn 交互程序开始后面跟命令或者指定程序;

expect 获取匹配信息匹配成功则执行expect后面的程序动作;

send exp_send 用于发送指定的字符串信息;

exp_continue 在expect中多次匹配就需要用到;

exit 退出expect脚本;

eof expect 执行结束 退出;

set 定义变量;

puts 输出变量;

set timeout 设置超时时间。

㈢ linux:关于expect脚本,为什么这么写不对呢求解

mkdir又不是expect的命令。


#!/usr/local/bin/expect
spawnsu-root
expect"Password:"
send"123456 "
sleep3
send"mkdir/usr/local/ddddd "

㈣ 用expect实现telnet登陆到linux系统后,再执行一个shell脚本,待这个shell脚

参考一种类自然语言的脚本语言:

001 var {v_time} value datetime

002 screen.text at point {10} {30} string {2. telnet ipv4 (192.168.186.132:23) test , datetime: ~v_time~}

003

004 telnet.connect ip {192.168.186.132} port {23}

005 telnet.recv expect {Username:}

006 telnet.send {cisco%0a}

007 telnet.recv expect {Password}

008

009 telnet.send {cisco%0a}

010 telnet.recv expect {>}

011 telnet.send {enable%0a}

012 telnet.set onrecv {More} send { }

013 telnet.set delay {200} ms after per byte send

014 telnet.send {show version%0a}

015 telnet.recv for {5} seconds

016

017 telnet.send {show run%0a}

018 telnet.recv for {5} seconds

019 telnet.send {exit%0a}

020 telnet.close

021

022 var {v_time} value datetime

023 screen.text at point {10} {60} string {telnet tested end. datetime:~v_time~}

024

025 run.end

--------------------------------------------------------------------

简单网络管理语言(Simple Network Management Language)是一种类自然语言的脚本语言,它采用snmp、telnet、ping、dns、arp、ssh、tcp、udp、web等协议访问网络设备,内置smtp协议用于告警等邮件的发送,支持excel、mysql、sqlite等3种方式进行网管数据的存取。
最新版本: snml8.13(ladybird20200205) utf8&ipv6
项目托管地址:https://github.com/ladybirdSnml/snmlipv6utf8snmptelnetsshweb
打包下载:https://ladybirdsnml.github.io/snmlipv6utf8snmptelnetsshweb/snml_utf8ipv6.zip

㈤ linux expect讲解怎么使用

[root@zuozhang PYTHON_TEST]# rpm -ql expect package expect is not installed 查看是否有安装,如果没有安装安装一个即可。 yum install expect*

㈥ Linux自动登陆expect 远程主机执行本地脚本

两台ssh之间做个密钥,尽量不要使用expect写脚本。因为expect交互式登录是需要你在脚本中写密码的。

㈦ linux下expect脚本问题

#!/usr/bin/expect-f

if{$argc!=1}{
puts"usage:$argv0IP"
exit1
}else{
setIP[lindex$argv0]
}

setpingcmd[format"ping-c100%s"$IP]

settimeout6000

#比如远程用户叫做test
setdestusertest
#比如远程服务器IP为如下
setdestip192.168.0.123
setdestpath"$destuser@$destip"
#比如用户密码叫做test
setdestpasswordtest

#ssh登录
spawnssh$destpath

#######################
expect{
-re".*yes/no.*"{
exp_send"yes "
exp_continue
}
-re".*assword.*"{
exp_send"$destpassword "
}
}

#比如ssh登录以后的提示符是test@Testserver>
expect{
-re".*test@Testserver.*"{
exp_send"$pingcmd "
}
}

expect{
#如果输出timeout字符,则Control+C结束pingcmd
#这里用的是DestinationHostUnreachabl替换timeout。因为本人机器上没有timeout.
-re".*DestinationHostUnreachabl.*"{
#输入Control+c
exp_send"03"

#Control+c后必然输出登录提示符,再输入期望执行的命令
expect{
-re".*test@Testserver.*"{
#假设希望执行的命令是ls
exp_send"ls "
}
}

#执行完ls之后退出
expect{
-re".*test@Testserver.*"{
exp_send"exit "
}
}
}

#如果没有输出timeout字符,退出。
-re".*test@Testserver.*"{
exp_send"exit "
}
}

interact

㈧ 关于linux expect脚本的问题,自动输入密码

#!/usr/bin/expect

set time 30
set passwd xxxxx (xxxx是你的密码内容)

spawn sudo
expect "Password:" 引号里是你手动执行sudo时候 。系统返回给你的提示,可以只匹配最后几个字母,
也可以写全
send "$passwd\r"
expect eof

EOF

㈨ Linux expect

expect:expect是Unix系统中用来进行自动化控制和测试的脚本工具,常用于实现交互式任务的自动化。使用命令”dnf install expect -y”进行安装。脚本文件声明为”#!/usr/bin/expect”。

expect常用命令如下:

1.spawn+交互命令(如spawn ssh [email protected]):”spawn”是expect的初始命令,用于启动一个新的交互进程,之后所有的操作都会在这个进程中进行。

2.set:定义变量/为变量赋值。使用语法:set 变量名 值。

3.puts:将变量值/字符串定向到本地标准输出文件(即定位到屏幕)。使用语法:puts “字符串/$变量名”

4.send_user:作用和使用方法类似于”puts”,区别在于”puts”会在输出内容的结尾自动追加一个换行符,而”send_user”不会。

5.send:向交互进程发送信息/命令(字符串和一些特殊符号,\r—回车,\n—换行,\t—制表符)。使用语法:send “信息/命令[\r]”。

6.[lindex $argv 数字]:表示外部传递参数的值,数字是n,就表示第n-1个参数。注:$argc表示外部传递参数的个数,也是一个值。

7.expect+字符串+{ 命令 }:将字符串与交换进程接收到的信息进行匹配。如果匹配成功(字符串是交换进程接收到的信息的一部分),执行包含在”{}”中的命令;如果匹配失败,不执行包含在”{}”中的命令。该命令有三种使用方法:

第一种:单分支模式

①expect 字符串 { 命令 }

解释:如果字符串与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串与交换进程接收到的信息匹配失败,timeout秒后结束该expect命令。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配。)

②expect {

字符串{ 命令 }

timeout { 命令 }

}

解释:如果字符串与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串与交换进程接收到的信息匹配失败,timeout秒后执行包含在”{}”中的命令,之后结束该expect命令。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配。)

第二种:多分支模式

①expect {

字符串1 { 命令 }

字符串2 { 命令 }

}

解释:如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并结束该expect命令;如果字符串1与交换进程接收到的信息匹配失败、字符串2与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串1、字符串2皆与交换进程接收到的信息匹配失败,timeout秒后结束该expect命令。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配。)

②expect {

字符串1 { 命令 }

字符串2 { 命令 }

timeout { 命令 }

}

解释:如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并结束该expect命令;如果字符串1与交换进程接收到的信息匹配失败、字符串2与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并结束该expect命令;如果字符串1、字符串2皆与交换进程接收到的信息匹配失败,timeout秒后执行包含在”{}”中的命令,之后结束该expect命令。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配。)

第三种:循环多分支模式(注:exp_continue命令只能出现在expect命令的匹配语句中,执行到exp_continue命令时,脚本会跳出当前expect命令,并重新执行该expect命令,直到expect命令通过不包含exp_continue命令的匹配语句结束、或expect命令匹配超时结束。)

①expect {

字符串1 { 命令; exp_continue }

字符串2 { 命令 }

}

解释:如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并重新执行该expect命令;如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并重新执行该expect命令...;如果字符串1与交换进程接收到的信息匹配失败、字符串2与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串1、字符串2皆与交换进程接收到的信息匹配失败,timeout秒后结束该expect命令。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配。)

②expect {

字符串1 { 命令; exp_continue }

字符串2 { 命令 }

timeout { 命令 }

}

解释:如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并重新执行该expect命令;如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令,并重新执行该expect命令...;如果字符串1与交换进程接收到的信息匹配失败、字符串2与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串1、字符串2皆与交换进程接收到的信息匹配失败,timeout秒后执行包含在”{}”中的命令,之后结束该expect命令。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配。)

8.timeout:timeout是expect中的一个关键字变量,用于控制expect命令的超时时间。需要注意的是,这个超时时间针对于整个expect命令,而不是针对于expect命令中的某条匹配语句。也就是说,只有expect命令中所有匹配语句都匹配失败后,才会开始计算超时时间。timeout变量值缺省为10(秒),我们可以通过”set timeout=值”的方式为其重新赋值,作用范围:本次赋值到下一次赋值间的所有expect命令。注:如果需要为timeout变量重新赋值,应在expect命令之外进行。

9.expect eof:该命令的作用是结束spawn交互进程,将命令行切回至运行脚本的主机(即从远端服务器登出)。

10.interact:缺省情况下,expect脚本执行完毕后会自动从远端服务器登出(即便没有显式地执行”expect eof”命令)。使用interact命令后,expect脚本执行完毕会继续保持当前状态,并将控制权移交给用户。

11.exit:结束该脚本。

expect中的if语句:

if { 条件表达式 } {

命令

}

if { 条件表达式 } {

命令

} else {

命令

}

expect中的while语句:

while { 条件表达式 } {

命令

}

expect中的for语句:

for { set i 1 } { $i <=10 } { incr i } {

命令

}

incr变量名 步长   ——变量自增

incr 变量名 -步长    ——变量自减

数学运算需使用let、expr等工具

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:593
制作脚本网站 发布:2025-10-20 08:17:34 浏览:888
python中的init方法 发布:2025-10-20 08:17:33 浏览:581
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:765
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:684
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1012
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:255
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:113
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:806
python股票数据获取 发布:2025-10-20 07:39:44 浏览:712