Advance Shell Scripting in Linux

Advance Shell Scripting in Linux

#Day5 of #90DaysOfDevOps

Tasks:

Create Directories Using Shell Script:

  • Write a bash script createDirectories.sh that, when executed with three arguments (directory name, start number of directories, and end number of directories), creates a specified number of directories with a dynamic directory name.

  • Example 1: When executed as ./createDirectories.sh day 1 90, it creates 90 directories as day1 day2 day3 ... day90.

  • Example 2: When executed as ./createDirectories.sh Movie 20 50, it creates 31 directories as Movie20 Movie21 Movie22 ... Movie50.

Shell Script: createDirectories.sh

#!/bin/bash
# Script to create a range of directories with dynamic names

# Check if the correct number of arguments is provided
if [ $# -ne 3 ]; then
    echo "Usage: $0 <directory name> <start number> <end number>"
    exit 1
fi

# Assign the arguments to variables
dir_name=$1
start=$2
end=$3

# Create the directories in the specified range
for ((i=start; i<=end; i++))
do
    mkdir "${dir_name}${i}"
done

echo "Directories created from ${dir_name}${start} to ${dir_name}${end}."

Explanation:

  1. $# -ne 3: This checks if the script is provided with exactly 3 arguments.

  2. ${dir_name}${i}: Concatenates the directory name with the number (i).

  3. for ((i=start; i<=end; i++)): A loop to create directories from the start to the end number.

  4. mkdir "${dir_name}${i}": Creates each directory dynamically.

Steps to Run the Script:

  1. Save the script as createDirectories.sh.

  2. Make the script executable:

     chmod +x createDirectories.sh
    
  3. Run the script with the required arguments. For example:

     ./createDirectories.sh day 1 90
    

Example:

$ ./createDirectories.sh day 1 90
Directories created from day1 to day90.

This will create directories named day1, day2, ..., day90.

Create a Script to Backup All Your Work:

Backups are an important part of a DevOps Engineer's day-to-day activities.

Make a directory name backup

mkdir backup
cd backup

Shell Script: backup.sh

backup_dir="/root" # Change this to your backup directory

timestamp=$(date +"%Y%m%d_%H%M%S")

backup_file="${backup_dir}/backup_${timestamp}.tar.gz"

# Create a backup

tar -czf $backup_file /root/backup # Change this to the directory you want to backup

echo "Backup created at $backup_file"

Steps to Run the Script:

  1. Save the script as backup.sh.

  2. Make the script executable:

     chmod +x backup.sh
    
  3. Run the script:

     ./backup.sh
    

Cron and Crontab to Automate the Backup Script:

  • Cron is the system's main scheduler for running jobs or tasks unattended. A command called crontab allows the user to submit, edit, or delete entries to cron. A crontab file is a user file that holds the scheduling information.

Read About User Management:

  • A user is an entity in a Linux operating system that can manipulate files and perform several other operations. Each user is assigned an ID that is unique within the system. IDs 0 to 999 are assigned to system users, and local user IDs start from 1000 onwards.

  • Create 2 users and display their usernames.

#!/bin/bash
# Create User
useradd Harshit
useradd Shubham
# Display Usernames
echo "Created Users:"
cut -d: -f1 /etc/passwd | grep 'user1\|user2'