<?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>Forem: Rajpreet Gill</title>
    <description>The latest articles on Forem by Rajpreet Gill (@rajpreet_gill).</description>
    <link>https://forem.com/rajpreet_gill</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%2F2553052%2Fad00472f-718b-4c64-baa7-ec9cd477a9d4.jpg</url>
      <title>Forem: Rajpreet Gill</title>
      <link>https://forem.com/rajpreet_gill</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/rajpreet_gill"/>
    <language>en</language>
    <item>
      <title>📝 Blog Draft: Day 30 – “How Linux Rewired My Mind in 30 Days”</title>
      <dc:creator>Rajpreet Gill</dc:creator>
      <pubDate>Fri, 16 May 2025 23:19:53 +0000</pubDate>
      <link>https://forem.com/rajpreet_gill/blog-draft-day-30-how-linux-rewired-my-mind-in-30-days-47fd</link>
      <guid>https://forem.com/rajpreet_gill/blog-draft-day-30-how-linux-rewired-my-mind-in-30-days-47fd</guid>
      <description>&lt;p&gt;&lt;strong&gt;“What started as a terminal window opened into a whole new world — one keystroke at a time.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🗓️ The Beginning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;30 days ago, I started a challenge to learn Linux — &lt;strong&gt;not just use it, but understand it at its core.&lt;/strong&gt; Today, I’m wrapping it up not with an end, but with a beginning: &lt;strong&gt;my story, my learnings, and a huge thank you to everyone who followed my journey — 1300+ dev.to friends, CloudWhislter Community this one's for you. 🙌&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔧 My Favorite Projects &amp;amp; Moments:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;✅ Git &amp;amp; Terraform:&lt;/strong&gt;&lt;br&gt;
I learned how version control and infrastructure as code can empower reproducible setups — from git commits to terraform apply.&lt;br&gt;
&lt;strong&gt;❤️ Health Check to AI-powered Fixes:&lt;/strong&gt;&lt;br&gt;
I automated health checks and paired them with AI-based diagnostics — the terminal became my stethoscope.&lt;br&gt;
&lt;strong&gt;📩 Email Integrations:&lt;/strong&gt;&lt;br&gt;
Bash + mail + scripts → Now I get notified when my cron job fails. No surprises.&lt;br&gt;
&lt;strong&gt;🚫 Breaking Free from Social Media:&lt;/strong&gt;&lt;br&gt;
Used /etc/hosts to block dopamine-draining distractions. Focus mode: ON.&lt;br&gt;
&lt;strong&gt;⚠️ Dangerous Commands I’ll Never Touch:&lt;/strong&gt;&lt;br&gt;
Documented rm -rf /, :(){ :|:&amp;amp; };: and others. Linux is powerful — but it demands respect.&lt;br&gt;
&lt;strong&gt;🔐 SSH Key Authentication:&lt;/strong&gt;&lt;br&gt;
No more passwords. Public/private key pairs feel like magic 🔑.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🧠 &lt;strong&gt;Linux as a Learning Playground:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Taught a 10-year-old Linux&lt;/strong&gt; using a &lt;strong&gt;Candy Crush&lt;/strong&gt; game from the terminal.&lt;br&gt;
Built a &lt;strong&gt;command-line Hunt Game&lt;/strong&gt; that teaches logic and grep-fu.&lt;br&gt;
Wrote a script that &lt;strong&gt;summarizes 5 days of commands for anyone to follow in series.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;🛠️ Cool Stuff I Built:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🤖 &lt;strong&gt;Raspberry Pi Smart Cat Feeder&lt;/strong&gt; with AI object recognition&lt;br&gt;
🌦️ &lt;strong&gt;Terminal Weather App&lt;/strong&gt;&lt;br&gt;
🚀 &lt;strong&gt;CI/CD pipeline&lt;/strong&gt; using shell, GitHub Actions, and deploys&lt;br&gt;
🔒 Secure &lt;strong&gt;banking portal&lt;/strong&gt; simulation (permissions, encryption, firewall with iptables)&lt;br&gt;
📁 Explored Linux filesystem like a &lt;strong&gt;digital archaeologist&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;🌍 Linux History, Even NASA Style:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Did you know Linux powers &lt;strong&gt;NASA’s Mars rovers&lt;/strong&gt;, ISS systems, and even your smart fridge?&lt;br&gt;
I read the kernel commits like &lt;strong&gt;ancient scrolls&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;💬 Lessons I’ll Take Forever:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Don’t memorize commands&lt;/strong&gt; — understand patterns.&lt;br&gt;
&lt;strong&gt;The terminal isn’t just a tool&lt;/strong&gt; — it’s a mindset.&lt;br&gt;
&lt;strong&gt;Open source isn't just free&lt;/strong&gt;. It’s freedom.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;👏 Thank You!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To everyone who &lt;strong&gt;followed, cheered, messaged&lt;/strong&gt;, or just read my posts — thank you.&lt;br&gt;
&lt;strong&gt;1300+ followers on dev.to&lt;/strong&gt;, you made this journey memorable. 🙌&lt;/p&gt;

&lt;p&gt;Special thanks to the &lt;strong&gt;CloudWhislter Community&lt;/strong&gt; for giving me the opportunity and platform to grow, share, and stay inspired. 🌐💙&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And to Linux:&lt;/strong&gt;&lt;br&gt;
Thank you for the errors, the logs, the fixes, the challenges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#30DaysLinuxChallenge #CloudWhisler&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;#DevOps #Linux #RHCSA #Opensource #AWS #CloudComputing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Catch out by My LinkedIn profile&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/rajpreet-gill-4569b4161/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/rajpreet-gill-4569b4161/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>linux</category>
      <category>devops</category>
      <category>cloudwhislter</category>
    </item>
    <item>
      <title>✅ Day 29 Theme: "Linux Portfolio Builder + Reflections CLI Style"</title>
      <dc:creator>Rajpreet Gill</dc:creator>
      <pubDate>Fri, 16 May 2025 23:19:17 +0000</pubDate>
      <link>https://forem.com/rajpreet_gill/day-29-theme-linux-portfolio-builder-reflections-cli-style-3n4g</link>
      <guid>https://forem.com/rajpreet_gill/day-29-theme-linux-portfolio-builder-reflections-cli-style-3n4g</guid>
      <description>&lt;p&gt;&lt;strong&gt;🎯 Goal:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create a script or command-line experience that summarizes  30-day journey&lt;/strong&gt; — like a terminal-based interactive resume or Linux diary. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔧 Day29.sh – The Interactive Linux Portfolio Script&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`#!/bin/bash

clear
echo "=============================="
echo " Rajpreet's 30-Day Linux Journey"
echo "=============================="
echo ""

echo "📅 Days Completed: 29 / 30"
sleep 1

echo ""
echo "🚀 Highlights:"
echo "- Git, Terraform, CI/CD"
echo "- AI-powered health checks"
echo "- Email alert automation"
echo "- SSH Key Auth + Secure portal"
echo "- Candy Crush in Terminal for kids"
echo "- Social media detox with /etc/hosts"
echo "- Raspberry Pi AI Cat Feeder"
echo "- Weather App CLI"
echo "- Dangerous command safety"
echo "- Linux history (NASA style)"
sleep 2

echo ""
read -p "👉 Want to see the most used commands? (y/n): " ans

if [[ $ans == "y" ]]; then
  echo ""
  echo "📊 Most Used Commands:"
  history | awk '{CMD[$2]++}END{ for(a in CMD)print CMD[a] " - " a;}' | sort -rn | head -10
  echo ""
fi

read -p "👉 Want to see your favorite projects? (y/n): " proj
if [[ $proj == "y" ]]; then
  echo ""
  echo "🔥 Favorite Projects:"
  echo "- Candy Crush Terminal Game"
  echo "- AI Cat Feeder with Raspberry Pi"
  echo "- Secure Banking Portal Sim"
  echo "- Weather CLI App"
  echo "- CI/CD Deployment Script"
  echo ""
fi

read -p "👉 Show a thank-you message? (y/n): " thank
if [[ $thank == "y" ]]; then
  echo ""
  echo "🙏 THANK YOU!"
  echo "To the 1300+ dev.to followers, the Linux community,"
  echo "and everyone who helped me grow. Let's keep hacking 🐧"
  echo ""
fi

echo "Done. Ready for Day 30 🎉"
`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Save as day29.sh, then run:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh3tqopakrgc4sqso3l6n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh3tqopakrgc4sqso3l6n.png" alt="Image description" width="800" height="67"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fydz6qxdw906yvh9mkqmb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fydz6qxdw906yvh9mkqmb.png" alt="Image description" width="800" height="947"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Then, I'll get a question and press 'yes'.":&lt;/strong&gt;&lt;br&gt;
  👉 Want to see the most used commands? (y/n): y&lt;br&gt;
  👉 Want to see your favorite projects? (y/n): y&lt;br&gt;
  👉 Show a thank-you message? (y/n): y&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📘 Bonus (Markdown/Reflection Tasks)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Along with the script:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Jot down your &lt;strong&gt;5 favorite commands&lt;/strong&gt; with examples&lt;br&gt;
Screenshot your terminal output from the script and save for &lt;strong&gt;Day 30 blog&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Final push:&lt;/strong&gt; commit this to GitHub with the title: &lt;strong&gt;linux-30day-portfolio&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;🚀 Outcome of Day 29&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✅ Portfolio script done&lt;br&gt;
✅ Ready content for Day 30&lt;br&gt;
✅ Refreshed memory of full journey&lt;br&gt;
✅ Personal closure before the public celebration&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#30DaysLinuxChallenge #CloudWhisler&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;#DevOps #Linux #RHCSA #Opensource #AWS #CloudComputing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Catch out by My LinkedIn profile&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/rajpreet-gill-4569b4161/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/rajpreet-gill-4569b4161/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>linux</category>
      <category>clouswhislter</category>
    </item>
    <item>
      <title>Day-28: Troubleshooting Raspberry Pi Headless Setup + Servo Script Test</title>
      <dc:creator>Rajpreet Gill</dc:creator>
      <pubDate>Thu, 15 May 2025 05:01:25 +0000</pubDate>
      <link>https://forem.com/rajpreet_gill/day-28-troubleshooting-raspberry-pi-headless-setup-servo-script-test-5alj</link>
      <guid>https://forem.com/rajpreet_gill/day-28-troubleshooting-raspberry-pi-headless-setup-servo-script-test-5alj</guid>
      <description>&lt;p&gt;&lt;strong&gt;Subtitle: When your cat’s food depends on debugging a microcomputer...&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🐱 Recap from Day-27&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In Day-27, we:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flashed &lt;strong&gt;Raspberry Pi OS (Lite)&lt;/strong&gt; onto a &lt;strong&gt;microSD card&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enabled &lt;strong&gt;SSH&lt;/strong&gt; by adding a file to &lt;strong&gt;/boot&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;(Optionally) added &lt;strong&gt;Wi-Fi credentials&lt;/strong&gt; via &lt;strong&gt;wpa_supplicant.conf&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Inserted the &lt;strong&gt;SD card&lt;/strong&gt; into the &lt;strong&gt;Raspberry Pi&lt;/strong&gt; and powered it on&lt;/li&gt;
&lt;li&gt;Ran &lt;strong&gt;nmap&lt;/strong&gt; to identify the Pi’s IP — &lt;strong&gt;but couldn’t connect via SSH&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📚 Table of Contents:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
✅ Confirming SSH Still Enabled
&lt;/li&gt;
&lt;li&gt;
🧠 Checking Possible Issues
&lt;/li&gt;
&lt;li&gt;
💻 Re-Insert &amp;amp; Recheck SD Card
&lt;/li&gt;
&lt;li&gt;
🌐 Trying .local Hostname
&lt;/li&gt;
&lt;li&gt;
🔌 Swapping Power &amp;amp; Boot Medium
&lt;/li&gt;
&lt;li&gt;
🧰 Hardware Test: Running the Servo Script
&lt;/li&gt;
&lt;li&gt;
🕒 Schedule with Cron
&lt;/li&gt;
&lt;li&gt;✅ Final Status (Day-28)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;🧪 Step-by-Step Troubleshooting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔎 1. Confirming SSH Still Enabled&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After scanning the network and identifying live hosts:&lt;/p&gt;

&lt;p&gt;We attempted SSH But got:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmhrwlx86vjz8yd570ef.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmhrwlx86vjz8yd570ef.png" alt="Image description" width="800" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 2. Checking Possible Issues&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz6gd81l2go3qu6h5c70x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz6gd81l2go3qu6h5c70x.png" alt="Image description" width="800" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💻 3. Re-Insert &amp;amp; Recheck SD Card&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removed SD card&lt;/li&gt;
&lt;li&gt;Mounted it back on macOS&lt;/li&gt;
&lt;li&gt;Verified ssh file:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsrzezgbgklur8c1xj58s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsrzezgbgklur8c1xj58s.png" alt="Image description" width="800" height="41"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output showed:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmccx9sjnypidcqmjdo59.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmccx9sjnypidcqmjdo59.png" alt="Image description" width="800" height="59"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅ SSH file still present&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🌐 4. Trying .local Hostname:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But Fails ❌ :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fwxlbt3eafo7ikf1zu8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fwxlbt3eafo7ikf1zu8.png" alt="Image description" width="800" height="79"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔎 Diagnosis:&lt;/strong&gt; .local resolution (mDNS) not supported or not working on macOS without Bonjour or Avahi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔌 5. Swapping Power &amp;amp; Boot Medium:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Still not able to reach the Pi?&lt;/p&gt;

&lt;p&gt;✅ Try this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use another USB-C cable or power adapter&lt;/li&gt;
&lt;li&gt;Re-flash Raspberry Pi OS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;This time, use Raspberry Pi Imager and make sure to:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable SSH in the advanced options&lt;/li&gt;
&lt;li&gt;Set Wi-Fi SSID and password (if headless)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🧰 6. Hardware Test: Running the Servo Script:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After finally getting access:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhse4d6ncmp1e5wbjin7p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhse4d6ncmp1e5wbjin7p.png" alt="Image description" width="485" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can now test your Python script that triggers the servo.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✏️ Example: feed_cat.py&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4nszr44dr45l6uqkgnvw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4nszr44dr45l6uqkgnvw.png" alt="Image description" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🕒 7. Schedule with Cron:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Do &lt;strong&gt;Crontab -e&lt;/strong&gt; and Add:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjkt9bercodc2qekvwu6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcjkt9bercodc2qekvwu6.png" alt="Image description" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📅 This runs the script every day at 8:00 AM.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ 8. Final Status (Day-28)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13gno2ucfg6nhfqiuzeb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13gno2ucfg6nhfqiuzeb.png" alt="Image description" width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📌 Lessons Learned:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enabling SSH by file still works — &lt;strong&gt;just double-check the boot!&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;mDNS can be flaky; &lt;strong&gt;nmap is your friend.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Power supply really matters for &lt;strong&gt;Pi stability.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Servo motors&lt;/strong&gt; may need external power for consistent operation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;#30DaysLinuxChallenge #CloudWhisler&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;DevOps #Linux #RHCSA #Opensource #AWS #CloudComputing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Catch out by My LinkedIn profile&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/rajpreet-gill-4569b4161/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/rajpreet-gill-4569b4161/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>linux</category>
      <category>cloudwhislter</category>
    </item>
    <item>
      <title>🐾 Setting Up the Raspberry Pi-Based IoT Cat Feeder (Day-27)</title>
      <dc:creator>Rajpreet Gill</dc:creator>
      <pubDate>Thu, 15 May 2025 04:57:49 +0000</pubDate>
      <link>https://forem.com/rajpreet_gill/setting-up-the-raspberry-pi-based-iot-cat-feeder-day-27-2638</link>
      <guid>https://forem.com/rajpreet_gill/setting-up-the-raspberry-pi-based-iot-cat-feeder-day-27-2638</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;In today’s guide (Day-27), we’ll walk through the complete process of setting up your own &lt;strong&gt;IoT-based pet feeder&lt;/strong&gt; using a &lt;strong&gt;Raspberry Pi&lt;/strong&gt;. Our goal is to automate the feeding process using a &lt;strong&gt;servo motor&lt;/strong&gt;, &lt;strong&gt;Python&lt;/strong&gt;, and scheduled &lt;strong&gt;cron jobs&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🎯 &lt;strong&gt;Objective&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Set up a Raspberry Pi-powered &lt;strong&gt;automated pet feeder&lt;/strong&gt; that runs a &lt;strong&gt;Python script&lt;/strong&gt; to control a &lt;strong&gt;servo motor&lt;/strong&gt; — scheduled to &lt;strong&gt;feed your cat daily&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 Table of Contents (Day-27)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
💾 Flashing Raspberry Pi OS to SD Card
&lt;/li&gt;
&lt;li&gt;
🔐 Enabling SSH Access
&lt;/li&gt;
&lt;li&gt;
📶 (Optional) Configure Wi-Fi for Headless Boot
&lt;/li&gt;
&lt;li&gt;
🔌 Booting the Raspberry Pi
&lt;/li&gt;
&lt;li&gt;
🌐 Detecting Raspberry Pi on Local Network
&lt;/li&gt;
&lt;li&gt;
🛜 Attempting SSH Access
&lt;/li&gt;
&lt;li&gt;
🧠 Verifying SSH Setup Again
&lt;/li&gt;
&lt;li&gt;
🖥️ Tried Accessing via Hostname
&lt;/li&gt;
&lt;li&gt;
📌 Diagnosis
&lt;/li&gt;
&lt;li&gt;✅ Final Status (Day-27 Recap)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🐱 &lt;strong&gt;Step-by-Step Setup Guide&lt;/strong&gt;
&lt;/h2&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;1. Flashing Raspberry Pi OS to SD Card&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Download &lt;strong&gt;Raspberry Pi OS (Lite)&lt;/strong&gt; from the official website.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;Raspberry Pi Imager&lt;/strong&gt; or &lt;strong&gt;Balena Etcher&lt;/strong&gt; to flash it to a microSD card (32GB in our case).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Tool Used: Raspberry Pi Imager
Card Size: 32GB microSD
Status   : ✅ OS flashed and verified
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1s7945lyo3kv1i3we1j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1s7945lyo3kv1i3we1j.png" alt="Image description" width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8w1fne7nvx6e8sdbctbx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8w1fne7nvx6e8sdbctbx.png" alt="Image description" width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1tvfezlj2jza9hlbfo9h.png" alt="Image description" width="800" height="531"&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Enabling SSH Access&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Inserted SD card into MacBook&lt;/strong&gt; → Mounted as:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fppfrzq5xlqqv2wi2qhhq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fppfrzq5xlqqv2wi2qhhq.png" alt="Image description" width="752" height="61"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Created the SSH file in boot partition:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zqzmk8gw6sm08zu9tnn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zqzmk8gw6sm08zu9tnn.png" alt="Image description" width="800" height="43"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;SSH enabled successfully&lt;/strong&gt; for headless access.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;3. (Optional) Configure Wi-Fi for Headless Boot&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Created &lt;code&gt;wpa_supplicant.conf&lt;/code&gt; inside the boot partition (optional if using Ethernet):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft25fjopwzhfkrrgtxg25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft25fjopwzhfkrrgtxg25.png" alt="Image description" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Replaced with real credentials, saved and ejected the SD card.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;4. Booting the Raspberry Pi&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Inserted the SD card into Raspberry Pi&lt;/li&gt;
&lt;li&gt;Powered on via USB-C&lt;/li&gt;
&lt;li&gt;Waited ~2 minutes for the OS to boot&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedzsqte75t5nsprhzcyd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedzsqte75t5nsprhzcyd.png" alt="Image description" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Expected: Pi should connect to local network (via Wi-Fi or Ethernet)&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;5. Detecting Raspberry Pi on Local Network&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Ran a network scan and see the 🖥️ &lt;strong&gt;Output (Filtered)&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4rcvah6vuhntsnd9nqe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4rcvah6vuhntsnd9nqe.png" alt="Image description" width="725" height="700"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;6. Attempting SSH Access&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Tried to connect But ❌ &lt;strong&gt;Error&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fog1kx5e20sbtnweequae.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fog1kx5e20sbtnweequae.png" alt="Image description" width="800" height="84"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;7. Verifying SSH Setup Again&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Reinserted SD card into Mac&lt;/li&gt;
&lt;li&gt;Confirmed &lt;code&gt;ssh&lt;/code&gt; file still exists in &lt;code&gt;/Volumes/bootfs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Reinserted back into Pi and rebooted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Still, SSH failed. Possibly:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSH service didn’t start properly&lt;/li&gt;
&lt;li&gt;Raspberry Pi didn’t boot fully&lt;/li&gt;
&lt;li&gt;Network issue&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;8. Tried Accessing via Hostname&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;But ❌ &lt;strong&gt;Error&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1p7jyng3lpbgr0ayh0yo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1p7jyng3lpbgr0ayh0yo.png" alt="Image description" width="800" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔍 &lt;strong&gt;9.Diagnosis&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.local&lt;/code&gt; resolution via mDNS might be missing on Mac&lt;/li&gt;
&lt;li&gt;Or Raspberry Pi never fully booted&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📌 &lt;strong&gt;10. Final Status (Day-27 Recap)&lt;/strong&gt;
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SD Card flashed&lt;/td&gt;
&lt;td&gt;✅ Done&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSH file added&lt;/td&gt;
&lt;td&gt;✅ Done&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wi-Fi config (optional)&lt;/td&gt;
&lt;td&gt;✅ Skipped or Done&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Booted Pi&lt;/td&gt;
&lt;td&gt;✅ Boot attempted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detected IP via &lt;code&gt;nmap&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;✅ Partial&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSH connection established&lt;/td&gt;
&lt;td&gt;❌ Failed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hostname access (&lt;code&gt;.local&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;❌ Failed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Next: Servo wiring + script&lt;/td&gt;
&lt;td&gt;🔜 Pending&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🔜 Coming Up: Day-28
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;In the next post, we’ll &lt;strong&gt;troubleshoot Raspberry Pi SSH issues&lt;/strong&gt; step-by-step, verify if the OS is booting correctly, and check if the SSH service is running. Once resolved, we’ll test the &lt;strong&gt;Python servo script&lt;/strong&gt; and complete our &lt;strong&gt;cat feeder automation.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;#30DaysLinuxChallenge #CloudWhisler&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;#DevOps #Linux #RHCSA #Opensource #AWS #CloudComputing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Catch out by My LinkedIn profile&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/rajpreet-gill-4569b4161/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/rajpreet-gill-4569b4161/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>linux</category>
      <category>cloudwhislter</category>
    </item>
    <item>
      <title>⚔️ Day 26 Linux Challenge: grep, find, head, tail &amp; wc Edition</title>
      <dc:creator>Rajpreet Gill</dc:creator>
      <pubDate>Mon, 12 May 2025 19:31:53 +0000</pubDate>
      <link>https://forem.com/rajpreet_gill/day-26-linux-challenge-grep-find-head-tail-wc-edition-2776</link>
      <guid>https://forem.com/rajpreet_gill/day-26-linux-challenge-grep-find-head-tail-wc-edition-2776</guid>
      <description>&lt;p&gt;&lt;strong&gt;Welcome back to Day 26 of my #100DaysOfLinux challenge!&lt;br&gt;
Today, you're not just reading — you're playing along 🎮.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We’re diving deep into essential Linux CLI tools:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;head&lt;/code&gt; / &lt;code&gt;tail&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wc&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ready? Let’s go 💪&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🔧 Step 1: Create Your Sample File&lt;/li&gt;
&lt;li&gt;🚨 Challenge 1: grep Games&lt;/li&gt;
&lt;li&gt;🕵️‍♀️ Challenge 2: Find It Like a Pro&lt;/li&gt;
&lt;li&gt;📜 Challenge 3: Head &amp;amp; Tail of the Story&lt;/li&gt;
&lt;li&gt;🧪 Challenge 4: Count Me In (wc)&lt;/li&gt;
&lt;li&gt;🤖 Bonus Challenge: Find the Unmatched Lines&lt;/li&gt;
&lt;li&gt;🏆 Your Turn!&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;🔧 Step 1: Create Your Sample File&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before we jump into the challenges, let’s create a simple file with mixed log lines:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fou7doub5hgb56of3wgq1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fou7doub5hgb56of3wgq1.png" alt="Image description" width="800" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This file (&lt;code&gt;file.txt&lt;/code&gt;) will be our playground today.Then check with cat file.txt.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F68bhlcvq7vi77mlccrto.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F68bhlcvq7vi77mlccrto.png" alt="Image description" width="352" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎯 The Tools &amp;amp; Commands You’ll Use&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before the challenge, here's your weapon list:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Pattern matching (search inside files)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;find&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Locate files and folders&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;head&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Show beginning of files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tail&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Show end of files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;wc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Count words, lines, bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;🚨 Challenge 1: grep Games&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🎯 Task:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Find all lines that &lt;strong&gt;start&lt;/strong&gt; with "ERROR".&lt;/li&gt;
&lt;li&gt;Find lines that &lt;strong&gt;end&lt;/strong&gt; with "completed".&lt;/li&gt;
&lt;li&gt;Ignore case and search for "warning".&lt;/li&gt;
&lt;li&gt;Show lines that &lt;strong&gt;do not&lt;/strong&gt; contain "INFO".&lt;/li&gt;
&lt;li&gt;Count how many times "404" appears.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  💡 Hints:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjmykzekalnn686rqialp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjmykzekalnn686rqialp.png" alt="Image description" width="800" height="278"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;🕵️‍♀️ Challenge 2: Find It Like a Pro&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎯 Task:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Find all &lt;code&gt;.log&lt;/code&gt; files in &lt;code&gt;/var/log&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Find all &lt;code&gt;.sh&lt;/code&gt; files modified in the last 2 days.&lt;/li&gt;
&lt;li&gt;Find all empty &lt;code&gt;.txt&lt;/code&gt; files.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  💡 Hints:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnhytajb74es37verwu1a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnhytajb74es37verwu1a.png" alt="Image description" width="654" height="577"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📜 Challenge 3: Head &amp;amp; Tail of the Story
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🎯 Task:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Show the first 5 lines of a file.&lt;/li&gt;
&lt;li&gt;Show the last 15 lines.&lt;/li&gt;
&lt;li&gt;Watch a log file update live.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  💡 Hints:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6ehilyqgxlbfh9jnzxx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6ehilyqgxlbfh9jnzxx.png" alt="Image description" width="452" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh6dbuwl8p5yyd99mjve7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh6dbuwl8p5yyd99mjve7.png" alt="Image description" width="800" height="650"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Challenge 4: Count Me In (wc)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🎯 Task:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Count number of lines in a file.&lt;/li&gt;
&lt;li&gt;Count total words.&lt;/li&gt;
&lt;li&gt;Get line + word + byte count together.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  💡 Hints:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8pr5a4tvo7zu928vwiyb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8pr5a4tvo7zu928vwiyb.png" alt="Image description" width="441" height="141"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Bonus Challenge: Find the Unmatched Lines
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🎯 Task:
&lt;/h3&gt;

&lt;p&gt;You have two config files: &lt;code&gt;config.old&lt;/code&gt; and &lt;code&gt;config.new&lt;/code&gt;.&lt;br&gt;
Find which lines are in &lt;code&gt;config.old&lt;/code&gt; but &lt;strong&gt;not&lt;/strong&gt; in &lt;code&gt;config.new&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  💡 Hint:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;grep -v -F -x -f config.new config.old&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🏆 Your Turn!
&lt;/h2&gt;

&lt;p&gt;Pick any 3 challenges above and &lt;strong&gt;try them out in your terminal&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Then come back and drop a comment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Which one did you complete?&lt;/li&gt;
&lt;li&gt;🚤 Which one was hard?&lt;/li&gt;
&lt;li&gt;🚀 Which one was fun?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;#30DaysLinuxChallenge #CloudWhisler&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;DevOps #Linux #RHCSA #Opensource #AWS #CloudComputing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Catch out by My LinkedIn profile&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/rajpreet-gill-4569b4161/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/rajpreet-gill-4569b4161/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>linux</category>
      <category>devops</category>
      <category>cloudwhislter</category>
    </item>
    <item>
      <title>Scheduling Jobs, Managing Services &amp; Monitoring in Linux (Part-5)</title>
      <dc:creator>Rajpreet Gill</dc:creator>
      <pubDate>Sat, 10 May 2025 22:37:41 +0000</pubDate>
      <link>https://forem.com/rajpreet_gill/scheduling-jobs-managing-services-monitoring-in-linux-part-5-506i</link>
      <guid>https://forem.com/rajpreet_gill/scheduling-jobs-managing-services-monitoring-in-linux-part-5-506i</guid>
      <description>&lt;p&gt;&lt;strong&gt;We’ve made it to the final post in our 5-part Linux Essentials series!&lt;/strong&gt; In Part 5 of 5, we’ll explore how to &lt;strong&gt;automate tasks, manage system services, handle log files, and monitor system performance.&lt;/strong&gt; This section is especially useful for anyone managing production systems or looking to become a Linux system administrator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you’re just joining the series, check out our previous blogs to build your foundation!&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
1. Job Scheduling Commands
&lt;/li&gt;
&lt;li&gt;
2. System Services (systemd)
&lt;/li&gt;
&lt;li&gt;
3. Log Management Commands
&lt;/li&gt;
&lt;li&gt;
4. Monitoring &amp;amp; Performance
&lt;/li&gt;
&lt;li&gt;5. Tips for Efficient Linux Usage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;1. Job Scheduling Commands&lt;/strong&gt;&lt;br&gt;
Scenario: Bob wants to schedule a backup script to run every day at midnight.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdc19xyja3wzgm89bgi9n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdc19xyja3wzgm89bgi9n.png" alt="Image description" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. System Services (systemd)&lt;/strong&gt;&lt;br&gt;
Scenario: Raj wants to restart the Apache service after updating the config file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0jujb8r8jsrtzdhp06cd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0jujb8r8jsrtzdhp06cd.png" alt="Image description" width="800" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Log Management Commands&lt;/strong&gt;&lt;br&gt;
Scenario: Alice wants to review system logs to troubleshoot a failed login attempt.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvb9v0uimw23qns9i4p0c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvb9v0uimw23qns9i4p0c.png" alt="Image description" width="800" height="146"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Monitoring &amp;amp; Performance&lt;/strong&gt;&lt;br&gt;
Scenario: Raj needs to identify which process is consuming too much memory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexiwfjoez0mipmgrh6s6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexiwfjoez0mipmgrh6s6.png" alt="Image description" width="800" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Tips for Efficient Linux Usage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;cron&lt;/strong&gt; for recurring jobs, and at for one-time tasks.&lt;/li&gt;
&lt;li&gt;Regularly monitor &lt;strong&gt;logs&lt;/strong&gt; to detect issues early.&lt;/li&gt;
&lt;li&gt;Set alerts for &lt;strong&gt;high memory or CPU usage&lt;/strong&gt; using monitoring tools.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;systemctl&lt;/strong&gt; is &lt;strong&gt;-enabled &lt;/strong&gt; to check startup status of services.&lt;/li&gt;
&lt;li&gt;Learn to read log &lt;strong&gt;timestamps&lt;/strong&gt; and understand service-specific logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;#30DaysLinuxChallenge #CloudWhisler&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;DevOps #Linux #RHCSA #Opensource #AWS #CloudComputing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Catch out by My LinkedIn profile&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/rajpreet-gill-4569b4161/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/rajpreet-gill-4569b4161/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>linux</category>
      <category>cloudwhistler</category>
    </item>
    <item>
      <title>Essential Linux Commands (Part- 4)</title>
      <dc:creator>Rajpreet Gill</dc:creator>
      <pubDate>Sat, 10 May 2025 22:37:19 +0000</pubDate>
      <link>https://forem.com/rajpreet_gill/essential-linux-commands-part-4-4of</link>
      <guid>https://forem.com/rajpreet_gill/essential-linux-commands-part-4-4of</guid>
      <description>&lt;p&gt;👉 Welcome to &lt;strong&gt;Part 4 of 5 in our ongoing Linux essentials series!&lt;/strong&gt; In this part, we’ll dive into commands that help you inspect your &lt;strong&gt;system, manipulate text, and begin your journey into shell scripting and variables.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you haven’t read the earlier blogs, check them out for context:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Part 1:&lt;/strong&gt; Basic Commands, File &amp;amp; Directory Operations, Permissions&lt;br&gt;
&lt;strong&gt;Part 2:&lt;/strong&gt; User Management, Processes, Disk &amp;amp; File System&lt;br&gt;
&lt;strong&gt;Part 3:&lt;/strong&gt; Archiving, Networking, and Package Management&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📚 Table of Contents&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
1. System Information Commands
&lt;/li&gt;
&lt;li&gt;
2. Text Processing Commands
&lt;/li&gt;
&lt;li&gt;
3. Shell Scripting and Variables
&lt;/li&gt;
&lt;li&gt;4. Tips for Efficient Linux Usage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;1. System Information Commands:&lt;/strong&gt;&lt;br&gt;
Scenario: Maya wants to audit a Linux VM before deploying a new application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnebh69i6yniywbmb01e7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnebh69i6yniywbmb01e7.png" alt="Image description" width="800" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Text Processing Commands:&lt;/strong&gt;&lt;br&gt;
Scenario: Rajpreet is working with logs and needs to analyze patterns in large text files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh7ssmvg81xv7k1xv9x3y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh7ssmvg81xv7k1xv9x3y.png" alt="Image description" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Shell Scripting and Variables:&lt;/strong&gt;&lt;br&gt;
Scenario: Alice wants to automate daily log archiving and add user-specific variables.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fof9323gdnjifaqiq5p5t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fof9323gdnjifaqiq5p5t.png" alt="Image description" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Tips for Efficient Linux Usage:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep scripts modular&lt;/strong&gt; – Write reusable functions and comment your code.&lt;/li&gt;
&lt;li&gt;Always test &lt;strong&gt;sed&lt;/strong&gt; and &lt;strong&gt;awk&lt;/strong&gt; on sample files before applying on production data.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;top, htop,&lt;/strong&gt; or uptime regularly to understand system load and resource usage.&lt;/li&gt;
&lt;li&gt;Schedule your &lt;strong&gt;shell scripts&lt;/strong&gt; with cron for automation (covered in Part 5).&lt;/li&gt;
&lt;li&gt;Practice creating real-world scripts &lt;strong&gt;like backups, monitoring tools, or file renamers.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;#30DaysLinuxChallenge #CloudWhisler&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;DevOps #Linux #RHCSA #Opensource #AWS #CloudComputing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Catch out by My LinkedIn profile&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/rajpreet-gill-4569b4161/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/rajpreet-gill-4569b4161/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>linux</category>
      <category>devops</category>
      <category>cloudwhistler</category>
    </item>
    <item>
      <title>Archiving, Networking, and Package Management in Linux (Part-3)</title>
      <dc:creator>Rajpreet Gill</dc:creator>
      <pubDate>Sat, 10 May 2025 22:36:57 +0000</pubDate>
      <link>https://forem.com/rajpreet_gill/archiving-networking-and-package-management-in-linux-part-3-1k7l</link>
      <guid>https://forem.com/rajpreet_gill/archiving-networking-and-package-management-in-linux-part-3-1k7l</guid>
      <description>&lt;p&gt;👉 Welcome to &lt;strong&gt;Part 3 of 5 in our Linux Essentials series!&lt;/strong&gt; This blog dives into the world of &lt;strong&gt;archiving and comparing files, networking commands, and managing packages across different Linux distributions.&lt;/strong&gt; We will look at how these commands are used in real-world scenarios to handle file compression, system communication, and package management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you haven’t read the earlier blogs, check them out for context:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Part 1:&lt;/strong&gt; Basic Commands, File &amp;amp; Directory Operations, Permissions&lt;br&gt;
&lt;strong&gt;Part 2:&lt;/strong&gt; User Management, Processes, Disk &amp;amp; File System&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Table of Contents&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
Archiving and Compression Commands
&lt;/li&gt;
&lt;li&gt;
Networking Commands
&lt;/li&gt;
&lt;li&gt;
Package Management (Debian/Ubuntu)
&lt;/li&gt;
&lt;li&gt;
Package Management (RHEL/CentOS/Fedora)
&lt;/li&gt;
&lt;li&gt;
Tips for Efficient Linux Usage
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1. Archiving and Compression Commands:&lt;/strong&gt;&lt;br&gt;
Scenario: Alice is backing up her project files and compressing them for storage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpeepgl4igc84dzwlccca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpeepgl4igc84dzwlccca.png" alt="Image description" width="800" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Networking Commands:&lt;/strong&gt;&lt;br&gt;
Scenario: Raj is troubleshooting the network connection between two servers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxszn4ddalebzekgba1lp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxszn4ddalebzekgba1lp.png" alt="Image description" width="800" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Package Management (Debian/Ubuntu):&lt;/strong&gt;&lt;br&gt;
Scenario: Alice needs to install a package on her Ubuntu server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fek33f634rokct1zpwlej.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fek33f634rokct1zpwlej.png" alt="Image description" width="800" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Package Management (RHEL/CentOS/Fedora):&lt;/strong&gt;&lt;br&gt;
Scenario: Bob is managing packages on a CentOS server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65p7zj8xjkdgmdx8ztjk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65p7zj8xjkdgmdx8ztjk.png" alt="Image description" width="800" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Tips for Efficient Linux Usage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use tar for backups:&lt;/strong&gt; tar is highly efficient for creating backups and handling file compression. Always use -&lt;strong&gt;cvf&lt;/strong&gt; for creating archives and &lt;strong&gt;-xvf&lt;/strong&gt; for extraction to keep things clear.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Combine ping and traceroute:&lt;/strong&gt; When troubleshooting network connectivity, use ping to check if a server is &lt;strong&gt;reachable&lt;/strong&gt; and &lt;strong&gt;traceroute&lt;/strong&gt; to see the path packets take, identifying where delays occur.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automate package updates:&lt;/strong&gt; On Debian-based systems, use &lt;strong&gt;sudo apt update&lt;/strong&gt; &amp;amp;&amp;amp; &lt;strong&gt;sudo apt upgrade -y&lt;/strong&gt; to automate updates. On RHEL-based systems, &lt;strong&gt;yum update -y&lt;/strong&gt; does the same.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learn scp for secure file transfer:&lt;/strong&gt; scp (secure copy) is a simple way to transfer files between local and remote servers. It’s very useful for quick backups or file sharing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Always check dependencies:&lt;/strong&gt; Before removing or upgrading packages, make sure to check for dependencies with &lt;strong&gt;apt-cache&lt;/strong&gt; show package-name on &lt;strong&gt;Ubuntu/Debian&lt;/strong&gt; or &lt;strong&gt;yum deplist package-name&lt;/strong&gt; on &lt;strong&gt;RHEL/CentOS&lt;/strong&gt; to avoid breaking important software.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;#30DaysLinuxChallenge #CloudWhisler&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;#DevOps #Linux #RHCSA #Opensource #AWS #CloudComputing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Catch out by My LinkedIn profile&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/rajpreet-gill-4569b4161/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/rajpreet-gill-4569b4161/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>linux</category>
      <category>cloudwhislter</category>
    </item>
    <item>
      <title>Managing Users, Processes, and Disk in Linux (Part-2)</title>
      <dc:creator>Rajpreet Gill</dc:creator>
      <pubDate>Sat, 10 May 2025 22:36:32 +0000</pubDate>
      <link>https://forem.com/rajpreet_gill/managing-users-processes-and-disk-in-linux-part-2-1lhh</link>
      <guid>https://forem.com/rajpreet_gill/managing-users-processes-and-disk-in-linux-part-2-1lhh</guid>
      <description>&lt;p&gt;👉 Let’s continue our &lt;strong&gt;5-part Linux essentials series!&lt;/strong&gt; We’re now on &lt;strong&gt;Part 2 of 5&lt;/strong&gt;, where we’ll explore and learn more vital Linux commands. In this blog, we’ll cover how to manage &lt;strong&gt;users and groups, handle processes, and examine disk and file system usage.&lt;/strong&gt; Just like before, real-world scenarios and practical tips are included to help reinforce your learning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you haven’t read the earlier blogs, check them out for context:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Part 1:&lt;/strong&gt; Basic Commands, File &amp;amp; Directory Operations, Permissions&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Table of Contents&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1. User &amp;amp; Group Management&lt;br&gt;
2. Process Management&lt;br&gt;
3. Disk and File System Commands&lt;br&gt;
4. Tips for Efficient Linux Usage&lt;/p&gt;

&lt;h3&gt;
  
  
  1. User &amp;amp; Group Management
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Scenario: Bob is setting up a shared Linux environment for his development team.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5msze2orz5niwd7h41hz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5msze2orz5niwd7h41hz.png" alt="Image description" width="800" height="202"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;2. Process Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Scenario: Raj is troubleshooting why his Python script is using too much CPU.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2m94ff8fdtfu9psrei64.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2m94ff8fdtfu9psrei64.png" alt="Image description" width="800" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Disk and File System Commands&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Scenario: Alice wants to check disk space before uploading large files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9t47uhgxl2rit1dev0l5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9t47uhgxl2rit1dev0l5.png" alt="Image description" width="800" height="165"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👀 Tips for Efficient Linux Usage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;htop&lt;/strong&gt; instead of &lt;strong&gt;top&lt;/strong&gt; for a more user-friendly process manager.&lt;/li&gt;
&lt;li&gt;Combine watch with &lt;strong&gt;any command&lt;/strong&gt; to monitor changes over time (e.g., watch df -h).&lt;/li&gt;
&lt;li&gt;Always &lt;strong&gt;back up&lt;/strong&gt; important configuration files before modifying them.&lt;/li&gt;
&lt;li&gt;Learn about &lt;strong&gt;sudo&lt;/strong&gt; and least privilege—only elevate when required.&lt;/li&gt;
&lt;li&gt;Practice using &lt;strong&gt;man &lt;/strong&gt; to explore deeper details of any tool.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;#30DaysLinuxChallenge #CloudWhisler&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;#DevOps #Linux #RHCSA #Opensource #AWS #CloudComputing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Catch out by My LinkedIn profile&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/rajpreet-gill-4569b4161/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/rajpreet-gill-4569b4161/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>linux</category>
      <category>cloudwhislter</category>
    </item>
    <item>
      <title>Mastering Basic Linux Skills: Commands, File Operations &amp; Permissions (Part-1)</title>
      <dc:creator>Rajpreet Gill</dc:creator>
      <pubDate>Sat, 10 May 2025 22:36:08 +0000</pubDate>
      <link>https://forem.com/rajpreet_gill/mastering-basic-linux-skills-commands-file-operations-permissions-part-1-5ajj</link>
      <guid>https://forem.com/rajpreet_gill/mastering-basic-linux-skills-commands-file-operations-permissions-part-1-5ajj</guid>
      <description>&lt;p&gt;&lt;strong&gt;👉 Getting Started with Linux: No Prior Knowledge Needed&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;I'm launching a 5-part series that covers all the essential Linux commands&lt;/strong&gt; —from the absolute basics to advanced system administration tools.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This blog kicks off a series dedicated to &lt;strong&gt;mastering essential Linux commands&lt;/strong&gt;. If you’ve never used Linux before or feel lost when you open the terminal, &lt;strong&gt;don’t worry&lt;/strong&gt; —&lt;strong&gt;you’re in the right place&lt;/strong&gt;. Even if you have &lt;strong&gt;no idea what Linux is&lt;/strong&gt;, just follow along and try each command in your terminal. &lt;strong&gt;Think of this as a hands-on journey:&lt;/strong&gt; you’ll learn by doing, and before you know it, you’ll be navigating your system like a pro. &lt;strong&gt;Let’s get started!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Table of Contents&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
 Basic Linux Commands
&lt;/li&gt;
&lt;li&gt;
 File and Directory Operations
&lt;/li&gt;
&lt;li&gt;
 File Permission &amp;amp; Ownership &lt;/li&gt;
&lt;li&gt;
 Tips for Efficient Linux Usage &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;1. Basic Linux Commands&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; Bob just installed Linux and wants to explore his system&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3m8nodwa55xhg2z2e3tx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3m8nodwa55xhg2z2e3tx.png" alt="Image description" width="774" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. File and Directory Operations&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; Alice is organizing files for her web development project&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flr3i6zzv47c3104hmtke.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flr3i6zzv47c3104hmtke.png" alt="Image description" width="800" height="237"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. File Permission &amp;amp; Ownership&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; Raj needs to make sure his script is executable before deploying it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdqmf8ju9gtdq1qgfffl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbdqmf8ju9gtdq1qgfffl.png" alt="Image description" width="800" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👀 Tips for Beginners&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don’t be afraid to use &lt;strong&gt;man &lt;/strong&gt; to explore manual pages.&lt;/li&gt;
&lt;li&gt;Use clear to &lt;strong&gt;reset&lt;/strong&gt; your terminal view quickly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remember:&lt;/strong&gt; rm deletes files permanently—double-check before hitting enter!&lt;/li&gt;
&lt;li&gt;Use tab for auto-completion of filenames or directories.&lt;/li&gt;
&lt;li&gt;Practice using &lt;strong&gt;ls -l&lt;/strong&gt; and &lt;strong&gt;pwd&lt;/strong&gt; regularly—it builds confidence navigating Linux.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;#30DaysLinuxChallenge #CloudWhisler&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;DevOps #Linux #RHCSA #Opensource #AWS #CloudComputing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Catch out by My LinkedIn profile&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/rajpreet-gill-4569b4161/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/rajpreet-gill-4569b4161/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>linux</category>
      <category>devops</category>
      <category>cloudwhislter</category>
    </item>
    <item>
      <title>🧒🐧 Linux for Kids: From Terminal Tetris to Bash Scripting – A Parent–Child Adventure</title>
      <dc:creator>Rajpreet Gill</dc:creator>
      <pubDate>Fri, 09 May 2025 04:19:17 +0000</pubDate>
      <link>https://forem.com/rajpreet_gill/linux-for-kids-from-terminal-tetris-to-bash-scripting-a-parent-child-adventure-ch1</link>
      <guid>https://forem.com/rajpreet_gill/linux-for-kids-from-terminal-tetris-to-bash-scripting-a-parent-child-adventure-ch1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Wait… did your kid just open the terminal and run a script?"&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Yup. And they also beat me at bastet last night.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🎮 Step 1: The Game That Started It All – bastet&lt;/li&gt;
&lt;li&gt;🛠️ Step 2: Hello, Bash Scripting!&lt;/li&gt;
&lt;li&gt;💡 The “Wow” Moments&lt;/li&gt;
&lt;li&gt;🔚 In a Nutshell&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🎮 Step 1: The Game That Started It All – bastet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Forget &lt;strong&gt;flashy graphics&lt;/strong&gt; or &lt;strong&gt;touchscreens&lt;/strong&gt;. &lt;strong&gt;My 10-year-old’s&lt;/strong&gt; first deep dive into Linux wasn’t through Minecraft mods—it was with &lt;strong&gt;Bastard Tetris&lt;/strong&gt; (bastet) on the command line.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiobhrnwge8bdd9bi8dfq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiobhrnwge8bdd9bi8dfq.png" alt="Image description" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This isn’t your regular Tetris. &lt;strong&gt;It’s evil&lt;/strong&gt;. It deliberately gives you the worst pieces possible, and watching my kid giggle every time the dreaded &lt;strong&gt;S-piece&lt;/strong&gt; dropped again was pure joy.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“This game is cheating!”&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;“Exactly. Welcome to the terminal.”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🎉 &lt;strong&gt;It kind of looks like Candy Crush, my kid said, except it's all keyboard and no tapping.&lt;/strong&gt;&lt;br&gt;
And you know what? It does. &lt;strong&gt;The falling blocks, the puzzle logic—it&lt;/strong&gt; feels like the retro hacker version of our favorite Android games.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But here's the twist:&lt;/strong&gt; this wasn’t just about playing. It was about typing commands, understanding &lt;strong&gt;apt install&lt;/strong&gt;, and realizing you can make your computer do cool stuff without ever clicking a mouse. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnpb6zyelubcf31zi9lbd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnpb6zyelubcf31zi9lbd.png" alt="Image description" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;First, you'll see a few options on the screen—just select "Play with normal version" to get started. If you're feeling brave, you can try the harder version too!&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Use your keyboard arrow keys—especially the Up and Right arrows—to rotate and move the blocks. It’s a fun challenge and feels surprisingly familiar if you’ve ever played puzzle games like Candy Crush on Android.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs12mvd6i93d6gsst74nr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs12mvd6i93d6gsst74nr.png" alt="Image description" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbqvxge3wgzvok55l6kl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbqvxge3wgzvok55l6kl.png" alt="Image description" width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If you lose, no worries—you can press the Enter key to select "Play" and jump right back in. Just like any great game, you can keep trying again and again!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hijt9yz6qe6pbjwgekk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hijt9yz6qe6pbjwgekk.png" alt="Image description" width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🛠️ Step 2: Hello, Bash Scripting!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After getting hooked on &lt;strong&gt;bastet&lt;/strong&gt;, the next day came the inevitable:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Terminal Playground – Fun Commands to Explore&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Can I make my own command?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Absolutely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We wrote our first Bash script(Bash.sh) together—a little program that:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cowsay &lt;strong&gt;"Linux is Awesome!"&lt;/strong&gt; – ASCII cow says your message 🐄&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;fortune | cowsay&lt;/strong&gt; – Combine with a random quote&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;sl&lt;/strong&gt; – A steam train chugs across the screen (install via sudo apt install sl)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;figlet Hello&lt;/strong&gt; – Large ASCII text&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvbiwul8ioh3hvp4fqaa1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvbiwul8ioh3hvp4fqaa1.png" alt="Image description" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Then: Run the Bash.sh&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedogcvg1dk2jj84mxgdb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedogcvg1dk2jj84mxgdb.png" alt="Image description" width="627" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And just like that—boom 💥—they created their first program&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Similarly, They tried &lt;strong&gt;Hello, CloudWhislter community, Linux is Awesome.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48rhqt9vju992kdgwnvk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48rhqt9vju992kdgwnvk.png" alt="Image description" width="685" height="598"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 The “Wow” Moments:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here’s what made this special:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No GUI&lt;/strong&gt;, &lt;strong&gt;no noise&lt;/strong&gt;—just pure logic, creativity, and feedback.&lt;/li&gt;
&lt;li&gt;They saw the filesystem like a &lt;strong&gt;map&lt;/strong&gt; and used &lt;strong&gt;commands&lt;/strong&gt; to explore.&lt;/li&gt;
&lt;li&gt;They &lt;strong&gt;typed code&lt;/strong&gt;, &lt;strong&gt;ran it&lt;/strong&gt;, and saw results instantly.&lt;/li&gt;
&lt;li&gt;It wasn't just playing games or copying lines—&lt;strong&gt;it was owning the keyboard.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🔚 In a Nutshell:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What started as a simple game turned into a &lt;strong&gt;full-blown adventure—one&lt;/strong&gt; where &lt;strong&gt;my 10-year-old **learned to navigate the **Linux terminal&lt;/strong&gt;, &lt;strong&gt;play puzzle games&lt;/strong&gt; with just a &lt;strong&gt;keyboard&lt;/strong&gt;, and even write their first &lt;strong&gt;Bash script&lt;/strong&gt;. With the right tools and a little creativity, Linux becomes more than an operating system— &lt;strong&gt;it becomes a playground for young minds.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you’re a parent, a teacher, or just someone curious about introducing tech to kids, start small. One game, one script, one “Wow” moment at a time. 🧠💡&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#30DaysLinuxChallenge #CloudWhisler&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;DevOps #Linux #RHCSA #Opensource #AWS #CloudComputing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Catch out by My LinkedIn profile&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/rajpreet-gill-4569b4161/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/rajpreet-gill-4569b4161/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>linux</category>
      <category>cloudwhislter</category>
    </item>
    <item>
      <title>🧱 iptables Demystified: Build a Firewall Like a Hacker (But For Good)</title>
      <dc:creator>Rajpreet Gill</dc:creator>
      <pubDate>Wed, 07 May 2025 23:26:11 +0000</pubDate>
      <link>https://forem.com/rajpreet_gill/iptables-demystified-build-a-firewall-like-a-hacker-but-for-good-1b36</link>
      <guid>https://forem.com/rajpreet_gill/iptables-demystified-build-a-firewall-like-a-hacker-but-for-good-1b36</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;"Ever accidentally locked yourself out of your own server? Yeah, me too. Let's fix that.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;👀 What’s This All About?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine your Linux server is a castle. You’re the ruler (root user), but you’ve left the front gates wide open. &lt;strong&gt;Anyone — bots, hackers, curious squirrels — can walk in.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;iptables&lt;/strong&gt;, the grumpy gatekeeper with a clipboard. You give him rules, and he checks every visitor (aka network packet). Only the worthy get through.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Whether you're:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt; Spinning up cloud VMs&lt;/li&gt;
&lt;li&gt; Hosting your app backend&lt;/li&gt;
&lt;li&gt; Dealing with pesky port scanners&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;..you need to understand &lt;strong&gt;iptables.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧭 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;⚔️ Why Should Developers or DevOps Folks Care?&lt;/li&gt;
&lt;li&gt;📦 The Core Concept: Tables and Chains&lt;/li&gt;
&lt;li&gt;🚀 Quickstart: Playing with Fire (Safely)&lt;/li&gt;
&lt;li&gt;✅ Test: Check Listening Ports on the Server&lt;/li&gt;
&lt;li&gt;📘 Pro Tip: Save Your Rules&lt;/li&gt;
&lt;li&gt;🐳 Wait, What About Docker?&lt;/li&gt;
&lt;li&gt;🔥 Real-World Example: Lock Down Your Web Server&lt;/li&gt;
&lt;li&gt;🧠 Bonus: Things Most People Forget&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;⚔️ Why Should Developers or DevOps Folks Care?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because security isn’t optional anymore.&lt;/p&gt;

&lt;p&gt;If you're running anything public-facing — &lt;strong&gt;from APIs to static sites&lt;/strong&gt; — and not filtering traffic, you're just hoping the internet will be nice to you. Spoiler: &lt;strong&gt;It won’t.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎯 So, What Exactly Is iptables?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;🔧 A command-line firewall tool for Linux.&lt;/li&gt;
&lt;li&gt;🧠 Works with netfilter, part of the kernel.&lt;/li&gt;
&lt;li&gt;🔐 Lets you filter, allow, block, or reroute traffic based on rules you define.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;📦 The Core Concept: Tables and Chains&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Think of it like a mailroom with three conveyor belts:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2mto6pfbdbho98ech7pz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2mto6pfbdbho98ech7pz.png" alt="Image description" width="800" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each chain is part of a table &lt;strong&gt;(usually filter, nat, or mangle), and rules are just... filters.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚀 Quickstart: Playing with Fire (Safely)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧼 Step 1: List Your Current Rules:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4lhcfxlvd5r4cbblufpz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4lhcfxlvd5r4cbblufpz.png" alt="Image description" width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll see existing rules, packet counts, and a lot of &lt;strong&gt;“ACCEPT”&lt;/strong&gt; if it’s the default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Step 2: Allow Traffic to Port 80 (HTTP):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm2qya8wmmyx63os0cacn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm2qya8wmmyx63os0cacn.png" alt="Image description" width="745" height="26"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🗣️ Translation:&lt;/strong&gt; “Allow TCP traffic coming to port 80.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔒 Step 3: Drop All Other Incoming Traffic (except SSH)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowjclx1htpv6d5yh44ev.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowjclx1htpv6d5yh44ev.png" alt="Image description" width="535" height="47"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👻 Don’t lock yourself out! Always allow SSH before setting a DROP policy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;❌ Step 4: Block a Specific IP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fps5ifwwcvkdfoy03e2re.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fps5ifwwcvkdfoy03e2re.png" alt="Image description" width="718" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🪓 Bye-bye, botnet!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Test: Check Listening Ports on the Server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Run this on your Linux server to make sure services are actually listening on those ports:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxsl484zko386f2ia9ntp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxsl484zko386f2ia9ntp.png" alt="Image description" width="759" height="77"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📘 Pro Tip: Save Your Rules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Otherwise, they disappear on reboot.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzzfzq2jxu6fpnn5lc778.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzzfzq2jxu6fpnn5lc778.png" alt="Image description" width="752" height="97"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Or for systemd-based distros:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2j5ext8khqk0q6phewt6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2j5ext8khqk0q6phewt6.png" alt="Image description" width="601" height="83"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🐳 Wait, What About Docker?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt; loves iptables. It auto-writes rules to make containers talk to each other.&lt;/p&gt;

&lt;p&gt;But sometimes it messes with your custom rules. If you’re managing rules manually, consider:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48ndipqfcul7glpq8enx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48ndipqfcul7glpq8enx.png" alt="Image description" width="496" height="80"&gt;&lt;/a&gt;&lt;br&gt;
(Use with caution. You're taking control.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔥 Real-World Example: Lock Down Your Web Server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2sm7p46brgyfhbow6w0v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2sm7p46brgyfhbow6w0v.png" alt="Image description" width="800" height="477"&gt;&lt;/a&gt;&lt;br&gt;
Boom 💥 — you've just built a basic fortress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🧠 Bonus: Things Most People Forget&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Always test in a VM first. Recovery from &lt;strong&gt;DROP-everything-without-SSH is painful.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;conntrack&lt;/strong&gt; to maintain &lt;strong&gt;state-aware&lt;/strong&gt; firewalls.&lt;/li&gt;
&lt;li&gt;Pair with &lt;strong&gt;fail2ban&lt;/strong&gt; to &lt;strong&gt;auto-ban brute-force attackers.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;iptables is being replaced by &lt;strong&gt;nftables&lt;/strong&gt; in some &lt;strong&gt;distros&lt;/strong&gt; — but iptables is still everywhere.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;👋 Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You don’t have to be a networking wizard to use &lt;strong&gt;iptables.&lt;/strong&gt; Think of it like a programmable bouncer for your apps. Learn the basics, write a few rules, save yourself from disaster.&lt;/p&gt;

&lt;p&gt;Because firewalls aren't just for enterprise security teams. They're for &lt;strong&gt;you&lt;/strong&gt;, too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;#30DaysLinuxChallenge #CloudWhisler&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;DevOps #Linux #RHCSA #Opensource #AWS #CloudComputing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Catch out by My LinkedIn profile&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/rajpreet-gill-4569b4161/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/rajpreet-gill-4569b4161/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>linux</category>
      <category>cloudwhistler</category>
    </item>
  </channel>
</rss>
