用shell写一个巡检脚本
时间: 2024-05-15 13:19:27 浏览: 214
以下是一个简单的巡检脚本,它可以检查系统的磁盘使用情况、内存使用情况、CPU利用率和网络连接情况:
#!/bin/bash
# 获取系统磁盘使用情况
disk_usage=$(df -h)
# 获取系统内存使用情况
mem_usage=$(free -m)
# 获取CPU利用率
cpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
# 检查网络连接情况
ping -c 1 www.google.com > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "网络连接正常"
else
echo "网络连接异常"
fi
# 输出检查结果
echo "磁盘使用情况:"
echo "$disk_usage"
echo "内存使用情况:"
echo "$mem_usage"
echo "CPU利用率:$cpu_usage%"
```
您可以根据自己的需求修改脚本以检查更多系统指标。
相关问题
使用shell写一个巡检脚本
以下是一个简单的巡检脚本的示例,使用Shell脚本编写:
```shell
#!/bin/bash
# 巡检脚本
# 检查主机名
function check_hostname() {
hostname=$(hostname)
echo "Hostname: $hostname"
}
# 检查系统版本
function check_os_version() {
os_version=$(cat /etc/os-release | grep PRETTY_NAME | cut -d "=" -f 2)
echo "Operating System: $os_version"
}
# 检查CPU信息
function check_cpu() {
cpu_info=$(lscpu | grep "Model name" | cut -d ":" -f 2 | sed 's/^[ \t]*//')
echo "CPU: $cpu_info"
}
# 检查内存信息
function check_memory() {
mem_info=$(free -h | awk '/^Mem/ {print "Total: " $2, "Used: " $3, "Free: " $4}')
echo "Memory: $mem_info"
}
# 检查磁盘空间
function check_disk_space() {
disk_info=$(df -h | awk '/^\/dev\// {print $1, "Total: " $2, "Used: " $3, "Free: " $4}')
echo "Disk Space: $disk_info"
}
# 执行巡检
function run_inspection() {
echo "Starting system inspection..."
check_hostname
check_os_version
check_cpu
check_memory
check_disk_space
echo "System inspection completed."
}
# 调用巡检函数
run_inspection
```
以上脚本执行了一些基本的系统巡检任务,包括检查主机名、操作系统版本、CPU信息、内存信息和磁盘空间。你可以根据需要自定义和扩展脚本中的检查项。要运行脚本,将其保存为文件(例如`inspection.sh`),然后在终端中运行以下命令:
```shell
bash inspection.sh
```
脚本将逐个执行巡检任务,并显示相应的检查结果。你可以根据实际需求自定义输出格式和添加其他检查任务。
用shell写一个服务器巡检脚本
服务器巡检脚本可以通过 shell 脚本编写,以下是一个简单的服务器巡检脚本示例:
```bash
#!/bin/bash
# 服务器巡检脚本
# 检查系统负载
load=$(uptime | awk '{print $10}')
if [ $(echo "$load > 1" | bc) -eq 1 ]
then
echo "系统负载过高:$load"
fi
# 检查磁盘空间
disk=$(df -h | grep /dev/sda1 | awk '{print $5}' | cut -d'%' -f1)
if [ $disk -ge 90 ]
then
echo "磁盘空间不足:$disk%"
fi
# 检查内存使用率
mem=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}')
if [ $(echo "$mem > 80" | bc) -eq 1 ]
then
echo "内存使用率过高:$mem%"
fi
# 检查网络连接数
conn=$(netstat -an | grep :80 | wc -l)
if [ $conn -ge 100 ]
then
echo "网络连接数过多:$conn"
fi
# 检查 CPU 使用率
cpu=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2}')
if [ $(echo "$cpu > 80" | bc) -eq 1 ]
then
echo "CPU 使用率过高:$cpu%"
fi
# 检查日志文件大小
log=$(du -sh /var/log/* | sort -hr | head -n 1 | awk '{print $1}')
if [ $(echo "$log > 10" | bc) -eq 1 ]
then
echo "日志文件过大:$log"
fi
# 发送邮件告警
if [ $(echo "$load > 1" | bc) -eq 1 -o $disk -ge 90 -o $(echo "$mem > 80" | bc) -eq 1 -o $conn -ge 100 -o $(echo "$cpu > 80" | bc) -eq 1 -o $(echo "$log > 10" | bc) -eq 1 ]
then
echo "服务器存在异常,发送邮件告警"
# 发送邮件的命令,需要替换成实际使用的邮件服务和账号
echo "服务器存在异常,请及时处理。" | mail -s "服务器巡检告警" user@example.com
fi
```
该脚本会检查系统负载、磁盘空间、内存使用率、网络连接数、CPU 使用率和日志文件大小等指标,如果出现异常,就会发送邮件告警。需要注意的是,邮件发送命令需要替换成实际使用的邮件服务和账号。
该脚本可以通过 crontab 定时执行,例如每天凌晨 3 点执行一次:
```
0 3 * * * /path/to/check_server.sh
```
以上是一个简单的服务器巡检脚本示例,可以根据实际需要进行修改和扩展。
阅读全文