Linux 管理脚本工具

这个 shell 脚本,实现了多个 Linux 系统管理任务的功能,适合用于快速管理和维护 Linux 系统。主要包含以下功能:

  • 进程管理:列出当前正在运行的进程、杀死指定进程、按照端口号杀死进程。
  • 磁盘管理:查看磁盘使用情况、清理磁盘空间。
  • 网络管理:查看网络连接、配置网络接口、查询端口信息、扫描局域网设备。
  • 日志分析:查看系统日志、筛选关键字、保存日志。
  • 用户管理:查看用户列表、添加用户、删除用户、修改用户密码。
  • 安全管理:修改 SSH 端口、禁止 ROOT 登录。
  • 系统信息:查看操作系统、内核版本、CPU 信息、内存信息和磁盘信息。
  • 定时任务:查看当前用户的定时任务。
#!/bin/bash

# 判断系统类型,选择合适的包管理器
if [ -n "$(command -v yum)" ]; then
  PKGMGR="yum"
elif [ -n "$(command -v apt-get)" ]; then
  PKGMGR="apt-get"
else
  echo "无法确认系统类型,请手动安装软件包。"
  exit 1
fi

# 安装必需的工具和软件包
for TOOL in curl tar zstd unzip; do
  if ! command -v $TOOL > /dev/null; then
    sudo $PKGMGR install -y $TOOL
  fi
done

# 菜单文字提示
function menu() {
  cat << EOF
=========================================
           Linux 系统管理工具            
=========================================
1. 进程管理
2. 磁盘管理
3. 网络管理
4. 日志分析
5. 用户管理
6. 安全管理
7. 系统信息
8. 定时任务
0. 退出
=========================================
EOF
  read -p "请输入数字选择相应的菜单:" CHOICE
}

# 进程管理
function process_mgmt() {
  while true
  do
    cat << EOF
-----------------------------------------
               进程管理                  
-----------------------------------------
1. 列出所有进程
2. 杀死指定进程
3. 按照端口杀死进程
0. 返回上一级菜单
-----------------------------------------
EOF
    read -p "请输入数字选择相应的菜单:" CHOICE
    case $CHOICE in
      1)
        ps aux
        ;;
      2)
        read -p "请输入要杀死的进程 ID:" PID
        kill $PID
        ;;
      3)
        read -p "请输入要杀死的端口号:" PORT
        sudo fuser -k $PORT/tcp
        ;;
      0)
        break
        ;;
      *)
        echo "错误的选择。"
        ;;
    esac
  done
}

# 磁盘管理
function disk_mgmt() {
  while true
  do
    cat << EOF
-----------------------------------------
               磁盘管理                  
-----------------------------------------
1. 查看磁盘使用情况
2. 清理磁盘空间
0. 返回上一级菜单
-----------------------------------------
EOF
    read -p "请输入数字选择相应的菜单:" CHOICE
    case $CHOICE in
      1)
        df -h
        ;;
      2)
        read -p "请输入要清理的文件路径:" PATH
        sudo find $PATH -type f -mtime +30 -delete
        ;;
      0)
        break
        ;;
      *)
        echo "错误的选择。"
        ;;
    esac
  done
}

# 网络管理
function network_mgmt() {
  while true
  do
    cat << EOF
-----------------------------------------
               网络管理                  
-----------------------------------------
1. 查看网络连接
2. 配置网络接口
3. 查询端口信息
4. 扫描局域网设备
0. 返回上一级菜单
-----------------------------------------
EOF
    read -p "请输入数字选择相应的菜单:" CHOICE
    case $CHOICE in
      1)
        netstat -anp
        ;;
      2)
        sudo nano /etc/network/interfaces
        ;;
      3)
        read -p "请输入要查询的端口号:" PORT
        sudo lsof -i:$PORT
        ;;
      4)
        read -p "请输入 IP 地址范围(例如:192.168.1.1/24):" IP_RANGE
        sudo nmap -sP $IP_RANGE
        ;;
      0)
        break
        ;;
      *)
        echo "错误的选择。"
        ;;
    esac
  done
}

# 日志分析
function log_analysis() {
  while true
  do
    cat << EOF
-----------------------------------------
               日志分析                  
-----------------------------------------
1. 查看系统日志
2. 筛选关键字
3. 保存日志
0. 返回上一级菜单
-----------------------------------------
EOF
    read -p "请输入数字选择相应的菜单:" CHOICE
    case $CHOICE in
      1)
        cat /var/log/syslog
        ;;
      2)
        read -p "请输入要筛选的关键字:" KEYWORD
        cat /var/log/syslog | grep $KEYWORD
        ;;
      3) 
        read -p "请输入要保存的文件路径:" FILEPATH
        cat /var/log/syslog > $FILEPATH
        ;;
      0)
        break
        ;;
      *)
        echo "错误的选择。"
        ;;
    esac
  done
}

# 用户管理
function user_mgmt() {
  while true
  do
    cat << EOF
-----------------------------------------
               用户管理                  
-----------------------------------------
1. 查看用户列表
2. 添加用户
3. 删除用户
4. 修改用户密码
0. 返回上一级菜单
-----------------------------------------
EOF
    read -p "请输入数字选择相应的菜单:" CHOICE
    case $CHOICE in
      1)
        cat /etc/passwd
        ;;
      2)
        read -p "请输入新用户的用户名:" USERNAME
        sudo adduser $USERNAME
        ;;
      3)
        read -p "请输入要删除的用户的用户名:" USERNAME
        sudo userdel -r $USERNAME
        ;;
      4)
        read -p "请输入要修改密码的用户名:" USERNAME
        sudo passwd $USERNAME
        ;;
      0)
        break
        ;;
      *)
        echo "错误的选择。"
        ;;
    esac
  done
}

# 安全管理
function security_mgmt() {
  while true
  do
    cat << EOF
-----------------------------------------
               安全管理                  
-----------------------------------------
1. 修改 SSH 端口
2. 禁止 ROOT 登录
0. 返回上一级菜单
-----------------------------------------
EOF
    read -p "请输入数字选择相应的菜单:" CHOICE
    case $CHOICE in
      1)
        read -p "请输入新的 SSH 端口号:" PORT
        sudo sed -i "s/Port .*/Port $PORT/g" /etc/ssh/sshd_config
        sudo service sshd restart
        ;;
      2)
        sudo sed -i "s/PermitRootLogin yes/PermitRootLogin no/g" /etc/ssh/sshd_config
        sudo service sshd restart
        ;;
      0)
        break
        ;;
      *)
        echo "错误的选择。"
        ;;
    esac
  done
}

# 系统信息
function system_info() {
  cat << EOF
=========================================
               系统信息                  
=========================================
操作系统:$(lsb_release -d | cut -f2-)
内核版本:$(uname -r)
CPU 信息:$(grep "model name" /proc/cpuinfo | head -n1 | cut -d: -f2-)
内存信息:$(free -h | awk 'NR==2 {print $2}')
磁盘信息:$(df -h | awk '$NF=="/" {print "总容量:" $2 ", 剩余容量:" $4}')
=========================================
EOF
}

# 定时任务
function cron_job() {
  crontab -l
}

# 主循环
while true
do
  menu
  case $CHOICE in
    1)
      process_mgmt
      ;;
    2)
      disk_mgmt
      ;;
    3)
      network_mgmt
      ;;
    4)
      log_analysis
      ;;
    5)
      user_mgmt
      ;;
    6)
      security_mgmt
      ;;
    7)
      system_info
      ;;
    8)
      cron_job
      ;;
    0)
      echo "谢谢使用,再见!"
      exit 0
      ;;
    *)
      echo "错误的选择。"
      ;;
  esac
done