连接solaris服务器时出现错误

时间:2015-10-28 11:17:11

标签: bash ssh solaris

我正在使用pssh在远程服务器上运行脚本。对于linux我没有遇到问题但是对于solaris我在运行脚本时遇到了问题。

我正在使用shebang来使用bash shell,它正在使用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

# 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
# 

1 个答案:

答案 0 :(得分:2)

只有在运行可执行文件时才处理shebang,而不是在读取stdin时,Linux和Solaris都会忽略它。碰巧Linux sh实际上是bash,因此支持您使用的语法。

更简单的解决方法是修复脚本以使其可移植到任何shell:

UNAME=`uname`
if [ "$UNAME" = SunOS ]; then 
    echo SunOS
fi

或者,您可以将远程用户的默认shell更改为更标准的内容,例如kshbash