#!/bin/bash
hosts=(127.0.0.1 127.0.0.2 127.0.0.3)
ports=(22 23 25 80)
for host in "${hosts[@]}"
do
for port in "${ports[@]}"
do
if echo "Hi from Bharat's scanner at $(uname -n)" 2>/dev/null > /dev/tcp/"$host"/"$port"
then
echo success at "$host":"$port"
else
echo failure at "$host":"$port"
fi
done
done
至于语法的官方参考,请man bash并搜索有关重定向的部分。
使用 bash 的网络重定向功能的一种方法是将一些文本回显到该主机的端口并查看它是否成功。Bash 根据其连接到该主机上的该端口的能力返回真/假。
示例代码,显示了一组主机、一组端口,并尝试通过 TCP 连接到这些端口:
由于 UDP 是无状态的,因此测试的返回码对扫描没有用处。您必须使用AB 的示例来捕获输出并查看它是否符合您的期望。