5 Useful Shell Scripts for Linux Newbies – Part II

Linux shell scripting is the art of writing small programs (scripts) to automate tasks in the command-line interface, which involves using commands, variables, loops, and conditionals to create efficient and automated workflows.

This article is an extension of our first article, understanding linux shell scripting. In that piece, we introduced you to scripting. Continuing from there, we aim to maintain the momentum and not disappoint you in this article.

Script 1: Drawing a Special Pattern

The following “Special_Pattern.sh” Bash script prompts the user to input a number between 5 and 9. If the input is within this range, the script proceeds to create a pattern of dots in two stages: an ascending pattern and a descending pattern.

The script utilizes nested loops for this purpose, creating a visually appealing pattern. Finally, a message is displayed, indicating support from Tecmint.com whenever assistance is needed.

#!/bin/bash

MAX_NO=0
echo -n "Enter a number between (5 to 9): "
read MAX_NO

if ! [ $MAX_NO -ge 5 -a $MAX_NO -le 9 ]; then
   echo "Please enter a number between 5 and 9. Try again."
   exit 1
fi

clear

for ((i=1; i<=MAX_NO; i++)); do
    for ((s=MAX_NO; s>=i; s--)); do
        echo -n " "
    done
    for ((j=1; j<=i; j++)); do
        echo -n " ."
    done
    echo ""
done

###### Second stage ######################

for ((i=MAX_NO; i>=1; i--)); do
    for ((s=i; s<=MAX_NO; s++)); do
        echo -n " "
    done
    for ((j=1; j<=i; j++)); do
        echo -n " ."
    done
    echo ""
done

echo -e "\n\n\t\t\t Whenever you need help, Tecmint.com is always there"

Most of the above ‘keywords‘ should be familiar to you, and many are self-explanatory. For example, ‘MAX‘ sets the maximum value of the variable, ‘for‘ is a loop, and anything within the loop executes repeatedly until the loop is valid for the given input value.

Special_Pattern Script
Special_Pattern Script

If you are a little aware of any programming language, learning the above script is not difficult, even if you are new to computation, programming, and Linux it is not going to be much more difficult.

Script 2: Creating Colorful Script

The “Colorful.sh” script is a Bash script created to demonstrate the use of ANSI escape codes for adding color and formatting effects to text output in the terminal.

These escape codes provide a simple way to enhance the visual appeal of terminal-based scripts or programs, which display various text styles, colors, and background colors, allowing users to experiment with different combinations.

#!/bin/bash
clear 
echo -e "\e[1mHello World"    # bold effect
echo -e "\e[5mBlink"           # blink effect
echo -e "\e[0mHello World"      # back to normal
echo -e "\e[31mHello World"     # Red color
echo -e "\e[32mHello World"     # Green color
echo -e "\e[33mHello World"     # Yellow color
echo -e "\e[34mHello World"     # Blue color
echo -e "\e[35mHello World"     # Magenta color
echo -e "\e[36mHello World"     # Cyan color
echo -e "\e[0m"                 # back to normal
echo -e "\e[41mHello World"     # Red background
echo -e "\e[42mHello World"     # Green background
echo -e "\e[43mHello World"     # Yellow background
echo -e "\e[44mHello World"     # Blue background
echo -e "\e[45mHello World"     # Magenta background
echo -e "\e[46mHello World"     # Cyan background
echo -e "\e[0mHello World"      # back to normal
Creating Colorful Shell Script
Creating Colorful Shell Script

Script 3: Encrypt a File or Directory

The “Encrypt.sh” script is a Bash script designed to provide a simple interface for encrypting a file using the GnuPG (GPG) encryption tool.

The script welcomes the user and prompts them to enter the exact filename, including the extension, of the file or folder they want to encrypt. It then uses GPG to encrypt the specified file, displaying a success message afterward.

Additionally, the script removes the original unencrypted file for added security. Note that the script should be placed in the same directory as the file to be encrypted due to its current limitation.

#!/bin/bash

echo "Welcome! I am ready to encrypt a file/folder for you."
echo "Currently, I have a limitation. Please place me in the same folder where the file to be encrypted is located."
echo "Enter the exact file name with the extension."
read file;

gpg -c "$file"

echo "I have successfully encrypted the file..."

# Ask for confirmation before removing the original file
read -p "Do you want to remove the original file? (y/n): " confirm

if [ "$confirm" == "y" ]; then
    rm -rf "$file"
    echo "Original file removed."
else
    echo "Original file was not removed. Exiting without deletion."
fi

The command "gpg -c filename" is used to encrypt a file using GnuPG (GNU Privacy Guard) with symmetric encryption and the command "gpg -d filename.gpg > filename" is used to decrypt a GPG-encrypted file and save the decrypted content into a new file.

Encrypt File Script
Encrypt File Script

Script 4: Linux Server Monitor Script

The “Server-Health.sh” script is a Bash script designed to provide a comprehensive overview of the health and performance of a server.

When executed, the script gathers various system-related information and presents it in a structured format that includes uptime, currently connected users, disk and memory usage, list open ports, network connections, running processes, and system statistics.

#!/bin/bash
    date;
    echo "uptime:"
    uptime
    echo "Currently connected:"
    w
    echo "--------------------"
    echo "Last logins:"
    last -a |head -3
    echo "--------------------"
    echo "Disk and memory usage:"
    df -h | xargs | awk '{print "Free/total disk: " $11 " / " $9}'
    free -m | xargs | awk '{print "Free/total memory: " $17 " / " $8 " MB"}'
    echo "--------------------"
    start_log=`head -1 /var/log/messages |cut -c 1-12`
    oom=`grep -ci kill /var/log/messages`
    echo -n "OOM errors since $start_log :" $oom
    echo ""
    echo "--------------------"
    echo "Utilization and most expensive processes:"
    top -b |head -3
    echo
	top -b |head -10 |tail -4
    echo "--------------------"
    echo "Open TCP ports:"
    nmap -p- -T4 127.0.0.1
    echo "--------------------"
    echo "Current connections:"
    ss -s
    echo "--------------------"
    echo "processes:"
    ps auxf --width=200
    echo "--------------------"
    echo "vmstat:"
    vmstat 1 5
Linux Server Health Script
Linux Server Health Script

To redirect the output of the “Server-Health.sh” script to a file, you can use the following command:

./Server-Health.sh > server_health_report.txt

Script 5: Linux Disk Space Monitor Script

The “Check-Disk-Space.sh” script is designed to monitor disk space usage on a specified partition of a server. Configurable parameters include the maximum allowed disk space usage percentage (`MAX`), the email address for receiving alerts (`EMAIL`), and the target partition (`PARTITION`).

The script utilizes the df command to gather disk usage information and sends email alerts if the current usage exceeds the defined threshold.

#!/bin/bash

# Set the maximum allowed disk space usage percentage
MAX=90

# Set the email address to receive alerts
[email protected]

# Set the partition to monitor (change accordingly, e.g., /dev/sda1)
PARTITION=/dev/sda1

# Get the current disk usage percentage and related information
USAGE_INFO=$(df -h "$PARTITION" | awk 'NR==2 {print $5, $1, $2, $3, $4}' | tr '\n' ' ')
USAGE=$(echo "$USAGE_INFO" | awk '{print int($1)}')  # Remove the percentage sign

if [ "$USAGE" -gt "$MAX" ]; then
  # Send an email alert with detailed disk usage information
  echo -e "Warning: Disk space usage on $PARTITION is $USAGE%.\n\nDisk Usage Information:\n$USAGE_INFO" | \
    mail -s "Disk Space Alert on $HOSTNAME" "$EMAIL"
fi

Script writing and programming have no limits; you can implement anything as needed. That’s all for now. In my next article, I will introduce you to some different scripting flavors.

Ravi Saive
I am an experienced GNU/Linux expert and a full-stack software developer with over a decade in the field of Linux and Open Source technologies

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

Leave a Reply to Hieu Dinh Cancel reply

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.