0

嗨,我正在自动化一些命令。有一种调用 perl 程序的方法,可以通过转到特定用户来调用。我已将代码编写为

expect -c 'spawn su - poletst; send "1\r";interact'
cmsyscon Test

该脚本必须在服务器上运行。选择用户后,选择区域。cmsyscon 是一个调用 perl 模块的命令(我不太了解)。问题是用户已切换并选择了区域,但控制台上没有任何反应,当我在控制台上发出退出命令时,cmsyscon 运行。脚本有什么问题以及如何纠正它?

4

2 回答 2

0

我以前没有尝试过期望,但从它的外观来看,期望会产生一个进程,您的退出命令会杀死该进程,从而允许 cmsyscon 运行。即,您没有在刚刚生成的进程中执行 cmsyscon。

尝试类似:

expect -c 'spawn su - poletst; send "1\r"; interact; cmsyscon Test'
于 2013-09-17T13:48:06.227 回答
0

将您的命令手动发送到切换用户的 shell:

expect -c 'spawn su - poletst; send "1\r"; send "cmsyscon Test\r";interact'

或者

expect -c 'spawn su - poletst; send "1\r"; expect "\$"; send "cmsyscon Test\r";interact'

\$如果它不起作用,请替换为用户提示的某些部分。

于 2013-09-17T14:16:58.403 回答