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" ]; thenwhile read -r line; domachine=$(echo "$line"| /bin/cut -d' ' -f1)|| exit 100ports=$(echo "$line"| /bin/cut -d' ' -f2)|| exit 101echo $portsOLD_IFS=$OLD_IFSIFS=","for port in $ports; doif (echo >/dev/tcp/"$machine"/"$ports") >/dev/null 2>&1; thenecho "OK: $machine --> $port"elseecho "ERROR: $machine --> $port"fidoneIFS=$OLD_IFSdone < "$1"
elseecho "ERROR: Invalid or missing data file!"exit 103
fi
2. 把需要检测的IP和端口写到一个ip.txt文件里面,如下图:
3. 执行bash文件
./check.ssh ip.txt