shell脚本中命令的自动化

时间:2013-09-17 13:14:47

标签: shell ksh

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

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

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

2 个答案:

答案 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'

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