你可以编写一个简单的 Bash 脚本来检查多个端口是否被占用。以下是一个示例脚本,它接受用户输入的多个端口号,并检查这些端口是否被占用。
脚本内容
#!/bin/bash
检查是否以 root 用户运行
if [ “$(id -u)” -ne 0 ]; then
echo “请以 root 用户运行此脚本。” >&2
exit 1
fi
提示用户输入端口号,用空格分隔
read -p "请输入要检查的端口号(用空格分隔): " ports
将输入的字符串分割成数组
IFS=’ ’ read -r -a port_array <<< “$ports”
遍历每个端口并检查是否被占用
for port in "${port_array[@]}"; do
# 使用 netstat 检查端口是否被占用
if netstat -tuln | grep -q ":$port "; then
echo "端口 $port 已被占用。"
else
echo "端口 $port 未被占用。"
fi
done
保存和运行脚本
-
保存脚本:
将上述脚本保存为check_ports.sh
文件。 -
赋予执行权限:
chmod +x check_ports.sh -
运行脚本:
sudo ./check_ports.sh
示例
假设你想要检查端口 80
, 443
, 和 8080
是否被占用,以下是运行脚本的过程:
$ sudo ./check_ports.sh
请输入要检查的端口号(用空格分隔): 80 443 8080
端口 80 已被占用。
端口 443 已被占用。
端口 8080 未被占用。
解释
● netstat -tuln
:这个命令会列出所有正在监听的 TCP 和 UDP 端口及其相关信息。
● -t
:显示 TCP 端口。
● -u
:显示 UDP 端口。
● -l
:仅显示监听的端口。
● -n
:以数字形式显示地址和端口号,而不是解析主机名和服务名。
● grep -q ":$port "
:这个命令会检查 netstat
的输出中是否包含指定的端口号。-q
选项使得 grep
不输出任何内容,只返回状态码。
● echo
语句:根据 grep
的结果输出端口是否被占用的信息。
通过这个脚本,你可以轻松地检查多个端口是否被占用。希望这对你有所帮助!