Linux中有个特殊的设备文件: /dev/tcp 允许通过该接口进行tcp网络通讯
例子:
测试某一台远程机器的22端口是否打开:
echo > /dev/tcp/127.0.0.1/22
如果没有任何输出,则端口开放, 否则没有开放
利用bash 脚本批量检测多个IP、多个端口
1. 使用vim编辑器以下代码写入到check.ssh, 并添加可执行权限
chmod +x check.ssh
if [ -n "$1" ] && [ -f "$1" ]; then
while read -r line; do
machine=$(echo "$line"| /bin/cut -d' ' -f1)|| exit 100
ports=$(echo "$line"| /bin/cut -d' ' -f2)|| exit 101
echo $ports
OLD_IFS=$OLD_IFS
IFS=","
for port in $ports; do
if (echo >/dev/tcp/"$machine"/"$ports") >/dev/null 2>&1; then
echo "OK: $machine --> $port"
else
echo "ERROR: $machine --> $port"
fi
done
IFS=$OLD_IFS
done < "$1"
else
echo "ERROR: Invalid or missing data file!"
exit 103
fi
2. 把需要检测的IP和端口写到一个ip.txt文件里面,如下图:
3. 执行bash文件
./check.ssh ip.txt