当前位置:首页 » 操作系统 » linuxexpect

linuxexpect

发布时间: 2022-07-16 14:36:31

linux expect讲解怎么使用

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

② linux expect命令

加个if啊先用# 登陆失败
再用$

PS: 一般root账户都是 #
其他的账户都是$
看下账户权限了

③ 如何查看linux是否安装了expect

通过执行rpm命令查询expect是否安装,相关命令如下:

rpm-qa|grepexpect

以上!

④ linux 的expect怎么判断目录是否存在

代码实现,可以用隐藏扩展BAT的搜索法输出结果,然后就可检查是否有。

⑤ 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 timeout 10
set host_ip [lindex $argv 0]
set password [lindex $argv 1]

spawn ssh ${host_ip}
expect {
"(yes/no)?"
{
send "yes\n"
expect "*assword:" { send "$password\n"}
}
"*assword:"
{
send "$password\n"
}
timeout {exit 1} # 3: 这里超时就会返回 1
}
expect "100%" # 1: 等待 被spawn的程序(即前面的 ssh ${host_ip})输出 100%
expect eof # 2: 等待被spawn的程序结束

4: 可能是 ssh 本身慢导致的

⑦ Linux交互expect 的使用

#!/usr/bin/expect set time 30 set passwd xxxxx (xxxx是你的密码内容) spawn sudo expect "Password:" 引号里是你手动执行sudo时候 。系统返回给你的提示,可以只匹配最后几个字母, 也可以写全 send "$passwd\r" expect eof EOF

⑧ expect脚本在Linux下是如何使用的

如果你是expect脚本语言的新手,可以首先从我们的expect的“hello world”样例(英文)开始。
1,使用“-c”选项,从命令行执行expect脚本
expect可以让你使用“-c”选项,直接在命令行中执行它,如下所示:
$ expect -c 'expect "\n" {send "pressed enter\n"}

pressed enter
$

如果你执行了上面的脚本,它会等待输入换行符(\n)。按“enter”键以后,它会打印出“pressed enter”这个消息,然后退出。
2,使用“-i”选项交互地执行expect脚本
使用“-i”选项,可以通过来自于标准输入的读命令来交互地执行expect脚本。如下所示:
$ expect -i arg1 arg2 arg3
expect1.1>set argv
arg1 arg2 arg3
expect1.2>

正常情况下,当你执行上面的expect命令的时候(没有“-i”选项),它会把arg1当成脚本的文件名,所以“-i”选项可以让脚本把多个参数当成一个连续的列表。
当你执行带有“-c”选项的expect脚本的时候,这个选项是十分有用的。因为默认情况下,expect是交互地执行的。
3,当执行expect脚本的时候,输出调试信息
当你用“-d”选项执行代码的时候,你可以输出诊断的信息。如下所示:
$ cat sample.exp
# !/usr/bin/expect -f
expect "\n";
send "pressed enter";

$ expect -d sample.exp
expect version 5.43.0
argv[0] = expect argv[1] = -d argv[2] = sample.exp
set argc 0
set argv0 "sample.exp"
set argv ""
executing commands from command file sample.exp

expect: does "" (spawn_id exp0) match glob pattern "\n"? no

expect: does "\n" (spawn_id exp0) match glob pattern "\n"? yes
expect: set expect_out(0,string) "\n"
expect: set expect_out(spawn_id) "exp0"
expect: set expect_out(buffer) "\n"
send: sending "pressed enter" to { exp0 pressed enter}
4,使用“-D”选项启动expect调试器
“-D”选项用于启动调试器,它只接受一个布尔值的参数。这个参数表示提示器必须马上启动,还是只是初始化调试器,以后再使用它。
$ expect -D 1 script

“-D”选项左边的选项会在调试器启动以前被处理。然后,在调试器启动以后,剩下的命令才会被执行。
$ expect -c 'set timeout 10' -D 1 -c 'set a 1'
1: set a 1
dbg1.0>

5,逐行地执行expect脚本
通常,expect会在执行脚本之前,把整个脚本都读入到内存中。“-b”选项可以让expect一次只读取脚本中的一行。当你没有写完整个脚本的时候,这是十分有用的,expect可以开始执行这个不完整的脚本,并且,它可以避免把脚本写入到临时文件中。
$ expect -b

6,让expect不解释命令行参数
你可以使用标识符让expect不解释命令行参数。
你可以像下面这样的读入命令行参数:
$ cat print_cmdline_args.exp
#!/usr/bin/expect
puts 'argv0 : [lindex $argv 0]';
puts 'argv1 : [lindex $argv 1]';

当执行上面的脚本的时候,会跳过命令行选项,它们会被当成参数(而不是expect选项),如下所示:
$ expect print_cmdline_args.exp -d -c
argv0 : -d
argv1 : -c

⑨ linux的expect代码,发现如果不加interact,则send命令好像没有执行,如果加上interact命令才执行。

常见的做法是将interact换成 expect eof ,从而可以捕获到spawn命令启动的进程的结束状态。
如果坚持使用interact可以在命令执行完成后依然保持在登陆在远程服务器上,可以直接手工敲命令进行交互,完成后续工作,最后需要exit退出ssh远程登陆。
至于去掉interact却没有使用expect eof的情况下send没有执行的问题,主要是因为因为spawn会启动一个进程,但是没有捕获匹配eof或者time out事件造成的

热点内容
手机文件怎么设置密码 发布:2025-01-21 21:59:59 浏览:311
开票系统域名服务器地址 发布:2025-01-21 21:59:53 浏览:888
宝来空调压缩机多少钱 发布:2025-01-21 21:57:18 浏览:833
明日之后泽尔谷服务器怎么玩 发布:2025-01-21 21:50:09 浏览:459
楚留香挂机脚本 发布:2025-01-21 21:25:57 浏览:622
java的jms 发布:2025-01-21 21:22:45 浏览:693
上传绑定事件 发布:2025-01-21 21:21:03 浏览:491
无法访问已释放的对象 发布:2025-01-21 21:13:50 浏览:968
android比ios 发布:2025-01-21 21:06:05 浏览:181
电脑mc连接服务器秒退 发布:2025-01-21 21:05:16 浏览:534