要在 Linux 环境下使用 Shell 脚本来判断远程 UDP 端口是否被占用,您可以按照以下步骤创建一个简单的 Bash 脚本:
创建一个新的 Shell 脚本文件: 使用您喜欢的文本编辑器(如 nano
、vim
或 gedit
)创建一个名为 check_udp_port.sh
的文件:
bash
nano check_udp_port.sh
添加必要的脚本内容: 在打开的编辑器中,输入以下内容:
bash
#!/bin/bash
# 定义要检查的远程主机、端口和 nmap 命令参数
remote_host="example.com"
port_number=53
nmap_command="-sU -p $port_number"
# 执行 nmap 扫描并获取状态信息
result=$(nmap $remote_host $nmap_command | awk -v p=$port_number '/^([0-9]+\/)?(udp\/)?'p'/ {print $2}')
# 判断端口状态并输出结果
case "$result" in
"open")
echo "The UDP port $port_number on host $remote_host is OPEN."
;;
*)
echo "The UDP port $port_number on host $remote_host is either CLOSED or not responding."
;;
esac
解释:
- 第一行指定了使用的 Shell 类型为 Bash。
- 定义变量
remote_host
、port_number
和nmap_command
,分别存储远程主机名/IP、要检查的端口号以及 nmap 命令所需的参数。 - 使用
nmap
命令执行扫描,并通过管道传递给awk
命令提取出对应端口的状态信息,将其赋值给变量result
。 - 使用
case
语句根据result
的值判断端口状态,并输出相应的消息。
赋予脚本执行权限: 保存并关闭编辑器后,给脚本添加执行权限:
bash
chmod +x check_udp_port.sh
运行 Shell 脚本: 现在您可以运行这个脚本来判断远程 UDP 端口是否被占用:
bash
./check_udp_port.sh
根据远程主机的实际响应,脚本将输出类似以下的消息:
The UDP port 53 on host example.com is OPEN.
或者:
The UDP port 53 on host example.com is either CLOSED or not responding.
请根据实际情况修改脚本中的 remote_host
和 port_number
变量值,以便检查不同的远程主机和端口。此脚本简化了端口状态判断过程,并提供了清晰的输出结果。