嗨,我正在自动化一些命令。有一种调用 perl 程序的方法,可以通过转到特定用户来调用。我已将代码编写为
expect -c 'spawn su - poletst; send "1\r";interact'
cmsyscon Test
该脚本必须在服务器上运行。选择用户后,选择区域。cmsyscon 是一个调用 perl 模块的命令(我不太了解)。问题是用户已切换并选择了区域,但控制台上没有任何反应,当我在控制台上发出退出命令时,cmsyscon 运行。脚本有什么问题以及如何纠正它?
我以前没有尝试过期望,但从它的外观来看,期望会产生一个进程,您的退出命令会杀死该进程,从而允许 cmsyscon 运行。即,您没有在刚刚生成的进程中执行 cmsyscon。
尝试类似:
expect -c 'spawn su - poletst; send "1\r"; interact; cmsyscon Test'
将您的命令手动发送到切换用户的 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'
\$如果它不起作用,请替换为用户提示的某些部分。