使用curl命令测试端口22上文件中主机的连接

使用curl命令测试端口22上文件中主机的连接

我想将以下“curl”命令插入到 bash 脚本中,并针对 IP 地址的主机文件运行它,然后在输出文件中将输出显示为成功或失败。

curl -v telnet 10.10.10.10:22

这可能吗?

答案1

我还没有必要的声誉来评论声称curl不适用于ssh或telnet的帖子。这是不准确的。 Curl 可处理多种协议,包括 telnet、ssh、scp、sftp、ftps 等。

这是curl 的正确语法:

curl -v telnet://127.0.0.1:22

答案2

使用 bash 内置命令来检查开放端口也可能有效:

#!/bin/bash

host_file=/path/to/file.txt
out_file=/path/to/out.txt

while read -r ip; do
    if timeout 5 bash -c "cat < /dev/null >/dev/tcp/${ip}/22"; then
        echo -e "${ip}\tSuccess"
    else
        echo -e "${ip}\tFailure" 
    fi >> "$out_file"
done < "$host_file"

答案3

curl一般用于HTTP/HTTPS/FTP;对于 SSH 或 Telnet 来说就不那么重要了。

我只使用 netcat:

testport=22 # 22 for ssh; 23 for telnet; 80 for HTTP; etc.
while read ip; do
    if nc -w2 -z $ip $testport; then
        echo $ip up
    else
        echo $ip down
    fi >> testresults.txt
done < hostlist.txt

相关内容