我想将以下“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