七个运维必备的Shell自动化脚本

:2024年08月01日 DevOps实战派
分享到:

Shell 脚本是自动化日常任务的有力工具。通过编写和使用 Shell 脚本,运维人员可以显著提高工作效率,减少人为错误。

Shell 脚本是自动化日常任务的有力工具。通过编写和使用 Shell 脚本,运维人员可以显著提高工作效率,减少人为错误。

本文将介绍几个运维工作中必备的 Shell 自动化脚本,值得收藏。

一. 检查磁盘使用情况

这个脚本检查系统的磁盘使用情况,并发送邮件通知磁盘使用超过阈值的情况。

#!/bin/bash

THRESHOLD=80

EMAIL="admin@example.com"

df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;

do

usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )

partition=$(echo $output | awk '{ print $2 }' )

if [ $usep -ge $THRESHOLD ]; then

echo "Warning: The partition \"$partition\" has used $usep% at $(date)" | mail -s "Disk Space Alert: $partition" $EMAIL

fi

done

二. 自动备份 MySQL 数据库

这个脚本每天自动备份 MySQL 数据库,并保留最近 7 天的备份。

#!/bin/bash

BACKUP_DIR="/backup/mysql"

MYSQL_USER="root"

MYSQL_PASSWORD="password"

DATABASE_NAME="mydatabase"

# 创建备份目录

mkdir -p $BACKUP_DIR

# 创建一个新的备份

mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD $DATABASE_NAME > $BACKUP_DIR/$DATABASE_NAME-$(date +\%F).sql

# 移除超过七天备份文件

find $BACKUP_DIR -type f -mtime +7 -exec rm {} \;

三. 检查并重启宕掉的服务

这个脚本检查指定服务是否运行,如果宕掉则重启该服务并发送通知邮件。

#!/bin/bash

SERVICE="nginx"

EMAIL="admin@example.com"

if ! systemctl is-active --quiet $SERVICE; then

echo "$SERVICE is down. Attempting to restart..." | mail -s "$SERVICE is down" $EMAIL

systemctl restart $SERVICE

if systemctl is-active --quiet $SERVICE; then

echo "$SERVICE was successfully restarted" | mail -s "$SERVICE restarted" $EMAIL

else

echo "Failed to restart $SERVICE" | mail -s "$SERVICE restart failed" $EMAIL

fi

fi

4. 清理临时文件

这个脚本清理 /tmp 目录下超过 7 天未修改的文件,以释放磁盘空间。

#!/bin/bash

TEMP_DIR="/tmp"

DAYS=7

find $TEMP_DIR -type f -mtime +$DAYS -exec rm -f {} \;

find $TEMP_DIR -type d -empty -delete

5. 系统资源监控脚本

这个脚本每分钟记录系统的 CPU 和内存使用情况到日志文件中。

#!/bin/bash

LOG_FILE="/var/log/system_monitor.log"

while true; do

echo "$(date): CPU: $(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')% MEM: $(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }')" >> $LOG_FILE

sleep 60

done

六. 添加用户

这个脚本是自动添加一个新用户并授予其 sudo 权限。

#!/bin/bash

# 自动添加用户并授予sudo权限脚本

if [ -z "$1" ]; then

echo "Usage: $0 <username>"

exit 1

fi

USERNAME=$1

PASSWORD="initial_password"  # 可以修改初始密码

# 检查用户是否已经存在

if id "$USERNAME" &>/dev/null; then

echo "用户 $USERNAME 已存在。"

exit 1

fi

# 添加用户

useradd -m $USERNAME

if [ $? -ne 0 ]; then

echo "添加用户 $USERNAME 失败。"

exit 1

fi

# 设置用户密码

echo "$USERNAME:$PASSWORD" | chpasswd

if [ $? -ne 0 ]; then

echo "设置用户 $USERNAME 的密码失败。"

exit 1

fi

# 授予用户 sudo 权限(ubuntu为sudo组)

usermod -aG wheel $USERNAME

if [ $? -ne 0 ]; then

echo "添加用户 $USERNAME 到 sudo 组失败。"

exit 1

fi

echo "用户 $USERNAME 已添加并授予 sudo 权限。"

七 扫描某个网段的活动IP

这个脚本用于扫描指定网段内的所有 IP 地址,并检查哪些 IP 地址是活跃的(即可以通过 ping 命令得到响应)。

#!/bin/bash

# 网段IP扫描脚本

if [ -z "$1" ]; then

echo "Usage: $0 <subnet>"

echo "Example: $0 192.168.1"

exit 1

fi

SUBNET=$1

echo "开始扫描网段 $SUBNET.0/24 ..."

for i in {1..254}; do

IP="$SUBNET.$i"

ping -c 1 -W 1 $IP &>/dev/null

if [ $? -eq 0 ]; then

echo "IP $IP 存活"

fi

done

echo "扫描完成。"

-------------------------------------------

原文来源:https://mp.weixin.qq.com/s/JXjERsm03PDSUXVuPiJkQA

[我要纠错]
文:宋聪乔&发表于江苏
关键词: Shell 脚本 自动化 日常 任务

来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。

点个赞
0
踩一脚
0

您在阅读:七个运维必备的Shell自动化脚本

Copyright©2013-2024 JSedu114 All Rights Reserved. 江苏教育信息综合发布查询平台保留所有权利

苏公网安备32010402000125 苏ICP备14051488号-3技术支持:南京博盛蓝睿网络科技有限公司

南京思必达教育科技有限公司版权所有   百度统计

最热文章
最新文章
  • 卡尔蔡司镜片优惠店,镜片价格低
  • 苹果原装手机壳