Shell Scripting for DevOps

ยท

4 min read

Shell Scripting for DevOps

1. What is Kernel, Shell, and Linux Shell Scripting?

Kernel

The Kernel is the core of the Linux operating system. It acts as a bridge between the hardware and software, managing system resources such as CPU, memory, and I/O devices. The kernel handles process scheduling, security, and system calls.

Shell

The Shell is an interface between the user and the kernel. It interprets commands entered by the user and executes them by interacting with the kernel. Shells like Bash, Zsh, and Fish provide an environment to run commands, scripts, and automate tasks.

Linux Shell Scripting

Shell scripting is the practice of writing a series of shell commands in a file (script) that can be executed as a program. Shell scripts are commonly used for automation, system administration, and DevOps workflows.


2. What is Shell Scripting in DevOps?

Shell scripting is a powerful tool in DevOps that automates repetitive tasks, enhances system administration, and enables seamless integration between different tools and environments. A shell script is essentially a text file containing a sequence of Linux commands that are executed in order.

Why is Shell Scripting Important for DevOps?

  • Automation: Automates deployments, system monitoring, and configuration management.

  • Continuous Integration & Continuous Deployment (CI/CD): Helps in writing scripts for build automation, testing, and deployment.

  • Infrastructure as Code (IaC): Works alongside tools like Ansible, Terraform, and Kubernetes.

  • System Administration: Manages logs, backups, and scheduled tasks.

Example Use Case

Suppose a DevOps engineer needs to deploy an application and restart a service automatically. A shell script can be written to:

#!/bin/bash
sudo systemctl restart nginx
sudo systemctl status nginx

This script restarts the Nginx web server and checks its status, reducing manual effort.


3. What is #!/bin/bash? Can we use #!/bin/sh?

The #! (Shebang) at the beginning of a shell script tells the system which interpreter to use.

  • #!/bin/bash: Specifies that the script should be executed using the Bash shell.

  • #!/bin/sh: Uses the sh shell, which is often a symbolic link to bash or another shell.

Difference Between bash and sh

  • bash (Bourne Again Shell) supports advanced scripting features like arrays, functions, and string manipulation.

  • sh (Bourne Shell) is more portable but lacks advanced features.

โœ… In most cases, #!/bin/bash is preferred for complex scripts requiring advanced functionality.


4. Shell Script to Print a Message

Write a simple shell script that prints:

#!/bin/bash
echo "I will complete #90DaysOfDevOps challenge."

How to Run It?

  1. Save the script as devops.sh.

  2. Give execution permission: chmod +x devops.sh

  3. Run the script: ./devops.sh

Output:

I will complete #90DaysOfDevOps challenge.

5. Shell Script for User Input and Arguments

This script takes user input and arguments and prints them.

#!/bin/bash
# Taking user input
echo "Enter your name:"
read name
echo "Hello, $name!"

# Taking input from arguments
echo "Script name: $0"
echo "First argument: $1"
echo "Second argument: $2"

Running the Script

Save it as input_script.sh, give execution permission, and run it with arguments:

chmod +x input_script.sh
./input_script.sh DevOps Engineer

Output:

Enter your name:
> John
Hello, John!
Script name: ./input_script.sh
First argument: DevOps
Second argument: Engineer

6. If-Else Statement in Shell Scripting

The following script compares two numbers and prints which one is greater.

#!/bin/bash
echo "Enter first number:"
read num1
echo "Enter second number:"
read num2

if [ $num1 -gt $num2 ]
then
    echo "$num1 is greater than $num2"
elif [ $num1 -lt $num2 ]
then
    echo "$num1 is less than $num2"
else
    echo "Both numbers are equal"
fi

Running the Script

chmod +x compare_numbers.sh
./compare_numbers.sh

Example Output:

Enter first number:
> 10
Enter second number:
> 20
10 is less than 20

Conclusion

Shell scripting is a fundamental skill for DevOps professionals, enabling automation, efficiency, and seamless integration of tools. Whether managing cloud infrastructure, automating deployments, or processing logs, mastering shell scripting is a must!

๐Ÿ’ฌ What shell scripting task do you automate the most? Let me know in the comments! ๐Ÿš€

ย