pssh只在shell脚本中冻结

时间:2016-03-16 06:13:31

标签: python linux bash ssh

我正在尝试在shell脚本中运行pssh命令,但脚本冻结并且没有建立连接,这在ps -ef命令中已经过验证。此外,因为我正在使用的hosts文件中只有一个主机。

此时,Control-C无法终止脚本,并且不会超时。只有kill命令有效。

如果我在命令行上运行相同的命令,则没有问题。此外,同一脚本中的pscp命令不会导致任何问题,因此似乎正在加载所需的库。

$ cat /home/myusername/tmp/hosts
mysinglehostname

以下是正在运行的脚本:

$ cat /home/myusername/bin/testpssh
#!/bin/bash
source ~/.bashrc
$HOME/path/to/python-virtualenv/bin/pscp -h "/home/myusername/tmp/hosts" "/tmp/garbage" "/tmp/garbage"
$HOME/path/to/python-virtualenv/bin/pssh -h "/home/myusername/tmp/hosts" -l myusername -p 512 -t 3 -o "out" -O GSSAPIAuthentication=no -i "whoami"

以下是我运行脚本时会发生的事情:

$ /home/myusername/bin/testpssh &
[1] 18553
$ [1] 14:51:12 [SUCCESS] mysinglehostname 22    
$ ps -ef | grep pssh
myusername  18580 18553 0 14:33 pts/16   00:00:00 /home/myusername/path/to/python-virtualenv/bin/python /home/myusername/path/to/python-virtualenv/bin/pssh -h /home/myusername/tmp/hosts -l myusername -p 512 -t 3 -o out -O GSSAPIAuthentication=no -i whoami

$ ## The script above is hanging after completing the pscp, before pssh completes.\
> But if I copy and paste the process line, it works fine as shown here:

$ /home/myusername/path/to/python-virtualenv/bin/python \
> /home/myusername/path/to/python-virtualenv/bin/pssh \
> -h /home/myusername/tmp/hosts -l myusername \
> -p 512 -t 3 -o out -O GSSAPIAuthentication=no -i whoami
[1] 14:59:03 [SUCCESS] mysinglehostname 22
myusername
$ 

上面的第一个[SUCCESS]用于pscp操作,并且后来的[SUCCESS]不会来自pssh命令,除非它在命令行中显式执行。

为什么pssh命令在bash shell脚本中不起作用?

如果我在shebang行中使用ksh代替bash(并将行删除到source ~/.bashrc),该脚本可以正常工作。

我在RedHat 6.4上,使用python 2.6.6

0 个答案:

没有答案