<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux &amp; Automation on Sagar Panda | DevOps &amp; Cloud Infra Engineer</title><link>https://sagarpanda.com/categories/linux--automation/</link><description>Recent content in Linux &amp; Automation on Sagar Panda | DevOps &amp; Cloud Infra Engineer</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 24 May 2026 12:45:10 +0530</lastBuildDate><atom:link href="https://sagarpanda.com/categories/linux--automation/index.xml" rel="self" type="application/rss+xml"/><item><title>Turn Your GitHub Repository into a Self-Managing Workflow</title><link>https://sagarpanda.com/blogs/github-automation/</link><pubDate>Sun, 24 May 2026 12:45:10 +0530</pubDate><guid>https://sagarpanda.com/blogs/github-automation/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;a href="#introduction" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a
 href="https://sagarpanda.com/blogs/github-actions/"&gt;In my previous article, I wrote the fundamentals of GitHub Actions and how they can simplify CI/CD pipelines&lt;/a&gt;. But modern repositories need much more than just automated builds and deployments.&lt;/p&gt;
&lt;p&gt;As projects grow, maintaining pull requests, managing issues, handling releases, updating dependencies, and reviewing security manually becomes repetitive and time-consuming.&lt;/p&gt;</description></item><item><title>Set Up mTLS in NGINX for Robust Web Security.</title><link>https://sagarpanda.com/blogs/nginx/nginx-mtls/</link><pubDate>Mon, 09 Dec 2024 19:26:10 +0530</pubDate><guid>https://sagarpanda.com/blogs/nginx/nginx-mtls/</guid><description>&lt;h3 id="what-is-mtls"&gt;What is mTLS:&lt;a href="#what-is-mtls" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;mTLS, or &lt;strong&gt;mutual TLS&lt;/strong&gt;, is a security protocol that ensures &lt;strong&gt;both&lt;/strong&gt; the client and the server authenticate each other when they communicate over a network. It’s like a handshake where both sides check each other’s identity, making sure that both are who they say they are.&lt;/p&gt;</description></item><item><title>Fortify Your Security with CrowdSec — A Quick Start Guide</title><link>https://sagarpanda.com/blogs/linux/crowdsec/</link><pubDate>Mon, 30 Sep 2024 19:26:10 +0530</pubDate><guid>https://sagarpanda.com/blogs/linux/crowdsec/</guid><description>&lt;h3 id="what-is-crowdsec"&gt;What is CrowdSec:&lt;a href="#what-is-crowdsec" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;CrowdSec is an open-source security tool designed to help protect servers and applications from cyberattacks. It works by analyzing logs from your systems to detect suspicious activity, such as brute-force attempts, and then takes action to block or prevent those threats.&lt;/p&gt;</description></item><item><title>The Essential Role of Exit Codes in Bash Scripting</title><link>https://sagarpanda.com/blogs/linux/shellscript4/</link><pubDate>Wed, 26 Jun 2024 19:26:10 +0530</pubDate><guid>https://sagarpanda.com/blogs/linux/shellscript4/</guid><description>&lt;h2 id="what-are-exit-codes-in-linux"&gt;What are exit codes in linux&lt;a href="#what-are-exit-codes-in-linux" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;In Linux and Unix-like systems, an exit code is a numeric value returned by a command or a script after completion. It indicates the success or failure of the command or script execution.&lt;/p&gt;</description></item><item><title>Linux Terminal tips - Part 2</title><link>https://sagarpanda.com/blogs/linux/linux-tips2/</link><pubDate>Tue, 28 May 2024 19:26:10 +0530</pubDate><guid>https://sagarpanda.com/blogs/linux/linux-tips2/</guid><description>&lt;h3 id="1-reverse-search-cmds"&gt;1. Reverse search cmds:&lt;a href="#1-reverse-search-cmds" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;To reuse a command, use Ctrl + R and type a few matching keywords to see the recently used cmds being shown up. The search is based on the command history.&lt;/p&gt;
&lt;p&gt;
&lt;figure
 class="image-figure not-prose my-8"
 data-lightbox-enabled="
 true
 "
 data-gallery-type="auto"
 data-image-width="0"
 data-image-height="0"
 data-image-src="https://miro.medium.com/v2/resize:fit:1400/format:webp/1*8d6OCQLH_WCzvQCcUpCfcQ.gif"
&gt;
 &lt;div class="image-container"&gt;
 &lt;img
 src="https://miro.medium.com/v2/resize:fit:1400/format:webp/1*8d6OCQLH_WCzvQCcUpCfcQ.gif"
 alt="captionless image"
 
 
 width="1472" height="302"
 
 loading="lazy"
 decoding="async"
 data-gallery-src="https://miro.medium.com/v2/resize:fit:1400/format:webp/1*8d6OCQLH_WCzvQCcUpCfcQ.gif"
 data-gallery-alt="captionless image"
 data-gallery-title=""
 /&gt;&lt;/div&gt;

 &lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Linux Terminal tips - Part 1</title><link>https://sagarpanda.com/blogs/linux/linux-tips1/</link><pubDate>Sun, 05 May 2024 19:26:10 +0530</pubDate><guid>https://sagarpanda.com/blogs/linux/linux-tips1/</guid><description>&lt;h3 id="introduction"&gt;Introduction:&lt;a href="#introduction" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;In the labyrinth of Linux commands, managing tasks can be daunting. Fear not! Here are some handy tips and tricks up your sleeve to streamline your day-to-day operations, making every task a breeze&lt;/p&gt;
&lt;h3 id="1-clearing-terminal"&gt;1. Clearing terminal:&lt;a href="#1-clearing-terminal" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Use Ctrl + L to clean the terminal instead of typing clear every time.&lt;/p&gt;</description></item><item><title>If Statement - Conditional in Bash Scripting</title><link>https://sagarpanda.com/blogs/linux/shellscrpt3/</link><pubDate>Fri, 22 Mar 2024 19:26:10 +0530</pubDate><guid>https://sagarpanda.com/blogs/linux/shellscrpt3/</guid><description>&lt;h3 id="intro"&gt;Intro:&lt;a href="#intro" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;So, what’s the deal with &amp;lsquo;if&amp;rsquo; statements? Think of them as the script’s way of making decisions. It’s like having a little script buddy that can say, &amp;ldquo;Hey, if this thing happens, do this. Otherwise, try something else!&amp;rdquo;&lt;/p&gt;</description></item><item><title>Variables and Math Functions in Bash</title><link>https://sagarpanda.com/blogs/linux/shellscript2/</link><pubDate>Sun, 10 Mar 2024 19:26:10 +0530</pubDate><guid>https://sagarpanda.com/blogs/linux/shellscript2/</guid><description>&lt;h3 id="what-is-a-variable"&gt;What is a variable:&lt;a href="#what-is-a-variable" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;A variable is a container where we can store some value which have possibility to change.&lt;/p&gt;
&lt;p&gt;Just like any other programming language, bash also has variables, in fact we saw one default variable in the 1st chapter which is $SHELL. There are many other default variables such as $HOME, $PWD, $PATH, $USER etc.&lt;/p&gt;</description></item><item><title>Introduction to Shell Scripting for Beginners</title><link>https://sagarpanda.com/blogs/linux/shellscript1/</link><pubDate>Thu, 29 Feb 2024 19:26:10 +0530</pubDate><guid>https://sagarpanda.com/blogs/linux/shellscript1/</guid><description>&lt;h3 id="whats-shell"&gt;What’s Shell:&lt;a href="#whats-shell" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;In simple terms shell is a program that takes input as commands and passes the operating system (OS) to perform the desired task.&lt;/p&gt;
&lt;p&gt;In linux we have many shell programs such as bash, zsh, fish and etc. We are going to use bash in this series.&lt;/p&gt;</description></item><item><title>Let’s Encrypt SSL Configuration using Certbot</title><link>https://sagarpanda.com/blogs/nginx/letsencrypt-ssl/</link><pubDate>Mon, 06 Nov 2023 19:26:10 +0530</pubDate><guid>https://sagarpanda.com/blogs/nginx/letsencrypt-ssl/</guid><description>&lt;h3 id="what-is-ssltls"&gt;What is SSL/TLS:&lt;a href="#what-is-ssltls" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;SSL or Secure Sockets Layer is a security protocol used to establish an encrypted connection between your web browser and a web server.&lt;/p&gt;
&lt;p&gt;This ensures that the data transfer between you and the server can’t be read by an intruder.&lt;/p&gt;</description></item><item><title>A Beginner’s Introduction to GitHub Actions</title><link>https://sagarpanda.com/blogs/github-actions/</link><pubDate>Sat, 21 Oct 2023 19:26:10 +0530</pubDate><guid>https://sagarpanda.com/blogs/github-actions/</guid><description>&lt;!-- ![action workflow](https://miro.medium.com/v2/resize:fit:1358/format:webp/1*_7mJjD1resPodxT7agk16w.png) --&gt;
&lt;p&gt;&lt;strong&gt;Intro:&lt;/strong&gt; GitHub action is a CI/CD platform to create build, test and deployment pipeline for our application. This is a yaml based configuration.&lt;/p&gt;
&lt;p&gt;In this tutorial, we are going to see the basics of github action and then proceed to integrate SonarQube SAST with it in the next post.&lt;/p&gt;
&lt;p&gt;Prerequisite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub ac&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="set-up"&gt;Set Up&lt;a href="#set-up" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;First create a repository on github and add a simple program that prints just hello world.&lt;/p&gt;</description></item><item><title>Load Balancing Magic — Unleashing the Potential of NGINX.</title><link>https://sagarpanda.com/blogs/nginx/nginx-lb/</link><pubDate>Sat, 22 Apr 2023 19:26:10 +0530</pubDate><guid>https://sagarpanda.com/blogs/nginx/nginx-lb/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;a href="#introduction" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="what-is-nginx"&gt;What is NGINX:&lt;a href="#what-is-nginx" class="heading-anchor" aria-label="Link to this section"&gt;&lt;svg class="h-4 w-4" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"&gt;&lt;path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/&gt;&lt;path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Nginx (pronounced engine x /ˌɛndʒɪnˈɛks/ EN-jin-EKS) is an open source HTTP web and reverse proxy server.&lt;/p&gt;</description></item></channel></rss>