插件窝 干货文章 9 个实用 shell 脚本,建议收藏!

9 个实用 shell 脚本,建议收藏!

bash echo 脚本 文件 651    来源:    2025-04-13

9个实用Shell脚本收藏

以下是9个非常实用的Shell脚本,涵盖了日常系统管理、文件处理、网络操作等多个方面,建议收藏备用。

1. 批量重命名文件

#!/bin/bash
# 批量将.jpg文件重命名为.jpg.bak
for file in *.jpg
do
    mv "$file" "${file%.jpg}.jpg.bak"
done

2. 查找并删除旧文件

#!/bin/bash
# 查找并删除30天前的.log文件
find /var/log -name "*.log" -type f -mtime +30 -exec rm -f {} \;

3. 监控磁盘空间

#!/bin/bash
# 监控磁盘空间,超过90%时发送警告
THRESHOLD=90
CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')

if [ "$CURRENT" -gt "$THRESHOLD" ] ; then
    mail -s "磁盘空间警告: 使用率 ${CURRENT}%" admin@example.com <<< "根分区空间即将用完"
fi

4. 自动备份脚本

#!/bin/bash
# 自动备份指定目录到远程服务器
BACKUP_DIR="/home/user/important_files"
REMOTE_SERVER="user@backup.example.com"
REMOTE_PATH="/backups"

tar -czf backup-$(date +%Y%m%d).tar.gz $BACKUP_DIR
scp backup-$(date +%Y%m%d).tar.gz $REMOTE_SERVER:$REMOTE_PATH
rm backup-$(date +%Y%m%d).tar.gz

5. 批量Ping测试

#!/bin/bash
# 批量测试一组IP的连通性
IP_LIST="192.168.1.1 192.168.1.2 192.168.1.3 8.8.8.8"

for ip in $IP_LIST
do
    ping -c 1 $ip > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "$ip 可达"
    else
        echo "$ip 不可达"
    fi
done

6. 进程监控与重启

#!/bin/bash
# 检查进程是否运行,如果没有则启动
PROCESS="nginx"
pgrep $PROCESS > /dev/null

if [ $? -ne 0 ]; then
    echo "$PROCESS 未运行,正在启动..."
    systemctl start $PROCESS
fi

7. 日志文件分析

#!/bin/bash
# 分析Apache/Nginx访问日志,统计访问量前10的IP
LOG_FILE="/var/log/nginx/access.log"

echo "访问量前10的IP:"
awk '{print $1}' $LOG_FILE | sort | uniq -c | sort -nr | head -10

8. 批量创建用户

#!/bin/bash
# 批量创建用户并设置随机密码
USER_LIST="user1 user2 user3"

for user in $USER_LIST
do
    useradd $user
    PASS=$(openssl rand -base64 12)
    echo "$user:$PASS" | chpasswd
    echo "用户 $user 已创建,密码: $PASS"
done

9. 系统信息收集

#!/bin/bash
# 收集系统基本信息并保存到文件
REPORT_FILE="system_report_$(date +%Y%m%d).txt"

{
    echo "===== 系统信息报告 ====="
    echo "生成时间: $(date)"
    echo ""
    echo "=== 系统信息 ==="
    uname -a
    echo ""
    echo "=== 内存使用 ==="
    free -h
    echo ""
    echo "=== 磁盘空间 ==="
    df -h
    echo ""
    echo "=== 运行时间 ==="
    uptime
} > $REPORT_FILE

echo "报告已保存到 $REPORT_FILE"

使用建议

  1. 使用前请根据实际需求修改脚本中的路径、参数等信息
  2. 建议先在小规模测试环境中验证脚本功能
  3. 对于重要操作(如删除文件、创建用户等),建议先添加确认提示
  4. 可以设置cron定时任务让一些脚本自动执行

这些脚本涵盖了Linux系统管理的常见需求,熟练掌握后可以大大提高工作效率。