Bash 连接solaris服务器时出现pssh错误
我正在使用pssh在远程服务器上运行脚本。对于linux,我没有遇到问题,但是对于solaris,我在运行脚本时遇到了问题 我使用shebang来使用bashshell,它使用的是sh shell,这导致了这个问题Bash 连接solaris服务器时出现pssh错误,bash,ssh,solaris,Bash,Ssh,Solaris,我正在使用pssh在远程服务器上运行脚本。对于linux,我没有遇到问题,但是对于solaris,我在运行脚本时遇到了问题 我使用shebang来使用bashshell,它使用的是sh shell,这导致了这个问题 # cat test.sh #!/usr/bin/env bash UNAME=$(uname) if [ $UNAME = SunOS ]; then echo SunOS fi # ssh host1 'bash -s' <test.sh SunOS
# cat test.sh
#!/usr/bin/env bash
UNAME=$(uname)
if [ $UNAME = SunOS ]; then
echo SunOS
fi
# ssh host1 'bash -s' <test.sh
SunOS
# pssh -H host1 -i -I <test.sh
[1] 04:15:47 [FAILURE] host1 Exited with error code 2
Stderr: Pseudo-terminal will not be allocated because stdin is not a terminal.
-sh: syntax error: `UNAME=$' unexpected
#
#cat test.sh
#!/usr/bin/env bash
UNAME=$(UNAME)
如果[$UNAME=SunOS];然后
回声苏诺斯
fi
#ssh host1'bash-s'Linux和Solaris都会忽略仅在运行可执行文件时处理的shebang,而不是在读取stdin时处理的shebang。Linuxsh
实际上是bash
,因此支持您使用的语法
更简单的解决方法是修复脚本,使其可移植到任何shell:
UNAME=`uname`
if [ "$UNAME" = SunOS ]; then
echo SunOS
fi
或者,您可以将远程用户的默认shell更改为更标准的shell,例如ksh
或bash
Solaris box是否安装了bash
是的。使用ssh
命令工作正常,没有任何问题。但只有pssh
命令有问题