当前位置:首页 » 编程软件 » expect怎么设置脚本

expect怎么设置脚本

发布时间: 2022-09-28 19:39:49

㈠ 怎么用expect 数组编写脚本

如何向expect脚本里面传递参数 比如下面脚本用来做ssh无密码登陆,自动输入确认yes和密码信息,用户名,密码

㈡ 如何使用expect执行自定义的脚本

我是用expect的脚本去调用shell的脚本。
下面的shell脚本是某应用的启动脚本,因为牵涉到要手动选择环境变量,所以就想用expect去实现这个功能。

linux系统sftp结合expect使用时,写脚本遇到参数问题

您好,你的脚本设置filename变量语法不对,filename="xxxx"这是shell的语法。
expect应该如下设置变量,变量和值之间是空格分隔,不是"="符号:
set <var> <value>

㈣ 求问expect脚本怎么设置返回值

比如下面脚本用来做ssh无密码登陆,自动输入确认yes和密码信息,用户名,密码,hostname通过参数来传递
ssh.exp python代码 #!/usr/bin/expect set timeout 10 set username [lindex $argv 0] set password [lindex $argv 1] set hostname [lindex $argv 2] spawn ssh--id -i .ssh/id_rsa.pub $username@$hostname expect "yes/no" send "yes\r" expect "password:" send "$password\r" expect eof执行脚本./ssh.exp root pasword hostname1

expect接收参数的方式和bash脚本的方式不太一样,bash是通过$0 ... $n 这种方式,而expect是通过set <变量名称> [lindex $argv <param index>],例如set username [lindex $argv 0]

㈤ expect里如何执行shell脚本

shell编写的except自动化功能有限, 不能做到接口的调用, 对执行的结果很难评估的哦, 建议使用python程序搞定, 楼主上面的需求, 都不是问题, 这个可以帮助搞定, 另外, wo最近开发了一个自动化的批量管理服务器的程序, 里面就有上述功能!如果感兴趣的话, 可以一起讨论一下,看看my网名就行了

㈥ expect怎样逐行执行,还有-d怎样使用大佬们具体点

如果你是expect脚本语言的新手,可以首先从我们的expect的“helloworld”样例(英文)开始。1,使用“-c”选项,从命令行执行expect脚本expect可以让你使用“-c”选项,直接在命令行中执行它,如下所示:$expect-c'expect"\n"{send"pressedenter\n"}pressedenter$如果你执行了上面的脚本,它会等待输入换行符(\n)。按“enter”键以后,它会打印出“pressedenter”这个消息,然后退出。2,使用“-i”选项交互地执行expect脚本使用“-i”选项,可以通过来自于标准输入的读命令来交互地执行expect脚本。如下所示:$expect-iarg1arg2arg3expect1.1>setargvarg1arg2arg3expect1.2>正常情况下,当你执行上面的expect命令的时候(没有“-i”选项),它会把arg1当成脚本的文件名,所以“-i”选项可以让脚本把多个参数当成一个连续的列表。当你执行带有“-c”选项的expect脚本的时候,这个选项是十分有用的。因为默认情况下,expect是交互地执行的。3,当执行expect脚本的时候,输出调试信息当你用“-d”选项执行代码的时候,你可以输出诊断的信息。如下所示:$catsample.exp#!/usr/bin/expect-fexpect"\n";send"pressedenter";$expect-dsample.expexpectversion5.43.0argv[0]=expectargv[1]=-dargv[2]=sample.expsetargc0setargv0"sample.exp"setargv"".expexpect:does""(spawn_idexp0)matchglobpattern"\n"?noexpect:does"\n"(spawn_idexp0)matchglobpattern"\n"?yesexpect:setexpect_out(0,string)"\n"expect:setexpect_out(spawn_id)"exp0"expect:setexpect_out(buffer)"\n"send:sending"pressedenter"to{exp0pressedenter}4,使用“-D”选项启动expect调试器“-D”选项用于启动调试器,它只接受一个布尔值的参数。这个参数表示提示器必须马上启动,还是只是初始化调试器,以后再使用它。$expect-D1script“-D”选项左边的选项会在调试器启动以前被处理。然后,在调试器启动以后,剩下的命令才会被执行。$expect-c'settimeout10'-D1-c'seta1'1:seta1dbg1.0>5,逐行地执行expect脚本通常,expect会在执行脚本之前,把整个脚本都读入到内存中。“-b”选项可以让expect一次只读取脚本中的一行。当你没有写完整个脚本的时候,这是十分有用的,expect可以开始执行这个不完整的脚本,并且,它可以避免把脚本写入到临时文件中。$expect-b6,让expect不解释命令行参数你可以使用标识符让expect不解释命令行参数。你可以像下面这样的读入命令行参数:$catprint_cmdline_args.exp#!/usr/bin/expectputs'argv0:[lindex$argv0]';puts'argv1:[lindex$argv1]';当执行上面的脚本的时候,会跳过命令行选项,它们会被当成参数(而不是expect选项),如下所示:$expectprint_cmdline_args.exp-d-cargv0:-dargv1:-c

㈦ 如何用expect写一个自动登录脚本

1.安装expect

需要先安装tcl:apt-get install tcl

apt-get install expect

2.expect使用

2.1一个简单的输入密码操作

#!/usr/bin/expect

set timeout 100

set password "123456"

spawn sudo rm -rf zzlogic

expect "root123456"

send "$password "

interact

说明:

第一行#!/usr/bin/expect表示使用expect的shell交互模式

set是对变量password赋值

set timeout 100:设置超时时间为100秒,如果要执行的shell命令很长可以设置超时时间长一些。expect超过超时时间没有监测到要找的字符串,则不执行,默认timeout为10秒

spawn在expect下执行shell脚本

expect对通过spawn执行的shell脚本的返回进行判断,是否包含“”中的字段

send:如果expect监测到了包含的字符串,将输入send中的内容, 相当于回车

interact:退出expect返回终端,可以继续输入,否则将一直在expect不能退出到终端

2.2expect的命令行参数

[lindex $argv n]获得index为n的参数(index从0开始计算)

$argc为命令行参数的个数

[lrange $argv 0 0]表示第一个参数

[lrange $argv 0 3]表示第1到第3个参数

例如scp_service.sh文件,可以./scp_service.sh -rm来执行,这时是赋值了一个参数

set option [lindex $argv 0](获得第一个参数存到变量option中,参数是的index是从0开始计算的)

2.3if...elif...else...

expect支持if语句,

if {条件1} {

条件1执行语句

} elif {条件2} {

条件2执行语句

} else {

其他情况执行语句

}

说明:

1.if的条件用{}来包含条件

2.if和后面的{}必须有空格隔开

3.两个花括号之间必须有空格隔开,比如if {} {},否则会报错 expect:extra characters after close-brace

3.使用{来衔接下一行,所以if的条件后需要加左花括号{

4.else不能单独放一行,所以else要跟在}后面

2.4 expect {},多行期望,匹配到哪条执行哪条

背景:有时执行shell后预期结果是不固定的,有可能是询问是yes/no,有可能是去输入密码,所以可以用expect{}

花括号内放多行语句,从上至下匹配,匹配到哪个expect执行哪句。

3.shell中调用expect来实现登录

我是通过在shell脚本中执行expect脚本的方式来实现的。当然可以将shell中定义的一些变量传递给expect脚本作为参数输入。

㈧ 如何在bash shell脚本中使用expect

1、首先检查你机器上有没有expect(我知道ubuntu默认是没有安装的)
ls /usr/bin | grep expect 看看有没有装expect
2、没有的话需要安装
在ubuntu的软件安装中心,搜索tcl 和tk 和expect并安装;
也可以命令行输入sudo apt-get install tcl tk expect
3. 环境ready了后,可以在shell脚本中用Here document的方式使用expect命令
Here document格式如下:
expect <<!
这中间都是expect命令
!
为防止错误,建议都顶格写,前面不要留空格。

㈨ 在shell(#!/bin/sh)脚本中怎么使用expect命令,需要添加什么环境变量吗,正确即给分

首先你在命令行执行env expect,看expect能不能用,如果不能用,那么你需要找到expect执行文件路径,加入到PATH环境变量中去。

然后就可以在shell中使用了,有两种方式实现:
1.用here document
2.用expect -c

$cat 1.sh
#!/bin/sh
output=`expect <<EXP
puts "hello world"
EXP
`
echo "expect 1 output:"
echo $output
echo
echo "expect 2 output:"
expect -c 'puts "hello world!"'

$chmod 777 1.sh

$./1.sh
expect 1 output:
hello world

expect 2 output:
hello world!

热点内容
php怎样实现页面跳转页面 发布:2024-04-29 22:32:39 浏览:695
山东烟台电信dns服务器ip地址 发布:2024-04-29 21:22:59 浏览:135
数据库数据互通 发布:2024-04-29 21:19:02 浏览:153
pythonor的语法 发布:2024-04-29 21:07:48 浏览:703
方易通安卓机怎么样 发布:2024-04-29 21:06:30 浏览:765
广饶编程 发布:2024-04-29 20:39:07 浏览:120
长城服务器管理口ip 发布:2024-04-29 20:15:24 浏览:375
java静态成员变量 发布:2024-04-29 20:04:52 浏览:874
现代伊兰特女生选哪个配置 发布:2024-04-29 19:59:44 浏览:508
d盘不能访问权限 发布:2024-04-29 19:41:56 浏览:415