检查在shell脚本内是否可以使用ssh?

时间:2019-11-22 05:34:55

标签: bash shell

我需要打印写在'/ REMOTE_DIR / DR_count'上的远程服务器的计数。但是由于网络或操作系统故障,该远程服务器可靠性不高。但是,如果该远程计算机不可用,则需要从本地计算机打印DR_count值。这是我的逻辑。请更正我如何检查状态是否正确。我正在Solaris 11.3上运行此脚本。

#!/bin/sh

if[check wether ssh user@host_name is possible]
then 

op="cat /REMOTE_DIR/DR_count"
cmd="ssh user@host_name $op"
drlog=`$cmd`

else 

drlog='cat /LOCAL_DIR/DR_count'


fi


echo $drlog

2 个答案:

答案 0 :(得分:3)

正如我在评论中所说,我只是尝试ssh,如果使用其退出代码来查看它是否有效:

ssh -o ConnectTimeout=5 user@host_name cat /REMOTE_DIR/DR_count 2>/dev/null || cat /LOCAL_DIR/DR_count

答案 1 :(得分:1)

您应该检查退出代码255,以检测是否存在网络错误

#!/bin/bash

#EXIT STATUS
#     ssh exits with the exit status of the remote command or with 255 if an error occurred.

cnt=`ssh -o ConnectTimeout=5 root@$host "cat /REMOTE_DIR/DR_count"`

exit_code=$?

if [ $exit_code -eq 255 ]; then
    cnt=`cat /LOCAL_DIR/DR_count`
fi

检查其他(非0/255)退出代码以检查远程可能出现的问题(例如远程丢失的文件)也很有意义