<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kanav Gathe</title>
    <description>The latest articles on DEV Community by Kanav Gathe (@kanav_gathe).</description>
    <link>https://dev.to/kanav_gathe</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2231105%2F832ec88c-243c-41f5-b3ba-6505a2247fa2.jpg</url>
      <title>DEV Community: Kanav Gathe</title>
      <link>https://dev.to/kanav_gathe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kanav_gathe"/>
    <language>en</language>
    <item>
      <title>DevOps Planning to Production Day 1 of 24 : Getting Started with Red Hat Linux</title>
      <dc:creator>Kanav Gathe</dc:creator>
      <pubDate>Wed, 27 Nov 2024 14:07:50 +0000</pubDate>
      <link>https://dev.to/kanav_gathe/devops-planning-to-production-day-1-of-24-getting-started-with-red-hat-linux-17j6</link>
      <guid>https://dev.to/kanav_gathe/devops-planning-to-production-day-1-of-24-getting-started-with-red-hat-linux-17j6</guid>
      <description>&lt;h2&gt;
  
  
  Introduction to Red Hat Linux
&lt;/h2&gt;

&lt;p&gt;Think of an operating system like a conductor in an orchestra, coordinating all the different instruments (hardware components) to create a harmonious performance. Red Hat Linux is a professional-grade conductor, known for its reliability and enterprise support.&lt;/p&gt;

&lt;p&gt;Red Hat Linux is a specialized version of Linux designed for business environments. Imagine you're building a house - while regular Linux distributions might be like basic building tools from a hardware store, Red Hat Linux is like having professional-grade construction equipment with a dedicated support team.&lt;/p&gt;

&lt;p&gt;Key features that make Red Hat Linux special:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enterprise Support: You have access to professional help 24/7, like having an expert on call.&lt;/li&gt;
&lt;li&gt;Long-term Stability: Updates and security patches continue for up to 10 years, ensuring your system stays secure.&lt;/li&gt;
&lt;li&gt;Certified Software Compatibility: Programs are thoroughly tested to work together, like pieces of a puzzle designed to fit perfectly.&lt;/li&gt;
&lt;li&gt;Security Features: Built-in protection mechanisms, like having a state-of-the-art security system for your house.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  File System Management
&lt;/h2&gt;

&lt;p&gt;The Linux file system is organized like a tree, starting from a single point called the "root" directory (/). Let's understand each major directory and its purpose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/ (Root Directory)
│
├── /home          # User personal directories (like individual bedrooms)
├── /etc           # System configuration files (like the house's control panel)
├── /var           # Variable data like logs (like a diary of system events)
├── /bin           # Essential commands (like basic household tools)
├── /usr           # User programs (like entertainment systems)
├── /tmp           # Temporary files (like a scratch pad)
└── /boot          # Files needed to start the system (like startup instructions)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's explore how to manage this file system with practical examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Creating directories (like creating rooms in a house)&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /home/projects/website
&lt;span class="c"&gt;# The -p flag creates parent directories if they don't exist&lt;/span&gt;

&lt;span class="c"&gt;# Moving files (like moving furniture between rooms)&lt;/span&gt;
&lt;span class="nb"&gt;mv&lt;/span&gt; /home/old_documents/&lt;span class="k"&gt;*&lt;/span&gt; /home/archive/

&lt;span class="c"&gt;# Copying files (like making duplicates of important documents)&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; /etc/httpd/conf/ /etc/httpd/conf.backup/
&lt;span class="c"&gt;# The -r flag copies directories recursively&lt;/span&gt;

&lt;span class="c"&gt;# Finding files (like searching for something in your house)&lt;/span&gt;
find /home &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s2"&gt;"*.pdf"&lt;/span&gt; &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-7&lt;/span&gt;
&lt;span class="c"&gt;# This finds all PDF files modified in the last 7 days&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  User and Group Administration
&lt;/h2&gt;

&lt;p&gt;Managing users and groups in Linux is like managing employees in a company. Let's explore this with practical examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Creating a new user (like hiring a new employee)&lt;/span&gt;
useradd &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; /bin/bash john
&lt;span class="c"&gt;# -m creates a home directory&lt;/span&gt;
&lt;span class="c"&gt;# -s sets their default shell&lt;/span&gt;

&lt;span class="c"&gt;# Setting a password&lt;/span&gt;
passwd john

&lt;span class="c"&gt;# Creating a group (like creating a department)&lt;/span&gt;
groupadd developers

&lt;span class="c"&gt;# Adding a user to a group (like assigning someone to a department)&lt;/span&gt;
usermod &lt;span class="nt"&gt;-aG&lt;/span&gt; developers john
&lt;span class="c"&gt;# -a means append&lt;/span&gt;
&lt;span class="c"&gt;# -G specifies the group&lt;/span&gt;

&lt;span class="c"&gt;# Setting up project permissions&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; /projects/webapp
&lt;span class="nb"&gt;chown &lt;/span&gt;john:developers /projects/webapp
&lt;span class="nb"&gt;chmod &lt;/span&gt;775 /projects/webapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understanding file permissions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read (r): Like being able to view a document (4 in numeric notation)&lt;/li&gt;
&lt;li&gt;Write (w): Like being able to edit a document (2 in numeric notation)&lt;/li&gt;
&lt;li&gt;Execute (x): Like being able to run a program (1 in numeric notation)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example permission settings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod &lt;/span&gt;755 script.sh
&lt;span class="c"&gt;# 7 (owner): read + write + execute (4+2+1)&lt;/span&gt;
&lt;span class="c"&gt;# 5 (group): read + execute (4+1)&lt;/span&gt;
&lt;span class="c"&gt;# 5 (others): read + execute (4+1)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Package Management with YUM
&lt;/h2&gt;

&lt;p&gt;YUM (Yellowdog Updater Modified) is like a smart package delivery service for your system. It handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installing new software&lt;/li&gt;
&lt;li&gt;Updating existing software&lt;/li&gt;
&lt;li&gt;Removing unwanted software&lt;/li&gt;
&lt;li&gt;Managing dependencies (other software needed for programs to work)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Common YUM commands with real-world examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Updating the entire system&lt;/span&gt;
yum update &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;span class="c"&gt;# The -y flag automatically answers "yes" to prompts&lt;/span&gt;

&lt;span class="c"&gt;# Installing a web server&lt;/span&gt;
yum &lt;span class="nb"&gt;install &lt;/span&gt;httpd php mysql-server &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;span class="c"&gt;# This installs multiple packages at once&lt;/span&gt;

&lt;span class="c"&gt;# Searching for packages&lt;/span&gt;
yum search &lt;span class="s2"&gt;"web server"&lt;/span&gt;
&lt;span class="c"&gt;# Shows all packages related to web servers&lt;/span&gt;

&lt;span class="c"&gt;# Removing packages&lt;/span&gt;
yum remove unused-package &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;span class="c"&gt;# Cleaning up&lt;/span&gt;
yum clean all
&lt;span class="c"&gt;# Removes temporary files and cached data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  System Services and Systemd
&lt;/h2&gt;

&lt;p&gt;Systemd is like a master control panel for your system services. Here's how to manage services:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Starting a service (like turning on an appliance)&lt;/span&gt;
systemctl start httpd

&lt;span class="c"&gt;# Checking service status&lt;/span&gt;
systemctl status httpd
&lt;span class="c"&gt;# Shows if the service is running and recent log entries&lt;/span&gt;

&lt;span class="c"&gt;# Enabling service to start at boot&lt;/span&gt;
systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;httpd
&lt;span class="c"&gt;# Like setting an appliance to turn on automatically&lt;/span&gt;

&lt;span class="c"&gt;# Restarting a service&lt;/span&gt;
systemctl restart httpd

&lt;span class="c"&gt;# Viewing service logs&lt;/span&gt;
journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; httpd
&lt;span class="c"&gt;# Shows detailed logs for the service&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Networking Configuration
&lt;/h2&gt;

&lt;p&gt;Understanding networking in Linux is like understanding how mail gets delivered. Let's break it down:&lt;/p&gt;

&lt;h3&gt;
  
  
  Basic Network Configuration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Viewing network interfaces&lt;/span&gt;
ip addr show
&lt;span class="c"&gt;# Shows all network interfaces and their IP addresses&lt;/span&gt;

&lt;span class="c"&gt;# Configuring a network interface&lt;/span&gt;
nmcli con mod eth0 &lt;span class="se"&gt;\&lt;/span&gt;
  ipv4.addresses &lt;span class="s2"&gt;"192.168.1.100/24"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  ipv4.gateway &lt;span class="s2"&gt;"192.168.1.1"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  ipv4.dns &lt;span class="s2"&gt;"8.8.8.8"&lt;/span&gt;
&lt;span class="c"&gt;# Like setting up a new mailing address and route&lt;/span&gt;

&lt;span class="c"&gt;# Testing network connectivity&lt;/span&gt;
ping &lt;span class="nt"&gt;-c&lt;/span&gt; 4 google.com
&lt;span class="c"&gt;# Sends test packets to check connection&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Understanding IP and Netmask
&lt;/h3&gt;

&lt;p&gt;An IP address is like a street address, and a netmask defines the neighborhood:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Example IP configuration&lt;/span&gt;
ip addr add 192.168.1.100/24 dev eth0
&lt;span class="c"&gt;# /24 means the first 24 bits define the network (like the street)&lt;/span&gt;
&lt;span class="c"&gt;# The remaining 8 bits are for individual addresses (like house numbers)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Security and Permissions
&lt;/h2&gt;

&lt;p&gt;Security in Linux is like having multiple layers of protection in a building:&lt;/p&gt;

&lt;h3&gt;
  
  
  Basic Security Configuration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Setting up a basic firewall&lt;/span&gt;
firewall-cmd &lt;span class="nt"&gt;--permanent&lt;/span&gt; &lt;span class="nt"&gt;--add-service&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http
firewall-cmd &lt;span class="nt"&gt;--permanent&lt;/span&gt; &lt;span class="nt"&gt;--add-service&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https
firewall-cmd &lt;span class="nt"&gt;--reload&lt;/span&gt;
&lt;span class="c"&gt;# Like setting up security checkpoints&lt;/span&gt;

&lt;span class="c"&gt;# Checking for open ports&lt;/span&gt;
ss &lt;span class="nt"&gt;-tuln&lt;/span&gt;
&lt;span class="c"&gt;# Shows which ports are listening for connections&lt;/span&gt;

&lt;span class="c"&gt;# Setting up SELinux (Security-Enhanced Linux)&lt;/span&gt;
setenforce 1
&lt;span class="c"&gt;# Enables strict security policies&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  System Performance Monitoring
&lt;/h2&gt;

&lt;p&gt;Monitoring your system is like keeping track of a car's dashboard indicators:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Real-time system monitoring&lt;/span&gt;
top
&lt;span class="c"&gt;# Shows CPU, memory, and process information&lt;/span&gt;

&lt;span class="c"&gt;# Disk usage monitoring&lt;/span&gt;
&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt;
&lt;span class="c"&gt;# Shows disk space usage in human-readable format&lt;/span&gt;

&lt;span class="c"&gt;# Memory usage&lt;/span&gt;
free &lt;span class="nt"&gt;-m&lt;/span&gt;
&lt;span class="c"&gt;# Shows memory usage in megabytes&lt;/span&gt;

&lt;span class="c"&gt;# Creating a monitoring script&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;' &amp;gt; /usr/local/bin/monitor.sh
#!/bin/bash
while true; do
    echo "=== System Status ==="
    date
    echo "CPU Usage:"
    top -bn1 | grep "Cpu(s)"
    echo "Memory Usage:"
    free -m
    echo "Disk Usage:"
    df -h /
    sleep 60
done
&lt;/span&gt;&lt;span class="no"&gt;EOF
&lt;/span&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x /usr/local/bin/monitor.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Storage Management
&lt;/h2&gt;

&lt;p&gt;Managing storage in Linux is like organizing a warehouse:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Creating a new partition&lt;/span&gt;
fdisk /dev/sdb
&lt;span class="c"&gt;# Interactive tool for partition management&lt;/span&gt;

&lt;span class="c"&gt;# Creating a filesystem&lt;/span&gt;
mkfs.xfs /dev/sdb1
&lt;span class="c"&gt;# Like preparing a storage area for use&lt;/span&gt;

&lt;span class="c"&gt;# Mounting storage&lt;/span&gt;
mount /dev/sdb1 /data
&lt;span class="c"&gt;# Making the storage accessible&lt;/span&gt;

&lt;span class="c"&gt;# Automatic mounting (in /etc/fstab)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"/dev/sdb1 /data xfs defaults 0 0"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; /etc/fstab
&lt;span class="c"&gt;# Ensures storage is mounted at boot&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Backup and Restore
&lt;/h2&gt;

&lt;p&gt;Implementing a reliable backup system is crucial. Here's a comprehensive backup script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Configuration&lt;/span&gt;
&lt;span class="nv"&gt;BACKUP_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/backup"&lt;/span&gt;
&lt;span class="nv"&gt;SOURCE_DIRS&lt;/span&gt;&lt;span class="o"&gt;=(&lt;/span&gt;&lt;span class="s2"&gt;"/etc"&lt;/span&gt; &lt;span class="s2"&gt;"/home"&lt;/span&gt; &lt;span class="s2"&gt;"/var/www"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;DATE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%Y%m%d&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;RETENTION_DAYS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;30

&lt;span class="c"&gt;# Create backup directory&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$BACKUP_DIR&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Backup function&lt;/span&gt;
backup_directory&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;source_dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;backup_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;basename&lt;/span&gt; &lt;span class="nv"&gt;$source_dir&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;_&lt;/span&gt;&lt;span class="nv"&gt;$DATE&lt;/span&gt;&lt;span class="s2"&gt;.tar.gz"&lt;/span&gt;

    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Backing up &lt;/span&gt;&lt;span class="nv"&gt;$source_dir&lt;/span&gt;&lt;span class="s2"&gt;..."&lt;/span&gt;
    &lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-czf&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$BACKUP_DIR&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;$backup_name&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$source_dir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$?&lt;/span&gt; &lt;span class="nt"&gt;-eq&lt;/span&gt; 0 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
        &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Backup of &lt;/span&gt;&lt;span class="nv"&gt;$source_dir&lt;/span&gt;&lt;span class="s2"&gt; completed successfully"&lt;/span&gt;
    &lt;span class="k"&gt;else
        &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Backup of &lt;/span&gt;&lt;span class="nv"&gt;$source_dir&lt;/span&gt;&lt;span class="s2"&gt; failed"&lt;/span&gt;
    &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# Perform backups&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="nb"&gt;dir &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SOURCE_DIRS&lt;/span&gt;&lt;span class="p"&gt;[@]&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
    &lt;/span&gt;backup_directory &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;

&lt;span class="c"&gt;# Clean old backups&lt;/span&gt;
find &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$BACKUP_DIR&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-mtime&lt;/span&gt; +&lt;span class="nv"&gt;$RETENTION_DAYS&lt;/span&gt; &lt;span class="nt"&gt;-delete&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Backup process completed"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Day 15/90: Python Basics for DevOps Engineers 🐍 #90DaysOfDevOps</title>
      <dc:creator>Kanav Gathe</dc:creator>
      <pubDate>Wed, 23 Oct 2024 20:48:22 +0000</pubDate>
      <link>https://dev.to/kanav_gathe/day-1590-python-basics-for-devops-engineers-90daysofdevops-44p1</link>
      <guid>https://dev.to/kanav_gathe/day-1590-python-basics-for-devops-engineers-90daysofdevops-44p1</guid>
      <description>&lt;h1&gt;
  
  
  Day 15: Python Basics for DevOps Engineers 🚀
&lt;/h1&gt;

&lt;p&gt;Hello DevOps enthusiasts! 👋 Welcome to Day 15 of the #90DaysOfDevOps challenge. Today, we're exploring Python fundamentals essential for DevOps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Python Installation 🔧
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Ubuntu Installation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install Python&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;python3

&lt;span class="c"&gt;# Verify installation&lt;/span&gt;
python3 &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Python Data Types 📝
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Numbers
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Integer
&lt;/span&gt;&lt;span class="n"&gt;server_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;

&lt;span class="c1"&gt;# Float
&lt;/span&gt;&lt;span class="n"&gt;cpu_usage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;85.5&lt;/span&gt;

&lt;span class="c1"&gt;# Complex
&lt;/span&gt;&lt;span class="n"&gt;complex_number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;2j&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Strings
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Single line string
&lt;/span&gt;&lt;span class="n"&gt;hostname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;web-server-01&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

&lt;span class="c1"&gt;# Multi-line string
&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'''&lt;/span&gt;&lt;span class="s"&gt;This is a
multi-line description
of our server&lt;/span&gt;&lt;span class="sh"&gt;'''&lt;/span&gt;

&lt;span class="c1"&gt;# String operations
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hostname&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;upper&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hostname&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;-&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Lists (Mutable)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Server list
&lt;/span&gt;&lt;span class="n"&gt;servers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;web-01&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;app-02&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;db-01&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# List operations
&lt;/span&gt;&lt;span class="n"&gt;servers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cache-01&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;servers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;db-01&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;servers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;  &lt;span class="c1"&gt;# First server
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Tuples (Immutable)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Version info
&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Ubuntu&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;LTS&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;os_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;version_num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;release_type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Dictionaries
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Server details
&lt;/span&gt;&lt;span class="n"&gt;server_info&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;hostname&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;web-01&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;192.168.1.100&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;running&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ram_gb&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Access data
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;server_info&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;hostname&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;server_info&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6. Sets
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Unique ports
&lt;/span&gt;&lt;span class="n"&gt;active_ports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;443&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3306&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;active_ports&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  7. Boolean
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;is_running&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;span class="n"&gt;has_backup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  DevOps Example 🛠️
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;check_server_status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;servers&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Monitor server status&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;servers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Simulate status check
&lt;/span&gt;        &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;running&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;stopped&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;

&lt;span class="c1"&gt;# Usage
&lt;/span&gt;&lt;span class="n"&gt;servers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;web-01&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;app-02&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;db-01&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;cache-02&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;server_status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;check_server_status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;servers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;state&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;server_status&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Server &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; is &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Takeaways 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Python is essential for DevOps automation&lt;/li&gt;
&lt;li&gt;Multiple data types serve different purposes&lt;/li&gt;
&lt;li&gt;Lists and dictionaries are commonly used in DevOps&lt;/li&gt;
&lt;li&gt;Python's simplicity makes automation easier&lt;/li&gt;
&lt;li&gt;Understanding data types is fundamental&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical Uses in DevOps 🔨
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Script automation&lt;/li&gt;
&lt;li&gt;Log parsing&lt;/li&gt;
&lt;li&gt;API interactions&lt;/li&gt;
&lt;li&gt;Configuration management&lt;/li&gt;
&lt;li&gt;Monitoring and alerts&lt;/li&gt;
&lt;li&gt;Data processing&lt;/li&gt;
&lt;li&gt;Infrastructure automation&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Python #DevOps #Automation #Programming #90DaysOfDevOps
&lt;/h1&gt;




&lt;p&gt;&lt;em&gt;This is Day 15 of my #90DaysOfDevOps journey. Keep coding and automating!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>devops</category>
      <category>automation</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Day 14/90: Essential Linux &amp; Git-GitHub Cheat Sheet 📝 #90DaysOfDevOps</title>
      <dc:creator>Kanav Gathe</dc:creator>
      <pubDate>Wed, 23 Oct 2024 20:47:26 +0000</pubDate>
      <link>https://dev.to/kanav_gathe/day-1490-essential-linux-git-github-cheat-sheet-90daysofdevops-3co6</link>
      <guid>https://dev.to/kanav_gathe/day-1490-essential-linux-git-github-cheat-sheet-90daysofdevops-3co6</guid>
      <description>&lt;h1&gt;
  
  
  Day 14: Linux &amp;amp; Git-GitHub Cheat Sheet 🚀
&lt;/h1&gt;

&lt;p&gt;Hello DevOps enthusiasts! 👋 Welcome to Day 14 of the #90DaysOfDevOps challenge. Today, I'm sharing a comprehensive cheat sheet of essential commands we've learned so far.&lt;/p&gt;

&lt;h2&gt;
  
  
  Linux Commands 🐧
&lt;/h2&gt;

&lt;h3&gt;
  
  
  File Operations
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Navigation&lt;/span&gt;
&lt;span class="nb"&gt;pwd&lt;/span&gt;                     &lt;span class="c"&gt;# Current directory&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt;                      &lt;span class="c"&gt;# List files&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-la&lt;/span&gt;                  &lt;span class="c"&gt;# List detailed including hidden&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;directory            &lt;span class="c"&gt;# Change directory&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ..                   &lt;span class="c"&gt;# Go up one level&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~                    &lt;span class="c"&gt;# Go to home&lt;/span&gt;

&lt;span class="c"&gt;# File Management&lt;/span&gt;
&lt;span class="nb"&gt;touch &lt;/span&gt;file.txt          &lt;span class="c"&gt;# Create empty file&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;directory         &lt;span class="c"&gt;# Create directory&lt;/span&gt;
&lt;span class="nb"&gt;cp source &lt;/span&gt;dest          &lt;span class="c"&gt;# Copy&lt;/span&gt;
&lt;span class="nb"&gt;mv source &lt;/span&gt;dest          &lt;span class="c"&gt;# Move/rename&lt;/span&gt;
&lt;span class="nb"&gt;rm &lt;/span&gt;file                 &lt;span class="c"&gt;# Remove file&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; directory        &lt;span class="c"&gt;# Remove directory&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  File Content
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Viewing Content&lt;/span&gt;
&lt;span class="nb"&gt;cat &lt;/span&gt;file                &lt;span class="c"&gt;# Display file content&lt;/span&gt;
&lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; N file          &lt;span class="c"&gt;# Show first N lines&lt;/span&gt;
&lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; N file          &lt;span class="c"&gt;# Show last N lines&lt;/span&gt;
&lt;span class="nb"&gt;grep &lt;/span&gt;pattern file       &lt;span class="c"&gt;# Search in file&lt;/span&gt;
&lt;span class="nb"&gt;wc &lt;/span&gt;file                &lt;span class="c"&gt;# Line/word/char count&lt;/span&gt;

&lt;span class="c"&gt;# Editing&lt;/span&gt;
nano file              &lt;span class="c"&gt;# Text editor&lt;/span&gt;
vi/vim file            &lt;span class="c"&gt;# Advanced editor&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Permissions
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Changing Permissions&lt;/span&gt;
&lt;span class="nb"&gt;chmod &lt;/span&gt;755 file         &lt;span class="c"&gt;# Set permissions&lt;/span&gt;
&lt;span class="nb"&gt;chmod &lt;/span&gt;u+x file         &lt;span class="c"&gt;# Add execute permission&lt;/span&gt;
&lt;span class="nb"&gt;chown &lt;/span&gt;user:group file  &lt;span class="c"&gt;# Change ownership&lt;/span&gt;

&lt;span class="c"&gt;# ACL&lt;/span&gt;
getfacl file          &lt;span class="c"&gt;# Get ACL permissions&lt;/span&gt;
setfacl &lt;span class="nt"&gt;-m&lt;/span&gt; u:user:rw  &lt;span class="c"&gt;# Set ACL permissions&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  System
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Process Management&lt;/span&gt;
ps aux                &lt;span class="c"&gt;# List processes&lt;/span&gt;
top                   &lt;span class="c"&gt;# System monitor&lt;/span&gt;
&lt;span class="nb"&gt;kill &lt;/span&gt;PID              &lt;span class="c"&gt;# Kill process&lt;/span&gt;

&lt;span class="c"&gt;# Package Management&lt;/span&gt;
apt update            &lt;span class="c"&gt;# Update package list&lt;/span&gt;
apt &lt;span class="nb"&gt;install &lt;/span&gt;pkg       &lt;span class="c"&gt;# Install package&lt;/span&gt;
systemctl status svc  &lt;span class="c"&gt;# Check service status&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Git Commands 🌿
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Basic Operations
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Repository Setup&lt;/span&gt;
git init              &lt;span class="c"&gt;# Initialize repository&lt;/span&gt;
git clone URL         &lt;span class="c"&gt;# Clone repository&lt;/span&gt;
git remote add origin URL  &lt;span class="c"&gt;# Add remote&lt;/span&gt;

&lt;span class="c"&gt;# Daily Commands&lt;/span&gt;
git status            &lt;span class="c"&gt;# Check status&lt;/span&gt;
git add file          &lt;span class="c"&gt;# Stage changes&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"msg"&lt;/span&gt;   &lt;span class="c"&gt;# Commit changes&lt;/span&gt;
git push origin branch &lt;span class="c"&gt;# Push changes&lt;/span&gt;
git pull              &lt;span class="c"&gt;# Update local repo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Branching
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Branch Management&lt;/span&gt;
git branch            &lt;span class="c"&gt;# List branches&lt;/span&gt;
git branch name       &lt;span class="c"&gt;# Create branch&lt;/span&gt;
git checkout branch   &lt;span class="c"&gt;# Switch branch&lt;/span&gt;
git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; name  &lt;span class="c"&gt;# Create &amp;amp; switch&lt;/span&gt;
git merge branch      &lt;span class="c"&gt;# Merge branch&lt;/span&gt;

&lt;span class="c"&gt;# Advanced Operations&lt;/span&gt;
git rebase main       &lt;span class="c"&gt;# Rebase to main&lt;/span&gt;
git cherry-pick commit &lt;span class="c"&gt;# Pick specific commit&lt;/span&gt;
git stash             &lt;span class="c"&gt;# Stash changes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  History &amp;amp; Changes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# History&lt;/span&gt;
git log               &lt;span class="c"&gt;# View history&lt;/span&gt;
git log &lt;span class="nt"&gt;--oneline&lt;/span&gt;     &lt;span class="c"&gt;# Compact history&lt;/span&gt;
git blame file        &lt;span class="c"&gt;# Show who changed what&lt;/span&gt;

&lt;span class="c"&gt;# Undoing Changes&lt;/span&gt;
git reset HEAD~1      &lt;span class="c"&gt;# Undo last commit&lt;/span&gt;
git revert commit     &lt;span class="c"&gt;# Revert commit&lt;/span&gt;
git checkout &lt;span class="nt"&gt;--&lt;/span&gt; file  &lt;span class="c"&gt;# Discard changes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Quick Reference Tips 💡
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Use tab completion&lt;/li&gt;
&lt;li&gt;Check command history with &lt;code&gt;history&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;man&lt;/code&gt; command for help&lt;/li&gt;
&lt;li&gt;Always verify before destructive operations&lt;/li&gt;
&lt;li&gt;Keep repositories clean&lt;/li&gt;
&lt;li&gt;Make meaningful commit messages&lt;/li&gt;
&lt;li&gt;Branch names should be descriptive&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Key Takeaways 🎯
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Keep commands handy for quick reference&lt;/li&gt;
&lt;li&gt;Practice commands regularly&lt;/li&gt;
&lt;li&gt;Understand the purpose of each command&lt;/li&gt;
&lt;li&gt;Know when to use which command&lt;/li&gt;
&lt;li&gt;Backup before major operations&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Linux #Git #DevOps #CheatSheet #90DaysOfDevOps
&lt;/h1&gt;




&lt;p&gt;&lt;em&gt;This is Day 14 of my #90DaysOfDevOps journey. Keep this cheat sheet handy!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>git</category>
      <category>devops</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Day 13/90: Advanced Git &amp; GitHub for DevOps Engineers 🌲 #90DaysOfDevOps</title>
      <dc:creator>Kanav Gathe</dc:creator>
      <pubDate>Wed, 23 Oct 2024 20:41:59 +0000</pubDate>
      <link>https://dev.to/kanav_gathe/day-1390-advanced-git-github-for-devops-engineers-90daysofdevops-1h00</link>
      <guid>https://dev.to/kanav_gathe/day-1390-advanced-git-github-for-devops-engineers-90daysofdevops-1h00</guid>
      <description>&lt;h1&gt;
  
  
  Day 13: Advanced Git Operations 🚀
&lt;/h1&gt;

&lt;p&gt;Hello DevOps enthusiasts! 👋 Welcome to Day 13 of the #90DaysOfDevOps challenge. Today, we're exploring advanced Git operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Task Solutions 💻
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Task 1: Feature Development with Branches
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Create Branch and Add Feature
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create and switch to new branch&lt;/span&gt;
git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; dev

&lt;span class="c"&gt;# Add initial content&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"This is the first feature of our application"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Devops/Git/version01.txt
git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Added new feature"&lt;/span&gt;

&lt;span class="c"&gt;# Push to GitHub&lt;/span&gt;
git push origin dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2. Add Multiple Features
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Feature 2&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"This is the bug fix in development branch"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; Devops/Git/version01.txt
git commit &lt;span class="nt"&gt;-am&lt;/span&gt; &lt;span class="s2"&gt;"Added feature2 in development branch"&lt;/span&gt;

&lt;span class="c"&gt;# Feature 3&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"This is gadbad code"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; Devops/Git/version01.txt
git commit &lt;span class="nt"&gt;-am&lt;/span&gt; &lt;span class="s2"&gt;"Added feature3 in development branch"&lt;/span&gt;

&lt;span class="c"&gt;# Feature 4&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"This feature will gadbad everything from now"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; Devops/Git/version01.txt
git commit &lt;span class="nt"&gt;-am&lt;/span&gt; &lt;span class="s2"&gt;"Added feature4 in development branch"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  3. Revert Changes
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Revert to previous state&lt;/span&gt;
git revert HEAD~2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Task 2: Branch Operations
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Create Multiple Branches
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create branches&lt;/span&gt;
git branch feature1
git branch feature2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2. Merge Changes
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Switch to main and merge&lt;/span&gt;
git checkout main
git merge dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  3. Rebase Example
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Rebase feature branch&lt;/span&gt;
git checkout feature1
git rebase main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Common Git Operations 🔧
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Reset vs Revert
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Reset (changes history)&lt;/span&gt;
git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; HEAD~1

&lt;span class="c"&gt;# Revert (creates new commit)&lt;/span&gt;
git revert HEAD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Merge vs Rebase
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Merge (creates merge commit)&lt;/span&gt;
git checkout main
git merge feature

&lt;span class="c"&gt;# Rebase (linear history)&lt;/span&gt;
git checkout feature
git rebase main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Takeaways 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Branches enable parallel development&lt;/li&gt;
&lt;li&gt;Revert safely undoes changes&lt;/li&gt;
&lt;li&gt;Reset modifies history&lt;/li&gt;
&lt;li&gt;Merge preserves complete history&lt;/li&gt;
&lt;li&gt;Rebase creates linear history&lt;/li&gt;
&lt;li&gt;Choose right operation for situation&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Git #DevOps #GitHub #BranchingStrategy #90DaysOfDevOps
&lt;/h1&gt;




&lt;p&gt;&lt;em&gt;This is Day 13 of my #90DaysOfDevOps journey. Keep branching and merging!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>devops</category>
      <category>github</category>
      <category>branching</category>
    </item>
    <item>
      <title>Day 12/90: Git &amp; GitHub Fundamentals for DevOps Engineers 🌿 #90DaysOfDevOps</title>
      <dc:creator>Kanav Gathe</dc:creator>
      <pubDate>Wed, 23 Oct 2024 20:40:29 +0000</pubDate>
      <link>https://dev.to/kanav_gathe/day-1290-git-github-fundamentals-for-devops-engineers-90daysofdevops-19ha</link>
      <guid>https://dev.to/kanav_gathe/day-1290-git-github-fundamentals-for-devops-engineers-90daysofdevops-19ha</guid>
      <description>&lt;h1&gt;
  
  
  Day 12: Git &amp;amp; GitHub for DevOps Engineers 🚀
&lt;/h1&gt;

&lt;p&gt;Hello DevOps enthusiasts! 👋 Welcome to Day 12 of the #90DaysOfDevOps challenge. Today, we're diving into Git and GitHub fundamentals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Concepts 📝
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is Git?
&lt;/h3&gt;

&lt;p&gt;Git is a distributed version control system that helps track changes in source code during software development. It enables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Version tracking&lt;/li&gt;
&lt;li&gt;Collaborative development&lt;/li&gt;
&lt;li&gt;Code history maintenance&lt;/li&gt;
&lt;li&gt;Branch management&lt;/li&gt;
&lt;li&gt;Conflict resolution&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Main Branch vs Master Branch
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Both serve as the default branch&lt;/li&gt;
&lt;li&gt;Main is the new standard (more inclusive)&lt;/li&gt;
&lt;li&gt;Functionally identical&lt;/li&gt;
&lt;li&gt;Can configure default when initializing repository&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Git vs GitHub
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Git:
&lt;span class="p"&gt;-&lt;/span&gt; Version control system
&lt;span class="p"&gt;-&lt;/span&gt; Runs locally
&lt;span class="p"&gt;-&lt;/span&gt; Manages source code
&lt;span class="p"&gt;-&lt;/span&gt; Command-line tool

GitHub:
&lt;span class="p"&gt;-&lt;/span&gt; Web-based hosting service
&lt;span class="p"&gt;-&lt;/span&gt; Cloud platform
&lt;span class="p"&gt;-&lt;/span&gt; Provides collaboration features
&lt;span class="p"&gt;-&lt;/span&gt; Has web interface
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Task Solutions 💻
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Git Configuration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Set username and email&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Your Name"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"your.email@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Repository Setup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create and initialize repository&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;DevOps
&lt;span class="nb"&gt;cd &lt;/span&gt;DevOps
git init

&lt;span class="c"&gt;# Create and add content&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;Git
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Initial content"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Git/Day-02.txt

&lt;span class="c"&gt;# Stage and commit&lt;/span&gt;
git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Initial commit"&lt;/span&gt;

&lt;span class="c"&gt;# Connect to GitHub&lt;/span&gt;
git remote add origin https://github.com/username/DevOps.git
git push &lt;span class="nt"&gt;-u&lt;/span&gt; origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Local vs Remote Repository 🔄
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Local Repository:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Initialize local&lt;/span&gt;
git init
git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"message"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Remote Repository:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Connect and push&lt;/span&gt;
git remote add origin &amp;lt;url&amp;gt;
git push &lt;span class="nt"&gt;-u&lt;/span&gt; origin main

&lt;span class="c"&gt;# Verify remote&lt;/span&gt;
git remote &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Takeaways 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Git tracks code changes efficiently&lt;/li&gt;
&lt;li&gt;Local and remote repos serve different purposes&lt;/li&gt;
&lt;li&gt;Proper configuration is essential&lt;/li&gt;
&lt;li&gt;Regular commits maintain clean history&lt;/li&gt;
&lt;li&gt;Remote connection enables collaboration&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Git #DevOps #GitHub #VersionControl #90DaysOfDevOps
&lt;/h1&gt;




&lt;p&gt;&lt;em&gt;This is Day 12 of my #90DaysOfDevOps journey. Keep versioning and collaborating!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>devops</category>
      <category>github</category>
    </item>
    <item>
      <title>Day 11/90: Error Handling in Shell Scripts 🛡️ #90DaysOfDevOps</title>
      <dc:creator>Kanav Gathe</dc:creator>
      <pubDate>Wed, 23 Oct 2024 20:38:06 +0000</pubDate>
      <link>https://dev.to/kanav_gathe/day-1190-error-handling-in-shell-scripts-90daysofdevops-1i5b</link>
      <guid>https://dev.to/kanav_gathe/day-1190-error-handling-in-shell-scripts-90daysofdevops-1i5b</guid>
      <description>&lt;h1&gt;
  
  
  Day 11: Error Handling in Shell Scripts 🚀
&lt;/h1&gt;

&lt;p&gt;Hello DevOps enthusiasts! 👋 Welcome to Day 11 of the #90DaysOfDevOps challenge. Today, we're diving into error handling in shell scripts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Task Solutions 💻
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Exit Status Checking
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Create directory and check status&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;testdir
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$?&lt;/span&gt; &lt;span class="nt"&gt;-ne&lt;/span&gt; 0 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Failed to create directory"&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi
&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Directory created successfully"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. If Statement Error Checking
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Multiple commands with error checking&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; testdir&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    if &lt;/span&gt;&lt;span class="nb"&gt;touch &lt;/span&gt;testdir/testfile&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
        &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"File created successfully"&lt;/span&gt;
    &lt;span class="k"&gt;else
        &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Failed to create file"&lt;/span&gt;
        &lt;span class="nb"&gt;exit &lt;/span&gt;1
    &lt;span class="k"&gt;fi
else
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Failed to create directory"&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Using Trap for Cleanup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Create temporary file&lt;/span&gt;
&lt;span class="nv"&gt;temp_file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;mktemp&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Set trap for cleanup&lt;/span&gt;
&lt;span class="nb"&gt;trap&lt;/span&gt; &lt;span class="s1"&gt;'rm -f "$temp_file"'&lt;/span&gt; EXIT

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Working with temporary file"&lt;/span&gt;
&lt;span class="c"&gt;# Script exits and temp file is removed automatically&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Error Redirection
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Redirect errors to file&lt;/span&gt;
&lt;span class="nb"&gt;cat &lt;/span&gt;nonexistent_file.txt 2&amp;gt; error.log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Custom Error Messages
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

process_file&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
        &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: File &lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt; does not exist"&lt;/span&gt;
        &lt;span class="nb"&gt;exit &lt;/span&gt;1
    &lt;span class="k"&gt;fi
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Processing file &lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Takeaways 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Exit status checks prevent cascading failures&lt;/li&gt;
&lt;li&gt;Traps ensure cleanup on script exit&lt;/li&gt;
&lt;li&gt;Error redirection helps in logging&lt;/li&gt;
&lt;li&gt;Custom messages improve debugging&lt;/li&gt;
&lt;li&gt;Proper error handling is crucial for reliability&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Bash #DevOps #ErrorHandling #Linux #90DaysOfDevOps
&lt;/h1&gt;




&lt;p&gt;&lt;em&gt;This is Day 11 of my #90DaysOfDevOps journey. Keep handling those errors!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bash</category>
      <category>devops</category>
      <category>linux</category>
      <category>scripting</category>
    </item>
    <item>
      <title>Day 10/90: Log Analyzer and Report Generator 📊 #90DaysOfDevOps</title>
      <dc:creator>Kanav Gathe</dc:creator>
      <pubDate>Wed, 23 Oct 2024 20:37:40 +0000</pubDate>
      <link>https://dev.to/kanav_gathe/day-1090-log-analyzer-and-report-generator-90daysofdevops-2d4d</link>
      <guid>https://dev.to/kanav_gathe/day-1090-log-analyzer-and-report-generator-90daysofdevops-2d4d</guid>
      <description>&lt;h1&gt;
  
  
  Day 10: Log Analyzer and Report Generator 🚀
&lt;/h1&gt;

&lt;p&gt;Hello DevOps enthusiasts! 👋 Welcome to Day 10 of the #90DaysOfDevOps challenge. Today, we're creating a log analysis tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Log Analyzer Script 💻
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Check arguments&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$# &lt;/span&gt;&lt;span class="nt"&gt;-ne&lt;/span&gt; 1 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Usage: &lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="s2"&gt; &amp;lt;log_file&amp;gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nv"&gt;log_file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nv"&gt;report_file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"report_&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%Y%m%d_%H%M%S&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;.txt"&lt;/span&gt;

&lt;span class="c"&gt;# Check if log file exists&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$log_file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: Log file not found"&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Generate report&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Log Analysis Report"&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"==================="&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Date: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Log File: &lt;/span&gt;&lt;span class="nv"&gt;$log_file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Total Lines: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; &amp;lt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$log_file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error Count: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"ERROR"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$log_file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;Top 5 Errors:"&lt;/span&gt;
    &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"ERROR"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$log_file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;sort&lt;/span&gt; | &lt;span class="nb"&gt;uniq&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; | &lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-nr&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-5&lt;/span&gt;

    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;Critical Events:"&lt;/span&gt;
    &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"CRITICAL"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$log_file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$report_file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Archive log&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; processed_logs
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$log_file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"processed_logs/&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;basename&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$log_file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%Y%m%d&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Report generated: &lt;/span&gt;&lt;span class="nv"&gt;$report_file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Script Features 🔧
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Analysis Capabilities&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Error counting&lt;/li&gt;
&lt;li&gt;Critical event detection&lt;/li&gt;
&lt;li&gt;Top error identification&lt;/li&gt;
&lt;li&gt;Line counting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Report Generation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Timestamped reports&lt;/li&gt;
&lt;li&gt;Organized sections&lt;/li&gt;
&lt;li&gt;Statistical analysis&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Log Management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatic archiving&lt;/li&gt;
&lt;li&gt;Date-based organization&lt;/li&gt;
&lt;li&gt;Original file preservation&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Key Takeaways 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Log analysis is crucial for troubleshooting&lt;/li&gt;
&lt;li&gt;Pattern matching helps find issues&lt;/li&gt;
&lt;li&gt;Reports should be well-organized&lt;/li&gt;
&lt;li&gt;Archive management is important&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Bash #DevOps #Monitoring #Linux #90DaysOfDevOps
&lt;/h1&gt;




&lt;p&gt;&lt;em&gt;This is Day 10 of my #90DaysOfDevOps journey. Keep analyzing and monitoring!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bash</category>
      <category>devops</category>
      <category>linux</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Day 9/90: Directory Backup with Rotation in Shell Scripting 🔄 #90DaysOfDevOps</title>
      <dc:creator>Kanav Gathe</dc:creator>
      <pubDate>Wed, 23 Oct 2024 20:37:31 +0000</pubDate>
      <link>https://dev.to/kanav_gathe/day-990-directory-backup-with-rotation-in-shell-scripting-90daysofdevops-4no7</link>
      <guid>https://dev.to/kanav_gathe/day-990-directory-backup-with-rotation-in-shell-scripting-90daysofdevops-4no7</guid>
      <description>&lt;h1&gt;
  
  
  Day 9: Directory Backup with Rotation 🚀
&lt;/h1&gt;

&lt;p&gt;Hello DevOps enthusiasts! 👋 Welcome to Day 9 of the #90DaysOfDevOps challenge. Today, we're building a backup system with rotation functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Backup Script Solution 💻
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Check if directory argument is provided&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$# &lt;/span&gt;&lt;span class="nt"&gt;-ne&lt;/span&gt; 1 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Usage: &lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="s2"&gt; &amp;lt;directory_path&amp;gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Variables&lt;/span&gt;
&lt;span class="nv"&gt;source_dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nv"&gt;timestamp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%Y-%m-%d_%H-%M-%S&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;backup_dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;source_dir&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/backup_&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;timestamp&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Check if source directory exists&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$source_dir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Error: Source directory does not exist"&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Create backup&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Creating backup in &lt;/span&gt;&lt;span class="nv"&gt;$backup_dir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$backup_dir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;source_dir&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/"&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$backup_dir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 2&amp;gt;/dev/null

&lt;span class="c"&gt;# Implement rotation (keep only last 3 backups)&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$source_dir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; backup_&lt;span class="k"&gt;*&lt;/span&gt; 2&amp;gt;/dev/null | &lt;span class="nb"&gt;sort&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="nt"&gt;-3&lt;/span&gt; | xargs &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; 2&amp;gt;/dev/null

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Backup completed. Current backups:"&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; backup_&lt;span class="k"&gt;*&lt;/span&gt; 2&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Script Features 🔧
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Input Validation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Checks for correct usage&lt;/li&gt;
&lt;li&gt;Verifies directory existence&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Backup Creation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Timestamped backups&lt;/li&gt;
&lt;li&gt;Complete directory copying&lt;/li&gt;
&lt;li&gt;Error handling&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Rotation Mechanism&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maintains last 3 backups&lt;/li&gt;
&lt;li&gt;Automatically removes old backups&lt;/li&gt;
&lt;li&gt;Sorted by timestamp&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Status Reports&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clear error messages&lt;/li&gt;
&lt;li&gt;Completion confirmation&lt;/li&gt;
&lt;li&gt;Lists current backups&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Usage Examples 📝
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create backup&lt;/span&gt;
./backup_with_rotation.sh /home/user/documents

&lt;span class="c"&gt;# Expected Output:&lt;/span&gt;
&lt;span class="c"&gt;# Creating backup in /home/user/documents/backup_2024-10-24_14-30-00&lt;/span&gt;
&lt;span class="c"&gt;# Backup completed. Current backups:&lt;/span&gt;
&lt;span class="c"&gt;# backup_2024-10-24_12-00-00&lt;/span&gt;
&lt;span class="c"&gt;# backup_2024-10-24_13-00-00&lt;/span&gt;
&lt;span class="c"&gt;# backup_2024-10-24_14-30-00&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Takeaways 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Automated backups ensure data safety&lt;/li&gt;
&lt;li&gt;Rotation prevents disk space issues&lt;/li&gt;
&lt;li&gt;Timestamps enable version tracking&lt;/li&gt;
&lt;li&gt;Error handling is crucial&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Bash #DevOps #Automation #Linux #90DaysOfDevOps
&lt;/h1&gt;




&lt;p&gt;&lt;em&gt;This is Day 9 of my #90DaysOfDevOps journey. Keep backing up and rotating!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bash</category>
      <category>devops</category>
      <category>linux</category>
      <category>automation</category>
    </item>
    <item>
      <title>Day 8/90: Shell Scripting Challenge - The Basics 📝 #90DaysOfDevOps</title>
      <dc:creator>Kanav Gathe</dc:creator>
      <pubDate>Wed, 23 Oct 2024 20:35:18 +0000</pubDate>
      <link>https://dev.to/kanav_gathe/day-890-shell-scripting-challenge-the-basics-90daysofdevops-1324</link>
      <guid>https://dev.to/kanav_gathe/day-890-shell-scripting-challenge-the-basics-90daysofdevops-1324</guid>
      <description>&lt;h1&gt;
  
  
  Day 8: Shell Scripting Challenge - The Basics 🚀
&lt;/h1&gt;

&lt;p&gt;Hello DevOps enthusiasts! 👋 Welcome to Day 8 of the #90DaysOfDevOps challenge. Today, we're learning basic shell scripting concepts through practical examples.&lt;/p&gt;

&lt;h2&gt;
  
  
  Task Solutions 💻
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Comments in Shell Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# This is a shell script that demonstrates various basic concepts&lt;/span&gt;
&lt;span class="c"&gt;# Author: DevOps Engineer&lt;/span&gt;
&lt;span class="c"&gt;# Date: October 2024&lt;/span&gt;
&lt;span class="c"&gt;# Version: 1.0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Echo Command Usage
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Welcome to Shell Scripting!"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"This is Day 8 of #90DaysOfDevOps"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Variables Declaration
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Declaring variables&lt;/span&gt;
&lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"DevOps Engineer"&lt;/span&gt;
&lt;span class="nv"&gt;course&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Shell Scripting"&lt;/span&gt;
&lt;span class="nv"&gt;day&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;8
&lt;span class="nv"&gt;current_dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Using Variables
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Take two numbers as input&lt;/span&gt;
&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"Enter first number: "&lt;/span&gt; num1
&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"Enter second number: "&lt;/span&gt; num2

&lt;span class="c"&gt;# Calculate and show sum&lt;/span&gt;
&lt;span class="nb"&gt;sum&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;num1 &lt;span class="o"&gt;+&lt;/span&gt; num2&lt;span class="k"&gt;))&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"The sum of &lt;/span&gt;&lt;span class="nv"&gt;$num1&lt;/span&gt;&lt;span class="s2"&gt; and &lt;/span&gt;&lt;span class="nv"&gt;$num2&lt;/span&gt;&lt;span class="s2"&gt; is: &lt;/span&gt;&lt;span class="nv"&gt;$sum&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Built-in Variables
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Script Name: &lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Current User: &lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Home Directory: &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Present Working Directory: &lt;/span&gt;&lt;span class="nv"&gt;$PWD&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hostname: &lt;/span&gt;&lt;span class="nv"&gt;$HOSTNAME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6. Using Wildcards
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# List all shell scripts&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Shell Scripts in current directory:"&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;.sh

&lt;span class="c"&gt;# List all text files&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Text files in current directory:"&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Combined Script Example 🔧
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Comments explaining script purpose&lt;/span&gt;
&lt;span class="c"&gt;# This script demonstrates basic shell scripting concepts&lt;/span&gt;

&lt;span class="c"&gt;# Echo command&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Basic Shell Script Demo"&lt;/span&gt;

&lt;span class="c"&gt;# Variables&lt;/span&gt;
&lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"DevOps Engineer"&lt;/span&gt;
&lt;span class="nv"&gt;day&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;8

&lt;span class="c"&gt;# Using variables&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hello, I am a &lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"This is Day &lt;/span&gt;&lt;span class="nv"&gt;$day&lt;/span&gt;&lt;span class="s2"&gt; of #90DaysOfDevOps"&lt;/span&gt;

&lt;span class="c"&gt;# Built-in variables&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Running from: &lt;/span&gt;&lt;span class="nv"&gt;$PWD&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"By user: &lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Wildcards&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Script files:"&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Takeaways 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Comments make code readable and maintainable&lt;/li&gt;
&lt;li&gt;Echo commands display output&lt;/li&gt;
&lt;li&gt;Variables store and manage data&lt;/li&gt;
&lt;li&gt;Built-in variables provide system information&lt;/li&gt;
&lt;li&gt;Wildcards help in pattern matching&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Bash #DevOps #Linux #Scripting #90DaysOfDevOps
&lt;/h1&gt;




&lt;p&gt;&lt;em&gt;This is Day 8 of my #90DaysOfDevOps journey. Keep scripting and automating!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bash</category>
      <category>devops</category>
      <category>linux</category>
      <category>scripting</category>
    </item>
    <item>
      <title>Day 7/90: Package Manager and Systemctl in Linux 📦 #90DaysOfDevOps</title>
      <dc:creator>Kanav Gathe</dc:creator>
      <pubDate>Wed, 23 Oct 2024 20:33:57 +0000</pubDate>
      <link>https://dev.to/kanav_gathe/day-790-package-manager-and-systemctl-in-linux-90daysofdevops-3hn2</link>
      <guid>https://dev.to/kanav_gathe/day-790-package-manager-and-systemctl-in-linux-90daysofdevops-3hn2</guid>
      <description>&lt;h1&gt;
  
  
  Day 7: Package Manager and Systemctl 🚀
&lt;/h1&gt;

&lt;p&gt;Hello DevOps enthusiasts! 👋 Welcome to Day 7 of the #90DaysOfDevOps challenge. Today, we're exploring package management and service control using systemctl.&lt;/p&gt;

&lt;h2&gt;
  
  
  Task Solutions 💻
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Docker Installation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Ubuntu&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;docker.io

&lt;span class="c"&gt;# CentOS&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install &lt;/span&gt;docker

&lt;span class="c"&gt;# Verify installation&lt;/span&gt;
docker &lt;span class="nt"&gt;--version&lt;/span&gt;
systemctl status docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Jenkins Installation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Ubuntu&lt;/span&gt;
wget &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="nt"&gt;-O&lt;/span&gt; - https://pkg.jenkins.io/debian-stable/jenkins.io.key | &lt;span class="nb"&gt;sudo &lt;/span&gt;apt-key add -
&lt;span class="nb"&gt;sudo &lt;/span&gt;sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s1"&gt;'echo deb https://pkg.jenkins.io/debian-stable binary/ &amp;gt; /etc/apt/sources.list.d/jenkins.list'&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;jenkins

&lt;span class="c"&gt;# Verify installation&lt;/span&gt;
jenkins &lt;span class="nt"&gt;--version&lt;/span&gt;
systemctl status jenkins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Service Management
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check Docker status&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status docker

&lt;span class="c"&gt;# Stop Jenkins&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl stop jenkins

&lt;span class="c"&gt;# Enable services&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;docker
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl disable jenkins

&lt;span class="c"&gt;# Check logs&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; docker
&lt;span class="nb"&gt;sudo &lt;/span&gt;journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; jenkins
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Package Management Commands 🔧
&lt;/h2&gt;

&lt;h3&gt;
  
  
  APT (Ubuntu/Debian)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update          &lt;span class="c"&gt;# Update package list&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;pkg     &lt;span class="c"&gt;# Install package&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt remove pkg      &lt;span class="c"&gt;# Remove package&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade         &lt;span class="c"&gt;# Upgrade packages&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  YUM (CentOS/RHEL)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;yum update         &lt;span class="c"&gt;# Update package list&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install &lt;/span&gt;pkg    &lt;span class="c"&gt;# Install package&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum remove pkg     &lt;span class="c"&gt;# Remove package&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum upgrade        &lt;span class="c"&gt;# Upgrade packages&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Systemctl Commands 🛠️
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;systemctl start service    &lt;span class="c"&gt;# Start service&lt;/span&gt;
systemctl stop service     &lt;span class="c"&gt;# Stop service&lt;/span&gt;
systemctl restart service  &lt;span class="c"&gt;# Restart service&lt;/span&gt;
systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;service   &lt;span class="c"&gt;# Start on boot&lt;/span&gt;
systemctl disable service  &lt;span class="c"&gt;# Don't start on boot&lt;/span&gt;
systemctl status service   &lt;span class="c"&gt;# Check status&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Takeaways 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Package managers simplify software installation&lt;/li&gt;
&lt;li&gt;Systemctl manages system services&lt;/li&gt;
&lt;li&gt;Service logs help in troubleshooting&lt;/li&gt;
&lt;li&gt;Boot-time service management is crucial&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Linux #DevOps #Docker #Jenkins #90DaysOfDevOps
&lt;/h1&gt;




&lt;p&gt;&lt;em&gt;This is Day 7 of my #90DaysOfDevOps journey. Keep learning and managing services!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>docker</category>
      <category>jenkins</category>
    </item>
    <item>
      <title>Day 6/90: File Permissions and Access Control Lists in Linux 🔐 #90DaysOfDevOps</title>
      <dc:creator>Kanav Gathe</dc:creator>
      <pubDate>Wed, 23 Oct 2024 20:27:22 +0000</pubDate>
      <link>https://dev.to/kanav_gathe/day-690-file-permissions-and-access-control-lists-in-linux-90daysofdevops-1pio</link>
      <guid>https://dev.to/kanav_gathe/day-690-file-permissions-and-access-control-lists-in-linux-90daysofdevops-1pio</guid>
      <description>&lt;h1&gt;
  
  
  Day 6: File Permissions and Access Control Lists 🚀
&lt;/h1&gt;

&lt;p&gt;Hello DevOps enthusiasts! 👋 Welcome to Day 6 of the #90DaysOfDevOps challenge. Today, we're exploring file permissions and Access Control Lists (ACL) in Linux.&lt;/p&gt;

&lt;h2&gt;
  
  
  Task Solutions 💻
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Basic File Permissions
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create and check file&lt;/span&gt;
&lt;span class="nb"&gt;touch &lt;/span&gt;test_file.txt
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-ltr&lt;/span&gt; test_file.txt

&lt;span class="c"&gt;# Change permissions (owner only)&lt;/span&gt;
&lt;span class="nb"&gt;chmod &lt;/span&gt;700 test_file.txt
&lt;span class="c"&gt;# OR&lt;/span&gt;
&lt;span class="nb"&gt;chmod &lt;/span&gt;u+rwx,go-rwx test_file.txt

&lt;span class="c"&gt;# Verify changes&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-ltr&lt;/span&gt; test_file.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Permission Management Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Change permissions for multiple files&lt;/span&gt;
change_permissions&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for &lt;/span&gt;file &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;do
        &lt;/span&gt;&lt;span class="nb"&gt;chmod &lt;/span&gt;644 &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
        &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Changed permissions for &lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;done&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. ACL Implementation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create test directory&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;acl_test
&lt;span class="nb"&gt;cd &lt;/span&gt;acl_test

&lt;span class="c"&gt;# Set ACL for user&lt;/span&gt;
setfacl &lt;span class="nt"&gt;-m&lt;/span&gt; u:user1:rx file1.txt

&lt;span class="c"&gt;# Set ACL for group&lt;/span&gt;
setfacl &lt;span class="nt"&gt;-m&lt;/span&gt; g:group1:rw file1.txt

&lt;span class="c"&gt;# View ACL&lt;/span&gt;
getfacl file1.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. ACL Permission Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

set_acl_permissions&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
    setfacl &lt;span class="nt"&gt;-m&lt;/span&gt; u:&lt;span class="nv"&gt;$user&lt;/span&gt;:rw &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Set ACL for &lt;/span&gt;&lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="s2"&gt; on &lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Special Permissions
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Sticky Bit&lt;/span&gt;
&lt;span class="nb"&gt;chmod&lt;/span&gt; +t /shared_directory

&lt;span class="c"&gt;# SUID&lt;/span&gt;
&lt;span class="nb"&gt;chmod &lt;/span&gt;u+s /usr/bin/script

&lt;span class="c"&gt;# SGID&lt;/span&gt;
&lt;span class="nb"&gt;chmod &lt;/span&gt;g+s /shared_directory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6. Permission Backup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Backup permissions&lt;/span&gt;
getfacl &lt;span class="nt"&gt;-R&lt;/span&gt; /path/to/directory &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; permissions.acl

&lt;span class="c"&gt;# Restore permissions&lt;/span&gt;
setfacl &lt;span class="nt"&gt;--restore&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;permissions.acl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Permission Types Explained 📝
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Basic Permissions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read (r): 4&lt;/li&gt;
&lt;li&gt;Write (w): 2&lt;/li&gt;
&lt;li&gt;Execute (x): 1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Special Permissions&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SUID (4000)&lt;/li&gt;
&lt;li&gt;SGID (2000)&lt;/li&gt;
&lt;li&gt;Sticky Bit (1000)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ACL Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User-specific permissions&lt;/li&gt;
&lt;li&gt;Group-specific permissions&lt;/li&gt;
&lt;li&gt;Default permissions&lt;/li&gt;
&lt;li&gt;Inherited permissions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Key Takeaways 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;File permissions are crucial for security&lt;/li&gt;
&lt;li&gt;ACLs provide granular access control&lt;/li&gt;
&lt;li&gt;Special permissions serve specific purposes&lt;/li&gt;
&lt;li&gt;Regular permission backups are important&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Linux #DevOps #Security #90DaysOfDevOps
&lt;/h1&gt;




&lt;p&gt;&lt;em&gt;This is Day 6 of my #90DaysOfDevOps journey. Keep securing and learning!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>security</category>
      <category>bash</category>
    </item>
    <item>
      <title>Day 5/90: Advanced Shell Scripting for DevOps Engineers 🛠️ #90DaysOfDevOps</title>
      <dc:creator>Kanav Gathe</dc:creator>
      <pubDate>Wed, 23 Oct 2024 20:21:33 +0000</pubDate>
      <link>https://dev.to/kanav_gathe/day-590-advanced-shell-scripting-for-devops-engineers-90daysofdevops-4fgi</link>
      <guid>https://dev.to/kanav_gathe/day-590-advanced-shell-scripting-for-devops-engineers-90daysofdevops-4fgi</guid>
      <description>&lt;h1&gt;
  
  
  Day 5: Advanced Shell Scripting for DevOps Engineers 🚀
&lt;/h1&gt;

&lt;p&gt;Hello DevOps enthusiasts! 👋 Welcome to Day 5 of the #90DaysOfDevOps challenge. Today, we're diving into advanced shell scripting with directory creation, backup automation, and user management.&lt;/p&gt;

&lt;h2&gt;
  
  
  Task Solutions 💻
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Directory Creation Script
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Function to create multiple directories&lt;/span&gt;
create_directories&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local dirname&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;start&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$3&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;start&lt;span class="p"&gt;;&lt;/span&gt; i&amp;lt;&lt;span class="o"&gt;=&lt;/span&gt;end&lt;span class="p"&gt;;&lt;/span&gt; i++&lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
        &lt;/span&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;dirname&lt;/span&gt;&lt;span class="k"&gt;}${&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;done
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Created directories from &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;dirname&lt;/span&gt;&lt;span class="k"&gt;}${&lt;/span&gt;&lt;span class="nv"&gt;start&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; to &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;dirname&lt;/span&gt;&lt;span class="k"&gt;}${&lt;/span&gt;&lt;span class="nv"&gt;end&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# Example usage:&lt;/span&gt;
&lt;span class="c"&gt;# ./createDirectories.sh day 1 90&lt;/span&gt;
&lt;span class="c"&gt;# Creates day1 through day90&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Backup Script Implementation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Function to create backup&lt;/span&gt;
backup_workspace&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;source_dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
    &lt;span class="nb"&gt;local &lt;/span&gt;&lt;span class="nv"&gt;backup_dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"backup_&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%Y%m%d_%H%M%S&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

    &lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$backup_dir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$source_dir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/&lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$backup_dir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Backup created in: &lt;/span&gt;&lt;span class="nv"&gt;$backup_dir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# Example usage:&lt;/span&gt;
&lt;span class="c"&gt;# ./backup.sh /path/to/source&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Crontab for Automated Backup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Add daily backup at midnight&lt;/span&gt;
0 0 &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; /path/to/backup_script.sh

&lt;span class="c"&gt;# Check existing crontab&lt;/span&gt;
crontab &lt;span class="nt"&gt;-l&lt;/span&gt;

&lt;span class="c"&gt;# Add new cron job&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;crontab &lt;span class="nt"&gt;-l&lt;/span&gt; 2&amp;gt;/dev/null&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"0 0 * * * /path/to/backup_script.sh"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; | crontab -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. User Management
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Create users&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;useradd &lt;span class="nt"&gt;-m&lt;/span&gt; user1
&lt;span class="nb"&gt;sudo &lt;/span&gt;useradd &lt;span class="nt"&gt;-m&lt;/span&gt; user2

&lt;span class="c"&gt;# Display created users&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"^user[12]"&lt;/span&gt; /etc/passwd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Script Features 🔧
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Directory Creation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dynamic directory naming&lt;/li&gt;
&lt;li&gt;Range-based creation&lt;/li&gt;
&lt;li&gt;Error handling&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Backup System&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Timestamp-based backups&lt;/li&gt;
&lt;li&gt;Full directory copying&lt;/li&gt;
&lt;li&gt;Automatic organization&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Automation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Crontab integration&lt;/li&gt;
&lt;li&gt;Scheduled execution&lt;/li&gt;
&lt;li&gt;Regular backups&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;User Management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User creation&lt;/li&gt;
&lt;li&gt;System integration&lt;/li&gt;
&lt;li&gt;Verification steps&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Key Takeaways 💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Shell scripts can automate complex tasks&lt;/li&gt;
&lt;li&gt;Proper timestamp usage is crucial for backups&lt;/li&gt;
&lt;li&gt;Crontab enables scheduled automation&lt;/li&gt;
&lt;li&gt;User management requires proper permissions&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Bash #DevOps #Automation #Linux #90DaysOfDevOps
&lt;/h1&gt;




&lt;p&gt;&lt;em&gt;This is Day 5 of my #90DaysOfDevOps journey. Keep automating and improving!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bash</category>
      <category>devops</category>
      <category>linux</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
