Shell 从多个linux服务器提取java版本

Shell 从多个linux服务器提取java版本,shell,Shell,下面的脚本没有从远程服务器提供正确的java版本,而是打印源服务器的版本: for i in 'cat serverlist.txt' do ssh $i `java -version 2>&1 >/dev/null | grep 'java version' | awk '{print $3}'|sed 's/"//g'` done >>sample.txt cat sample.txt 预期结果如下: 例:1.8.181(每个

下面的脚本没有从远程服务器提供正确的java版本,而是打印源服务器的版本:

    for i in 'cat serverlist.txt'
    do
    ssh $i `java -version 2>&1 >/dev/null | grep 'java version' | awk '{print $3}'|sed 's/"//g'`
    done >>sample.txt
cat sample.txt
预期结果如下:

例:1.8.181(每个服务器都有不同的版本,应该打印出来)


您不应该在远程命令中使用反勾号-单引号可能就是您要查找的内容:

ssh $i 'java -version 2>&1 >/dev/null | grep "version" | cut -d" " -f 3-'

在尝试以下操作后,我能够正确获得结果:

ssh$server>sample.txt 2>&1
java-version 2>&1>/dev/null | grep'java version'| awk'{print$3}'| sed's/“//g'>>s1.txt
exit;cat s1.txt


不工作,获取以下信息:ssh$i
java-version 2>&1>/dev/null | grep“version”| cut-d”“-f3-| sed's/“//g'
警告这是一个专有系统您已经访问了一个专有系统如果您没有使用此计算机系统的授权,您必须立即注销。未经授权使用此计算机系统,包括未经授权的尝试或ksh:1.8.0_172:not found以下是如何将ssh与命令一起使用的示例:另外,pssh(并行ssh)可能有用: