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