DEV Community

Kanavsingh
Kanavsingh

Posted on

Day 9: Advanced Bash Scripting Techniques in DevOps

Welcome Back to My DevOps Journey!
Hello everyone! Welcome to Day 9 of my 30-day DevOps journey. Today, I’ll be sharing insights from section 11 of the "DevOps Beginners to Advanced with Projects" course by Imran Teli. This section delves into advanced Bash scripting techniques, which are crucial for enhancing the functionality and reliability of your scripts.

Advanced Bash Scripting Techniques
Error Handling
Proper error handling ensures your scripts can gracefully handle unexpected situations and provide meaningful feedback.

Example: Using Exit Codes and trap

_#!/bin/bash

set -e # Exit immediately if a command exits with a non-zero status

function cleanup {
echo "An error occurred. Cleaning up..."
# Add cleanup code here
}

trap cleanup ERR

echo "Starting the script..."

Command that may fail

false
echo "This line will not be executed if the command above fails."_

Debugging
Debugging helps you identify and fix issues in your scripts more efficiently.

Example: Enabling Debug Mode

_#!/bin/bash

set -x # Enable debugging

echo "Debugging enabled"

Your script code here

set +x # Disable debugging
echo "Debugging disabled"_

Optimizing Scripts
Optimizing your scripts can improve their performance and readability.

Example: Using Functions and Arrays

!/bin/bash

Function to print an array

print_array() {
local array=("$@")
for element in "${array[@]}"; do
echo "$element"
done
}

Define an array

my_array=("DevOps" "Bash" "Scripting")

Call the function with the array

print_array "${my_array[@]}"

Practical Examples of Advanced Bash Scripting
Automating Log Rotation
A script to automate log rotation and archiving:

_#!/bin/bash

LOG_DIR="/var/log/myapp"
ARCHIVE_DIR="/var/log/myapp/archive"

echo "Rotating logs..."
mkdir -p $ARCHIVE_DIR
find $LOG_DIR -type f -name "*.log" -exec mv {} $ARCHIVE_DIR \;

echo "Compressing old logs..."
gzip $ARCHIVE_DIR/*.log

echo "Log rotation and compression completed."_

Monitoring System Resources
A script to monitor system resource usage and send alerts if usage exceeds thresholds:

_#!/bin/bash

CPU_THRESHOLD=80
MEM_THRESHOLD=80

cpu_usage=$(top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}')
mem_usage=$(free | grep Mem | awk '{print $3/$2 * 100.0}')

if (( $(echo "$cpu_usage > $CPU_THRESHOLD" | bc -l) )); then
echo "CPU usage is above threshold: $cpu_usage%"
fi

if (( $(echo "$mem_usage > $MEM_THRESHOLD" | bc -l) )); then
echo "Memory usage is above threshold: $mem_usage%"
fi_

My Learning Experience
Exploring advanced Bash scripting techniques has been a rewarding experience. These skills enable the creation of more robust, efficient, and maintainable scripts, which are essential for automating complex tasks in DevOps.

What's Next?
Tomorrow, I’ll be diving into the world of Cloud Computing, starting with an introduction to AWS(Amazon Web Services). Stay tuned for more exciting insights!

Connect with Me
Feel free to connect with me on LinkedIn for more updates and to join the conversation. Let's learn and grow together in this exciting field of DevOps!

Top comments (0)