我需要打印写在'/ 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
答案 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)退出代码以检查远程可能出现的问题(例如远程丢失的文件)也很有意义