SSH 的 Ping 等效操作

SSH 的 Ping 等效操作

有没有相当于运行 ping $HOSTssh 守护进程的程序?仅检查它是否正在运行,不尝试以特定用户身份登录或使用凭据进行验证

就像是

DAEMON_UP=$(sshping $HOST | process_output)

答案1

我通常使用nc(netcat)来实现这一点:

$ nc -zv 127.0.0.1 22
localhost [127.0.0.1] 22 (ssh) open

-z选项是专门用于扫描的“零I/O模式”。

-v选项表示“详细”,实际上会导致生成输出;如果没有此选项,则只有退出状态会指示端口是否打开(0 = 是,1 = 否)。这使得在脚本中使用它变得很容易:

if nc -z 127.0.0.1 22; then
    echo "ssh daemon is listening on port 22"
else
    echo "ssh daemon is not listening on port 22"
fi

答案2

一种方法是使用nmap(在下面的例子中,我检查了本地主机上的端口 22 是否打开)

nmap -p 22 127.0.0.1

答案3

telnet 怎么样?

telnet [IP or hostname] port

例子

telnet myhost 22

答案4

# ssh root@client1 exit > /dev/null 2>&1 && echo "Reachable" || echo "NotReachable"

# ssh [email protected] exit > /dev/null 2>&1 && echo "Reachable" || echo "NotReachable"

# ssh root@client2 exit > /dev/null 2>&1 && echo "Reachable" || echo "NotReachable"

下面是用于 ssh 连接测试的完美 for 循环代码,你只需要替换用户名并包含需要执行的服务器列表SSH ping在文件中进行测试hosts_inventory.txt

# for host in `cat hosts_inventory.txt`; do ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes -o ConnectTimeout=2 -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o TCPKeepAlive=yes -o LogLevel=ERROR root@$host exit > /dev/null && echo "$host Reachable" || echo "$host NotReachable"; done

以下是预期的 SSH ping 测试输出

client Reachable
server Reachable
192.168.1.102 Reachable
192.168.1.101 Reachable
client Reachable
server Reachable
192.168.1.102 Reachable
192.168.1.101 Reachable
client Reachable
server Reachable
192.168.1.102 Reachable
192.168.1.101 Reachable
server1 NotReachable
client1 NotReachable

相关内容