常用脚本记录

自动备份

该脚本可以用于自动备份指定目录中的文件,以保护数据的安全性。该脚本可以设置备份周期、备份目录、备份文件名等参数,可以使用tar命令进行文件压缩和归档。

#!/bin/bash

# 备份目录
backup_dir="/path/to/backup/dir"

# 被备份的目录
source_dir="/path/to/source/dir"

# 备份文件名,包括日期时间
backup_file_name="$(date +%Y-%m-%d_%H-%M-%S).tar.gz"

# 备份周期(每天备份一次)
backup_period="daily"

# 创建备份目录(如果不存在)
mkdir -p "$backup_dir"

# 根据备份周期,判断是否需要备份
if [[ "$backup_period" == "daily" ]]; then
    if [[ "$(date +%H)" != "00" ]]; then
        echo "不需要备份"
        exit 0
    fi
elif [[ "$backup_period" == "weekly" ]]; then
    if [[ "$(date +%u)" != "1" ]]; then
        echo "不需要备份"
        exit 0
    fi
elif [[ "$backup_period" == "monthly" ]]; then
    if [[ "$(date +%d)" != "01" ]]; then
        echo "不需要备份"
        exit 0
    fi
else
    echo "无效的备份周期"
    exit 1
fi

# 使用tar命令进行压缩和归档
tar -czf "$backup_dir/$backup_file_name" "$source_dir"

# 输出备份完成信息
echo "备份完成:$backup_dir/$backup_file_name"

系统监控

该脚本可以用于监控系统的各项指标,例如CPU使用率、内存使用率、磁盘使用率等,并在达到阈值时发送警报。该脚本可以使用top、free、df等命令获取系统信息,并使用mail命令发送邮件警报。

#!/bin/bash

# 邮件接收者地址
recipient="[email protected]"

# CPU 使用率阈值(百分比)
cpu_threshold=80

# 内存使用率阈值(百分比)
mem_threshold=80

# 磁盘使用率阈值(百分比)
disk_threshold=80

# 获取 CPU 使用率
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')

# 获取内存使用率
mem_usage=$(free | awk '/Mem/{printf("%d"), $3/$2*100}')

# 获取磁盘使用率
disk_usage=$(df -h / | awk '/\//{print $(NF-1)}' | sed 's/%//')

# 判断是否需要发送警报
if (( $(echo "$cpu_usage > $cpu_threshold" | bc -l) )); then
    mail -s "CPU 使用率过高" "$recipient" <<< "CPU 使用率:$cpu_usage%"
fi

if (( $(echo "$mem_usage > $mem_threshold" | bc -l) )); then
    mail -s "内存使用率过高" "$recipient" <<< "内存使用率:$mem_usage%"
fi

if (( $(echo "$disk_usage > $disk_threshold" | bc -l) )); then
    mail -s "磁盘使用率过高" "$recipient" <<< "磁盘使用率:$disk_usage%"
fi

数据库备份

该脚本可以用于自动备份数据库中的数据,以保护数据的安全性。该脚本可以使用mysqldump命令备份MySQL数据库,或使用pg_dump命令备份PostgreSQL数据库,还可以设置备份周期、备份目录、备份文件名等参数。

#!/bin/bash

# MySQL 用户名和密码
mysql_user="your_username"
mysql_password="your_password"

# 备份文件名(使用当前日期作为后缀)
backup_file="backup-$(date +%F).sql"

# 备份目录
backup_dir="/path/to/backup/dir"

# 执行备份
mysqldump -u "$mysql_user" -p"$mysql_password" --all-databases > "$backup_dir/$backup_file"

自动清理

该脚本可以用于定期清理系统中的临时文件、日志文件、无用文件等,以释放磁盘空间。该脚本可以使用find命令查找目标文件,并使用rm命令删除文件。

#!/bin/bash

# 清理目录
clean_dir="/path/to/clean/dir"

# 清理文件类型
clean_filetypes="*.log *.tmp *.bak"

# 清理文件的最后修改时间(单位:天)
clean_days=7

# 查找并删除目标文件
find "$clean_dir" -name "$clean_filetypes" -mtime +$clean_days -exec rm {} \;

网络监控

该脚本可以用于监控网络的连通性、带宽、延迟等指标,以判断网络是否正常工作。该脚本可以使用ping、traceroute、curl等命令测试网络,还可以使用crontab命令定时运行。

#!/bin/bash

# 监控目标IP地址
target_ip="192.168.1.1"

# ping测试参数
ping_count=5
ping_interval=1

# curl测试参数
curl_timeout=5

# 运行ping测试
ping_result=$(ping -c $ping_count -i $ping_interval $target_ip)

# 检查ping测试结果
if echo "$ping_result" | grep -q "100% packet loss"; then
    echo "Ping测试失败:目标IP地址不可达。"
else
    # 提取ping延迟信息
    ping_delay=$(echo "$ping_result" | tail -1 | awk -F '/' '{print $5}')

    # 运行curl测试
    curl_result=$(curl -s -m $curl_timeout -w "%{speed_download}\n" "http://$target_ip/")

    # 检查curl测试结果
    if [ -z "$curl_result" ]; then
        echo "Curl测试失败:无法访问目标IP地址。"
    else
        # 提取curl带宽信息
        curl_speed=$(echo "$curl_result" | tail -1)

        # 输出测试结果
        echo "Ping测试成功,延迟为$ping_delay ms。"
        echo "Curl测试成功,带宽为$curl_speed B/s。"
    fi
fi

应用监控

该脚本可以用于监控应用程序的运行状态、响应时间、内存使用等指标,以保证应用程序的稳定性和性能。该脚本可以使用curl、ab、ps等命令获取应用程序的状态和信息。

#!/bin/bash

# 目标HTTP服务的URL
url="http://example.com/"

# 测试次数
n=10

# 循环测试
for ((i=1; i<=n; i++))
do
    # 获取当前时间戳
    start=$(date +%s.%N)

    # 发送HTTP请求并获取响应状态码
    response=$(curl -sL -w "%{http_code}" "$url" -o /dev/null)

    # 获取响应时间
    end=$(date +%s.%N)
    elapsed=$(echo "$end - $start" | bc)

    # 输出测试结果
    echo "[$(date)] Response code: $response, Elapsed time: $elapsed seconds"

    # 等待1秒后再次测试
    sleep 1
done

在这个示例中,首先定义了目标HTTP服务的URL和测试次数。然后使用for循环发送HTTP请求,并使用curl命令获取响应状态码和响应时间。最后输出测试结果,并使用sleep命令等待1秒后再次测试。

您可以根据需要修改示例中的URL、测试次数、命令参数等,以适应您的实际需求。例如,可以添加监控内存使用的命令、使用其他监控工具等。

搜索替换

该脚本可以用于在指定目录下搜索指定的关键字,并将其替换为新的内容。可以使用grep命令查找目标文件,使用sed命令进行替换。

#!/bin/bash

# 指定要搜索的目录
dir="/home/user/project"

# 指定要搜索的关键字和替换内容
search="old_string"
replace="new_string"

# 在指定目录下搜索关键字,并将其替换为新内容
find "$dir" -type f -exec sed -i "s/$search/$replace/g" {} +

文件压缩

该脚本可以用于将指定目录下的文件进行压缩,以节省磁盘空间。可以使用tar命令进行文件压缩和归档。

#!/bin/bash

# 指定要压缩的目录
dir="/home/user/project"

# 指定要压缩的文件名
filename="backup_$(date +%Y-%m-%d_%H%M%S).tar.gz"

# 压缩目录并保存为指定的文件名
tar -czvf "$filename" "$dir"

你可能感兴趣的:(服务器,linux,网络)