Shell Scripting Part-2
Shell Scripting Part-2
PART-2
TARGET_DIR="/path/to/dir"
MAX_SIZE=500M
THRESHOLD=90
DIR_TO_CLEAN="/var/tmp"
usage=$(df "$DIR_TO_CLEAN" | awk 'NR==2 {print $5}' | sed
's/%//')
DB_LOG_DIR="/var/lib/mysql/logs"
DAYS_OLD=15
echo "Cleaning database logs older than $DAYS_OLD days in
$DB_LOG_DIR."
find "$DB_LOG_DIR" -type f -mtime +$DAYS_OLD -exec rm -f {} \;
echo "Database log cleanup completed."
WEBSITE_URL="https://example.com"
LOG_FILE="/var/log/website_uptime.log"
WEBSITE_URL="https://example.com"
LOG_FILE="/var/log/website_uptime.log"
CHECK_INTERVAL=60 # Interval in seconds
log_message() {
echo "$(date +'%Y-%m-%d %H:%M:%S') - $1" | tee -a
"$LOG_FILE"
}
while true; do
HTTP_STATUS=$(curl -o /dev/null -s -w "%{http_code}"
"$WEBSITE_URL")
if [ "$HTTP_STATUS" -eq 200 ]; then
log_message "Website $WEBSITE_URL is UP. Status:
$HTTP_STATUS."
else
log_message "ALERT: Website $WEBSITE_URL is DOWN.
Status: $HTTP_STATUS."
fi
sleep "$CHECK_INTERVAL"
done
3. Website Uptime Checker with Email Alerts
This script sends an email notification if the website is down. You
need to configure an email server (e.g., sendmail or mail
command).
bash
Copy code
#!/bin/bash
WEBSITE_URL="https://example.com"
LOG_FILE="/var/log/website_uptime.log"
EMAIL="[email protected]"
log_message() {
echo "$(date +'%Y-%m-%d %H:%M:%S') - $1" | tee -a
"$LOG_FILE"
}
SITES=("https://example1.com" "https://example2.com"
"https://example3.com")
LOG_FILE="/var/log/multi_site_uptime.log"
log_message() {
echo "$(date +'%Y-%m-%d %H:%M:%S') - $1" | tee -a
"$LOG_FILE"
}
WEBSITE_URL="https://example.com"
LOG_FILE="/var/log/website_uptime.log"
log_message() {
echo "$(date +'%Y-%m-%d %H:%M:%S') - $1" | tee -a
"$LOG_FILE"
}
START_TIME=$(date +%s.%N)
HTTP_STATUS=$(curl -o /dev/null -s -w "%{http_code}"
"$WEBSITE_URL")
END_TIME=$(date +%s.%N)
WEBSITE_URL="https://example.com"
DASHBOARD_API="http://your-dashboard.com/api/uptime"
LOG_FILE="/var/log/website_uptime.log"
log_message() {
echo "$(date +'%Y-%m-%d %H:%M:%S') - $1" | tee -a
"$LOG_FILE"
}
6. Network Information
Displays network interfaces, IP addresses, and connection stats.
bash
Copy code
#!/bin/bash
# Network Information
# Description: This script displays network interface and connection
information.
echo "Network Interfaces and IP Addresses:"
ip a
echo ""
Here are several CPU Usage Tracker Scripts that will help you
monitor the CPU usage over time and alert you when the CPU
usage exceeds a specified threshold:
LOG_FILE="/var/log/cpu_usage.log"
log_cpu_usage() {
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%*
id.*/\1/" | awk '{print 100 - $1}')
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "$TIMESTAMP - CPU Usage: $CPU_USAGE%" >>
"$LOG_FILE"
}
THRESHOLD=90
EMAIL="[email protected]"
LOG_FILE="/var/log/cpu_usage_alerts.log"
log_alert() {
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "$TIMESTAMP - CPU Usage Alert: $1%" >> "$LOG_FILE"
echo "ALERT: CPU Usage has exceeded $THRESHOLD%.
Current usage: $1%" | mail -s "CPU Usage Alert" "$EMAIL"
}
LOG_FILE="/var/log/cpu_usage_monitor.log"
INTERVAL=5 # In seconds
log_cpu_usage() {
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%*
id.*/\1/" | awk '{print 100 - $1}')
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "$TIMESTAMP - CPU Usage: $CPU_USAGE%" >>
"$LOG_FILE"
}
while true; do
log_cpu_usage
sleep "$INTERVAL"
done
LOG_FILE="/var/log/cpu_usage_top_processes.log"
log_cpu_usage() {
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%*
id.*/\1/" | awk '{print 100 - $1}')
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "$TIMESTAMP - CPU Usage: $CPU_USAGE%" >>
"$LOG_FILE"
echo "$TIMESTAMP - Top 5 CPU-consuming processes:" >>
"$LOG_FILE"
ps aux --sort=-%cpu | head -n 6 >> "$LOG_FILE"
}
LOG_FILE="/var/log/cpu_load_usage.log"
log_cpu_load() {
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%*
id.*/\1/" | awk '{print 100 - $1}')
LOAD_AVG=$(uptime | awk -F'load average:' '{ print $2 }')
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "$TIMESTAMP - CPU Usage: $CPU_USAGE%, Load
Average: $LOAD_AVG" >> "$LOG_FILE"
}
LOG_FILE="/var/log/continuous_cpu_usage.log"
REPORT_FILE="/var/log/cpu_usage_report_$(date
+'%Y%m%d').log"
log_cpu_usage() {
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%*
id.*/\1/" | awk '{print 100 - $1}')
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "$TIMESTAMP - CPU Usage: $CPU_USAGE%" >>
"$LOG_FILE"
}
generate_report() {
echo "----- CPU Usage Report -----" > "$REPORT_FILE"
awk '{print $1, $2, $3, $4, $5, $6}' "$LOG_FILE" >>
"$REPORT_FILE"
}
THRESHOLD=80
NOTIFY_CMD="notify-send"
LOG_FILE="/var/log/cpu_usage_threshold.log"
log_and_notify() {
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%*
id.*/\1/" | awk '{print 100 - $1}')
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
echo "$TIMESTAMP - CPU Usage: $CPU_USAGE%" >>
"$LOG_FILE"