免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2973 | 回复: 8
打印 上一主题 下一主题

请教红袖添香:expect中执行语句的顺序以及send变量的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-03-31 16:08 |只看该作者 |倒序浏览
我在expect中执行命令,发现 send带变量的命令,会在最后才会被执行,哪怕它在其它的 send语句之前。

我想请教一下expect在执行命令时,顺序是如何指定的。另外,如果想按顺序的执行带变量的 send命令,应该如何编写expect脚本

我的问题脚本代码如下:
#!/usr/local/bin/expect -f

set timeout 1200

set logname xxxx
set password xxxxxx

spawn telnet 192.168.0.212
expect "login*"
send "$logname\r"
expect "Password:"
send "$password\r"
expect "*]/"
send "[ lindex $argv 0 ]\n"
expect "*]/"
send "ps -el | grep java\n"
expect "*]/"
send "exit\n"
expect eof

执行:
./test.exp ;uname -a
结果:
[002]/ <root> ps -el | grep java
8 S     0 21796     1  0  40 20 6228c0d0   8059 600d81de ?        0:13 java
[002]/ <root> exit
logout
Connection closed by foreign host.
SunOS mps009 5.6 Generic_105181-33 sun4u sparc SUNW,UltraSPARC-IIi-cEngine

论坛徽章:
0
2 [报告]
发表于 2003-03-31 21:49 |只看该作者

请教红袖添香:expect中执行语句的顺序以及send变量的问题

...

也得要回家后有expect环境才能验证啦...

论坛徽章:
0
3 [报告]
发表于 2003-04-01 14:37 |只看该作者

请教红袖添香:expect中执行语句的顺序以及send变量的问题

谢谢

论坛徽章:
0
4 [报告]
发表于 2003-04-01 17:51 |只看该作者

请教红袖添香:expect中执行语句的顺序以及send变量的问题

...



真是不好意思, 昨天在BSD版灌太多水, 居然把这碴儿给忘了...

今天一定...

论坛徽章:
0
5 [报告]
发表于 2003-04-02 08:58 |只看该作者

请教红袖添香:expect中执行语句的顺序以及send变量的问题

原帖由 "红袖添香" 发表:
...



真是不好意思, 昨天在BSD版灌太多水, 居然把这碴儿给忘了...

今天一定...


您太客气了。多谢您的帮助

论坛徽章:
0
6 [报告]
发表于 2003-04-02 11:08 |只看该作者

请教红袖添香:expect中执行语句的顺序以及send变量的问题

不好意思,上面的问题我已经解决了。

我用 ./test.exp ; uname -a是不对的。应该用
./test.exp "uname -a"

另外这个能帮我看看吗? 
http://chinaunix.net/forum/viewtopic.php?t=40890&amp;highlight=

论坛徽章:
0
7 [报告]
发表于 2003-04-02 11:09 |只看该作者

请教红袖添香:expect中执行语句的顺序以及send变量的问题

不好意思,上面的问题我已经解决了。

我用 ./test.exp ; uname -a是不对的。应该用
./test.exp "uname -a"

另外这个能帮我看看吗? 
http://chinaunix.net/forum/viewtopic.php?t=40890&amp;highlight=

论坛徽章:
0
8 [报告]
发表于 2003-04-02 14:50 |只看该作者

请教红袖添香:expect中执行语句的顺序以及send变量的问题

红袖老大请看:
下面这段代码有问题,就是关于传递变量的。


  1. #!/bin/sh

  2. exp_para=''
  3. icount=1
  4. for i
  5. do
  6.     exp_para=`echo "$exp_para" '\"''$'${icount}'\"' `
  7.     icount=`expr $icount + 1`
  8. done

  9. echo /root/ftp/rshell.exp 192.100.100.212 `eval echo \${exp_para}`
  10. /root/ftp/rshell.exp 192.100.100.212 `eval echo \${exp_para}`
  11. echo "finished"
复制代码


echo的结果如下:
/root/ftp/rshell.exp 192.100.100.212 "cd /root" "ls -la"

在rshell.exp中用
send_user "\n count=[llength $argv] \npara:[lrange $argv 0 5] \n"
来看,结果如下:

count=5
para:192.100.100.212 {"cd} /root\" {"ls} -la\"

结果不是我想要的 {cd /root} {ls -la}
相同的命令,在命令行下就可以通过。
您能告诉我是怎么回事吗?

论坛徽章:
0
9 [报告]
发表于 2003-04-02 16:01 |只看该作者

请教红袖添香:expect中执行语句的顺序以及send变量的问题

红袖老大请看:
下面这段代码有问题,就是关于传递变量的。

[code]
#!/bin/sh

exp_para=''
icount=1
for i
do
    exp_para=`echo "$exp_para" '\"''$'${icount}'\"' `
    icount=`expr $icount + 1`
done

echo /root/ftp/rshell.exp 192.100.100.212 `eval echo \${exp_para}`
/root/ftp/rshell.exp 192.100.100.212 `eval echo \${exp_para}`
echo "finished"
[/code]

echo的结果如下:
/root/ftp/rshell.exp 192.100.100.212 "cd /root" "ls -la"

在rshell.exp中用
send_user "\n count=[llength $argv] \npara:[lrange $argv 0 5] \n"
来看,结果如下:

count=5
para:192.100.100.212 {"cd} /root\" {"ls} -la\"

结果不是我想要的 {cd /root} {ls -la}
相同的命令,在命令行下就可以通过。
您能告诉我是怎么回事吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP