微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ssh -V保存到变量

我正在尝试将无密码ssh的测试从72个远程服务器自动返回到中央服务器.我的中央服务器无密码ssh可以在72台服务器上工作,但需要它从它们工作回中央服务器.

72个服务器具有两个ssh版本之一.

OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

要么

sshg3: SSH Tectia Client 6.1.8 on x86_64-unkNown-linux-gnu
Build: 136
Product: SSH Tectia Client License
type: commercial

我遇到的问题是试图将ssh -V保存到变量中,似乎它无法打印到STDOUT.因此,我在下面的尝试失败了.

ssh -V > someFile.txt
ssh_version=$(ssh -V)

如何轻松保存ssh -V的输出,以便可以调用适当的ssh batch选项?

以下是我用于远程测试的脚本.

#!/bin/sh
ssh -V > /tmp/ssh_version_check.txt

cat /tmp/ssh_version_check.txt | grep "OpenSSH"
rc=$?

if [[ $rc == 0 ]]
then
    ssh -o BatchMode=yes <central_server> "test -d /tmp"
    rc=$?
    if [[ $rc != 0 ]]
    then
            echo "$(hostname) Failed" >> /tmp/Failed_ssh_test.txt
    fi
else
    ssh -B <central_server> "test -d /tmp"
    rc=$?
    if [[ $rc != 0 ]]
    then
            echo "$(hostname) Failed" >> /tmp/Failed_ssh_test.txt
    fi
fi

解决方法:

ssh -V输出到STDERR,而不是STDOUT.

而不是说

ssh -V > /tmp/ssh_version_check.txt

ssh -V >& /tmp/ssh_version_check.txt

要么

ssh -V > /tmp/ssh_version_check.txt 2>&1

为了保存为变量,请说:

ssh_version=$(ssh -V 2>&1)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐