如何获取$中的错误号?和o / p作出回应

时间:2015-03-03 11:26:47

标签: shell unix ssh

我正在尝试连接到主机并使用以下命令运行netstat命令:

NET_STAT=$(ssh $hostname netstat -an 2>&1)

if [ $? -ne 0 ]; then
echo “error occurred”
  1. 当SSH成功​​时,我应该在NET_STAT中使用netstat o / p。
  2. 当SSH失败时,我应该将错误写入NET_STAT。(因为我添加了2>& 1)
  3. 因此要检查命令是否成功,我使用“$?”。 但问题是命令是失败还是成功$?始终为0.我认为这是因为命令的第二部分(2>& 1)总是成功,所以我得到0。

    有没有办法让返回代码为非零,这样我才能区分成功和失败。并且还在NET_STAT中获得正确的o / p。

    以下是一个例子:

    主机名= 1.2.3.4

    NET_STAT = $(ssh $ hostname netstat -an 2>& 1)

    echo" err的值是$ NET_STAT"

    回复" ret val的价值是$?"

    输出

    ======

    错误的val是ssh:1.2.3.4:节点名称或 服务名称未知

    ret val的值为0

1 个答案:

答案 0 :(得分:0)

为什么不直接检查$ NET_STAT以确认netstat命令是否有效:

if echo $NET_STAT | grep "^Active" > /dev/null
then
    echo "All ok"
else
    echo "not ok"
fi