0
点赞
收藏
分享

微信扫一扫

Xshell上Linux的基础指令

独兜曲 2024-11-02 阅读 33

你可以编写一个简单的 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

保存和运行脚本

  1. 保存脚本:
    将上述脚本保存为 check_ports.sh 文件。

  2. 赋予执行权限:
    chmod +x check_ports.sh

  3. 运行脚本:
    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 的结果输出端口是否被占用的信息。

通过这个脚本,你可以轻松地检查多个端口是否被占用。希望这对你有所帮助!

举报

相关推荐

0 条评论