مقدمه
اسکریپتنویسی Bash کارهای تکراری مدیریت سیستم را خودکار میکند. این راهنما الگوهای عملی Bash مورد استفاده در محیطهای تولیدی را پوشش میدهد.
ساختار بهینه اسکریپت
BASH
#!/bin/bash
set -euo pipefail
readonly LOG_FILE="/var/log/myscript.log"
cleanup() {
rm -f /tmp/myscript_$$.*
}
trap cleanup EXIT
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE"
}توابع و مدیریت خطا
BASH
check_disk_usage() {
local mount_point="$1"
local threshold="${2:-85}"
local usage=$(df "$mount_point" | awk 'NR==2 {print $5}' | tr -d '%')
if [[ "$usage" -gt "$threshold" ]]; then
log "WARNING: $mount_point is ${usage}% full"
return 1
fi
return 0
}
if ! check_disk_usage /var 90; then
echo "Disk alert" | mail -s "Disk Alert" admin@company.com
fiاسکریپت بررسی سلامت سیستم
BASH
#!/bin/bash
# بررسی بار CPU
cpu_load=$(uptime | awk -F'load average:' '{print $2}' | awk -F',' '{print $1}' | tr -d ' ')
if (( $(echo "$cpu_load > 4.0" | bc -l) )); then
echo "High CPU: $cpu_load" | mail -s "CPU Alert" admin@company.com
fi
# بررسی دیسک
df -h | awk 'NR>1 {gsub(/%/,"",$5); if($5>85) print "ALERT: "$6" is "$5"% full"}'
# بررسی سرویسها
for service in nginx mysql sshd; do
systemctl is-active --quiet "$service" || echo "Service $service is DOWN!"
doneپردازش فایل
BASH
while IFS=',' read -r hostname ip role; do
ping -c 1 -W 1 "$ip" > /dev/null 2>&1 && echo "$hostname: UP" || echo "$hostname: DOWN"
done < hosts.csv