<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Oliver Bennet</title>
    <description>The latest articles on DEV Community by Oliver Bennet (@oliverbennet).</description>
    <link>https://dev.to/oliverbennet</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%2F2119733%2F15df75c7-0049-4df5-a28b-1ca0941701f4.jpeg</url>
      <title>DEV Community: Oliver Bennet</title>
      <link>https://dev.to/oliverbennet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/oliverbennet"/>
    <language>en</language>
    <item>
      <title>Automate Repetitive Tasks: Creating Bash Scripts for Everyday Use 🚀</title>
      <dc:creator>Oliver Bennet</dc:creator>
      <pubDate>Thu, 05 Dec 2024 07:52:49 +0000</pubDate>
      <link>https://dev.to/oliverbennet/automate-repetitive-tasks-creating-bash-scripts-for-everyday-use-3pgl</link>
      <guid>https://dev.to/oliverbennet/automate-repetitive-tasks-creating-bash-scripts-for-everyday-use-3pgl</guid>
      <description>&lt;p&gt;&lt;strong&gt;Did you know?&lt;/strong&gt; IT professionals spend a significant portion of their time on repetitive tasks. Imagine reclaiming that time to focus on innovation and strategic goals. That’s exactly what Bash scripting can help you achieve! 💡&lt;/p&gt;

&lt;p&gt;In this post, I'll give you a sneak peek into the power of Bash scripting and share why learning it is an essential skill for developers, sysadmins, and automation enthusiasts alike.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Learn Bash Scripting?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Bash scripting is the Swiss Army knife of automation. Whether you're managing servers, processing data, or performing routine system tasks, Bash lets you:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🕒 Save time by automating repetitive workflows.&lt;br&gt;
🤖 Reduce human error with consistent execution.&lt;br&gt;
💻 Empower your Linux experience by turning commands into powerful scripts.&lt;/p&gt;
&lt;h2&gt;
  
  
  What You’ll Learn in the Full Guide
&lt;/h2&gt;

&lt;p&gt;🔗 In my detailed article, I cover:&lt;/p&gt;

&lt;p&gt;🧱 &lt;strong&gt;Building Blocks of Bash:&lt;/strong&gt; Variables, loops, conditionals, and functions.&lt;br&gt;
⚙️ &lt;strong&gt;Real-World Examples:&lt;/strong&gt; Automating backups, system updates, and log monitoring.&lt;br&gt;
🚀 &lt;strong&gt;Advanced Techniques:&lt;/strong&gt; Error handling, logging, and integrating with tools like jq and cron.&lt;br&gt;
✨ &lt;strong&gt;Best Practices:&lt;/strong&gt; How to write clean, reusable, and efficient scripts.&lt;/p&gt;
&lt;h2&gt;
  
  
  Who Should Read This?
&lt;/h2&gt;

&lt;p&gt;This guide is perfect for:&lt;/p&gt;

&lt;p&gt;👶 &lt;strong&gt;Beginners&lt;/strong&gt; looking to learn Bash scripting from scratch.&lt;br&gt;
🛠️ &lt;strong&gt;Intermediate users&lt;/strong&gt; who want to enhance their automation skills.&lt;br&gt;
🌟 &lt;strong&gt;Professionals&lt;/strong&gt; aiming to streamline their workflows and boost productivity.&lt;/p&gt;
&lt;h2&gt;
  
  
  Ready to Master Automation?
&lt;/h2&gt;

&lt;p&gt;👉 Read the Full Guide: &lt;a href="https://graphpe.medium.com/automate-repetitive-tasks-creating-bash-scripts-for-everyday-use-8def9a069ea6" rel="noopener noreferrer"&gt;Automate Repetitive Tasks: Creating Bash Scripts for Everyday Use&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/automate-repetitive-tasks-creating-bash-scripts-for-everyday-use-8def9a069ea6" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/automate-repetitive-tasks-creating-bash-scripts-for-everyday-use-8def9a069ea6" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Automate Repetitive Tasks: Creating Bash Scripts for Everyday Use | by Oliver Bennet | Dec, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Dec 5, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Feel free to ask questions, share your favorite Bash tricks, or suggest what you'd like to see in future posts. Let’s make automation accessible and fun! 💬&lt;/p&gt;

&lt;p&gt;If you find this helpful, don’t forget to leave a reaction ❤️, comment, and share to help others discover the magic of Bash scripting!&lt;/p&gt;

</description>
      <category>bash</category>
      <category>linux</category>
      <category>archlinux</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Bash Basics: A Beginner’s Guide to Shell Scripting</title>
      <dc:creator>Oliver Bennet</dc:creator>
      <pubDate>Wed, 04 Dec 2024 12:31:23 +0000</pubDate>
      <link>https://dev.to/oliverbennet/bash-basics-a-beginners-guide-to-shell-scripting-n31</link>
      <guid>https://dev.to/oliverbennet/bash-basics-a-beginners-guide-to-shell-scripting-n31</guid>
      <description>&lt;p&gt;&lt;strong&gt;Did you know that over 90% of the world's supercomputers run on Linux&lt;/strong&gt;. Behind the seamless performance of these systems lies the power of Bash scripting. From automating repetitive tasks to orchestrating complex workflows, Bash scripting is a cornerstone of system administration and development.&lt;/p&gt;

&lt;p&gt;Whether you're managing servers, configuring systems, or simply looking to make your day-to-day tasks more efficient, learning Bash scripting can open doors to endless possibilities. we will talk about the step by step into the world of Bash scripting, making it approachable for absolute beginners.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. What is Bash Scripting?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Bash scripting&lt;/strong&gt; involves writing a sequence of commands in a plain text file and executing them in the Bourne Again Shell (Bash). Bash is the default shell on most Linux distributions, and it allows users to interact with the system via the command line or scripts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Bash?&lt;/strong&gt;&lt;br&gt;
Bash is widely regarded as the standard for scripting because of its:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Use&lt;/strong&gt;: It simplifies command-line tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ubiquity&lt;/strong&gt;: Installed by default on most Unix-like systems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Versatility&lt;/strong&gt;: Can automate tasks ranging from simple file manipulations to complex system monitoring.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For instance, instead of typing multiple commands to back up files every day, you can write a Bash script to do it automatically.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Getting Started with Bash
&lt;/h2&gt;

&lt;p&gt;Before diving into scripting, let’s set up the basics:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Create a Bash Script&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open a text editor (e.g., nano, vim, or gedit).&lt;/li&gt;
&lt;li&gt;Write your commands in the file.&lt;/li&gt;
&lt;li&gt;Save the file with a .sh extension (e.g., myscript.sh).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Making the Script Executable&lt;/strong&gt;&lt;br&gt;
To run your script, you need to make it executable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x myscript.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Running a Script&lt;/strong&gt;&lt;br&gt;
Execute the script with:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./myscript.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;First Script Example&lt;/strong&gt;&lt;br&gt;
Here’s a simple script that prints "Hello, World!" to the terminal:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="c"&gt;# This is a comment&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hello, World!"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;#!/bin/bash:&lt;/strong&gt; This shebang line tells the system to use Bash to interpret the script.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;echo:&lt;/strong&gt; A command to print text to the terminal.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  3. Understanding Bash Basics
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Variables&lt;/strong&gt;&lt;br&gt;
Variables store data for reuse.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Alice"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hello, &lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt;!"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Variables are case-sensitive.&lt;/li&gt;
&lt;li&gt;Use $ to access the variable’s value.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;User Input&lt;/strong&gt;&lt;br&gt;
Read user input with the read command:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter your name:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;name
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Welcome, &lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt;!"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Conditional Statements&lt;/strong&gt;&lt;br&gt;
Bash supports if-else constructs for decision-making:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Enter a number:"&lt;/span&gt;
&lt;span class="nb"&gt;read &lt;/span&gt;number
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$number&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; 10 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"The number is greater than 10."&lt;/span&gt;
&lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"The number is 10 or less."&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;[ ]: Tests conditions.&lt;/li&gt;
&lt;li&gt;-gt: Greater than.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Loops&lt;/strong&gt;&lt;br&gt;
Automate repetitive tasks using loops.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Loop&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;1..5&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;do
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Number: &lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;While Loop&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nv"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$count&lt;/span&gt; &lt;span class="nt"&gt;-le&lt;/span&gt; 5 &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;do
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Count: &lt;/span&gt;&lt;span class="nv"&gt;$count&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="o"&gt;((&lt;/span&gt;count++&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  4. Practical Applications
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;File Operations&lt;/strong&gt;&lt;br&gt;
Automate file management tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create a File&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;touch &lt;/span&gt;myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check If a File Exists&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; myfile.txt &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"File exists."&lt;/span&gt;
&lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"File does not exist."&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Automated Backups&lt;/strong&gt;&lt;br&gt;
Create a backup of a directory:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/home/user/documents"&lt;/span&gt;
&lt;span class="nv"&gt;dest&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/home/user/backup"&lt;/span&gt;
&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-czf&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$dest&lt;/span&gt;&lt;span class="s2"&gt;/backup_&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%F&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;.tar.gz"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$src&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Backup completed."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;System Monitoring&lt;/strong&gt;&lt;br&gt;
Monitor disk usage:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nv"&gt;usage&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt; / | &lt;span class="nb"&gt;grep&lt;/span&gt; / | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{print $5}'&lt;/span&gt; | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/%//'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$usage&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; 80 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Warning: Disk usage is at &lt;/span&gt;&lt;span class="nv"&gt;$usage&lt;/span&gt;&lt;span class="s2"&gt;%!"&lt;/span&gt;
&lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Disk usage is under control at &lt;/span&gt;&lt;span class="nv"&gt;$usage&lt;/span&gt;&lt;span class="s2"&gt;%."&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  5. Best Practices in Bash Scripting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use Comments: Explain your code for readability.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# This script checks disk usage&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Error Handling: Anticipate and handle errors gracefully.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$src&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Source directory does not exist."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Avoid Hardcoding:&lt;/strong&gt; Use variables for paths and configurations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Indentation:&lt;/strong&gt; Keep your code organized.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  6. Debugging and Troubleshooting
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Debugging Tips&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run the script in debug mode:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bash &lt;span class="nt"&gt;-x&lt;/span&gt; myscript.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Check for Syntax errors
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bash &lt;span class="nt"&gt;-n&lt;/span&gt; myscript.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Common Errors&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Permission Denied:&lt;/strong&gt; Ensure the script is executable with chmod +x.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Command Not Found:&lt;/strong&gt; Verify the script’s shebang line and paths.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  7. Expanding Your Skills
&lt;/h2&gt;

&lt;p&gt;As you grow more comfortable with Bash scripting, explore advanced topics such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Functions: Organize reusable code.&lt;/li&gt;
&lt;li&gt;Arrays: Handle lists of items.&lt;/li&gt;
&lt;li&gt;Cron Jobs: Schedule scripts to run automatically.&lt;/li&gt;
&lt;li&gt;Text Processing: Use tools like awk and sed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Bash scripting is an invaluable skill for anyone working in Linux or Unix environments. By mastering the basics of variables, loops, and conditional statements, you can create scripts to automate tasks, save time, and increase efficiency.&lt;/p&gt;

&lt;p&gt;Start small, experiment with practical scripts, and gradually build more complex solutions. Remember, the best way to learn is by doing—so dive in and start scripting today!&lt;/p&gt;

&lt;p&gt;If you want to continue knowing more on Bash. Check out this Article I Published on Medium today.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/mastering-bash-variables-and-parameters-778556f21727" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/mastering-bash-variables-and-parameters-778556f21727" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Mastering Bash Variables and Parameters | by Oliver Bennet | Dec, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Dec 4, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/oIFoVLyRWVg?start=52"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>bash</category>
      <category>linux</category>
      <category>ubuntu</category>
      <category>archlinux</category>
    </item>
    <item>
      <title>Automating Network Devices with Python and Netmiko: A Comprehensive Guide</title>
      <dc:creator>Oliver Bennet</dc:creator>
      <pubDate>Sat, 23 Nov 2024 06:30:43 +0000</pubDate>
      <link>https://dev.to/oliverbennet/automating-network-devices-with-python-and-netmiko-a-comprehensive-guide-4j4k</link>
      <guid>https://dev.to/oliverbennet/automating-network-devices-with-python-and-netmiko-a-comprehensive-guide-4j4k</guid>
      <description>&lt;h2&gt;
  
  
  Introduction: The Real-World Impact of Network Automation
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;In a 2023 report by Gartner&lt;/strong&gt;, &lt;em&gt;organizations that implemented network automation saw &lt;strong&gt;operational costs decrease by up to 40%&lt;/strong&gt; and configuration &lt;strong&gt;errors reduce by over 70%&lt;/strong&gt;&lt;/em&gt;. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Cisco further highlights that manual configuration accounts for over 75% of network downtime, costing enterprises an average of $5,600 per minute of downtime. These figures underline the critical role automation plays in modern network management.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Automation&lt;/strong&gt; not only saves money but also reduces &lt;strong&gt;human error&lt;/strong&gt;, &lt;strong&gt;accelerates deployment, and ensures consistent configurations across devices&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For network engineers and administrators, the demand for automation is no longer optional but a necessity in large-scale IT environments. &lt;/p&gt;

&lt;p&gt;Among the numerous tools available for automating network devices, Python paired with Netmiko stands out for its simplicity, flexibility, and vendor-agnostic approach.&lt;/p&gt;

&lt;p&gt;In this article, we'll explore how you can use Python and Netmiko to automate real-world network tasks, starting with basic use cases and progressing to advanced and complex scenarios.&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%2Ftwg8l11lkokirnosh5gt.jpg" 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%2Ftwg8l11lkokirnosh5gt.jpg" alt="Lets start" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Understanding Netmiko and Its Benefits
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Netmiko&lt;/strong&gt; is an open-source &lt;strong&gt;Python&lt;/strong&gt; library built on top of &lt;strong&gt;Paramiko&lt;/strong&gt;, designed specifically for managing network devices. Its abstraction layer simplifies SSH interactions and supports multiple vendors, making it an essential tool for network automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features of Netmiko
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Vendor Support&lt;/strong&gt;: Includes Cisco, Juniper, Arista, HP, Dell, and more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Use&lt;/strong&gt;: Simplifies SSH-based interactions and configuration tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt;: Automates tasks for hundreds of devices in parallel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizability&lt;/strong&gt;: Tailors scripts to specific network requirements.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Use Cases for Automating Network Devices
&lt;/h2&gt;

&lt;p&gt;Let’s dive into real-world use cases that demonstrate the power of Python and Netmiko in network automation.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Bulk Configuration Changes
&lt;/h2&gt;

&lt;p&gt;In large organizations, updating configurations across hundreds or thousands of devices is a frequent but tedious task. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updating VLANs across all switches.&lt;/li&gt;
&lt;li&gt;Applying QoS policies to prioritize traffic.&lt;/li&gt;
&lt;li&gt;Enabling or disabling specific protocols.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example: Configuring VLANs Across Multiple Switches&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;netmiko&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ConnectHandler&lt;/span&gt;

&lt;span class="c1"&gt;# List of devices
&lt;/span&gt;&lt;span class="n"&gt;devices&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;device_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cisco_ios&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;192.168.1.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;device_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cisco_ios&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;192.168.1.2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# VLAN configuration commands
&lt;/span&gt;&lt;span class="n"&gt;commands&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;vlan 10&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name Sales_VLAN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;vlan 20&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name HR_VLAN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Automating the changes
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;device&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;devices&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;connection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ConnectHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_config_set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;commands&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save_config&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disconnect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Impact&lt;/strong&gt;: Automating such tasks reduces manual effort from hours to minutes while ensuring consistency across the network.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Backup Configurations
&lt;/h2&gt;

&lt;p&gt;Configuration backups are crucial for disaster recovery. Manual backups are time-consuming and prone to being overlooked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: Automating Backup of Running Configurations&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;netmiko&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ConnectHandler&lt;/span&gt;

&lt;span class="c1"&gt;# Device details
&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;device_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cisco_ios&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;192.168.1.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Connect and fetch configuration
&lt;/span&gt;&lt;span class="n"&gt;connection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ConnectHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;show running-config&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Save configuration to a file
&lt;/span&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;_backup.txt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;w&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disconnect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Impact&lt;/strong&gt;: Automating backups ensures that the latest configurations are always available, reducing downtime in case of failures.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Compliance Auditing
&lt;/h2&gt;

&lt;p&gt;Compliance with organizational policies or industry regulations requires regular auditing of device configurations. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ensuring SSH and SNMP are securely configured.&lt;/li&gt;
&lt;li&gt;Verifying firewall rules.&lt;/li&gt;
&lt;li&gt;Detecting unauthorized changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example: Auditing SNMP Configuration&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;netmiko&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ConnectHandler&lt;/span&gt;

&lt;span class="n"&gt;device&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;device_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cisco_ios&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;192.168.1.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;connection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ConnectHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;show running-config | include snmp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Verify SNMP settings
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;snmp-server community public RO&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; is non-compliant!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disconnect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Impact&lt;/strong&gt;: Detects non-compliant devices in real-time, ensuring that configurations adhere to security policies.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Real-Time Device Monitoring
&lt;/h2&gt;

&lt;p&gt;Network devices often require real-time monitoring to track their health and performance. This includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitoring CPU, memory, and interface utilization.&lt;/li&gt;
&lt;li&gt;Detecting high latency or dropped packets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example: Checking Interface Status&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;netmiko&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ConnectHandler&lt;/span&gt;

&lt;span class="n"&gt;device&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;device_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cisco_ios&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;192.168.1.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;connection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ConnectHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;show ip interface brief&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Parse the output to detect interfaces that are down
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;splitlines&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;administratively down&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Interface issue found: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disconnect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Impact&lt;/strong&gt;: Alerts administrators about potential issues before they escalate into outages.&lt;/p&gt;




&lt;h2&gt;
  
  
  Advanced and Complex Use Cases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5. Multi-Vendor Network Orchestration
&lt;/h3&gt;

&lt;p&gt;Large enterprises often have multi-vendor environments with Cisco, Juniper, and Arista devices. Writing automation scripts for each vendor is cumbersome, but Netmiko simplifies this with vendor-specific device types.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: Retrieving Version Information Across Vendors&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;devices&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;device_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cisco_ios&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;192.168.1.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;device_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;juniper&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;192.168.1.2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;device_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;arista_eos&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;192.168.1.3&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;device&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;devices&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;connection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ConnectHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;show version&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Version information for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disconnect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6. Firmware Upgrades
&lt;/h3&gt;

&lt;p&gt;Firmware upgrades are critical but disruptive tasks that require careful orchestration. Automating the process minimizes downtime and human error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: Automating Firmware Uploads&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;netmiko&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ConnectHandler&lt;/span&gt;

&lt;span class="n"&gt;device&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;device_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cisco_ios&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;192.168.1.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;connection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ConnectHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Upload firmware
&lt;/span&gt;&lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;copy tftp://192.168.1.100/new_firmware.bin flash:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Reload device
&lt;/span&gt;&lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;reload&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disconnect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Impact&lt;/strong&gt;: Enables efficient and error-free firmware management for hundreds of devices.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Zero-Touch Provisioning
&lt;/h3&gt;

&lt;p&gt;When new devices are added to the network, manually provisioning them can delay deployment. Automating the initial setup reduces time-to-service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: Configuring a New Router&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;netmiko&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ConnectHandler&lt;/span&gt;

&lt;span class="n"&gt;new_device&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;device_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cisco_ios&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;192.168.1.50&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Initial configuration
&lt;/span&gt;&lt;span class="n"&gt;commands&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hostname NewRouter&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;interface GigabitEthernet0/1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip address 192.168.1.1 255.255.255.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;no shutdown&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip route 0.0.0.0 0.0.0.0 192.168.1.254&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;connection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ConnectHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;new_device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_config_set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;commands&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save_config&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disconnect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Impact&lt;/strong&gt;: Speeds up deployment while ensuring consistency in configurations.&lt;/p&gt;




&lt;h2&gt;
  
  
  Optimizing Automation with Advanced Techniques
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Parallel Execution
&lt;/h3&gt;

&lt;p&gt;For large-scale networks, automating sequentially can be slow. Use Python’s concurrent.futures to execute tasks in parallel.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;concurrent.futures&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ThreadPoolExecutor&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;netmiko&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ConnectHandler&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;execute_command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;connection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ConnectHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;show ip route&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disconnect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt;

&lt;span class="n"&gt;devices&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;device_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cisco_ios&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;192.168.1.1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;device_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cisco_ios&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;192.168.1.2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nc"&gt;ThreadPoolExecutor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_workers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;executor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;executor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;execute_command&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;devices&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Centralized Logging
&lt;/h3&gt;

&lt;p&gt;Integrate logging to track script execution and errors.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;logging&lt;/span&gt;

&lt;span class="n"&gt;logging&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;basicConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;level&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;logging&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;INFO&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;logging&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Starting network automation script&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Network automation with Python and Netmiko is transforming how organizations manage their IT infrastructure. From reducing operational costs and human errors to accelerating deployments, the benefits are undeniable. By starting with basic use cases and progressing to complex scenarios like multi-vendor orchestration and firmware upgrades, Netmiko empowers engineers to build scalable and efficient solutions.&lt;/p&gt;

&lt;p&gt;Automation isn't just about efficiency—it’s about enabling innovation, improving reliability, and future-proofing your network in an ever-evolving landscape.&lt;/p&gt;

&lt;p&gt;Oliver | &lt;a href="https://www.graphpe.com" rel="noopener noreferrer"&gt;GraphPe&lt;/a&gt; | &lt;a href="https://graphpe.medium.com" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; | &lt;a href="https://youtube.com/@graphpe?sub_confirmation=1" rel="noopener noreferrer"&gt;Youtube&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rpa</category>
      <category>python</category>
      <category>automation</category>
      <category>networking</category>
    </item>
    <item>
      <title>🚀 Top 10 sed Command Use Cases + 5 Real-Life Scenarios!</title>
      <dc:creator>Oliver Bennet</dc:creator>
      <pubDate>Wed, 20 Nov 2024 11:32:32 +0000</pubDate>
      <link>https://dev.to/oliverbennet/top-10-sed-command-use-cases-5-real-life-scenarios-11o1</link>
      <guid>https://dev.to/oliverbennet/top-10-sed-command-use-cases-5-real-life-scenarios-11o1</guid>
      <description>&lt;p&gt;The sed command is a game-changer for Linux users! Whether you're a sysadmin, developer, or open-source enthusiast, sed simplifies text processing and file management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s Inside?&lt;/strong&gt;&lt;br&gt;
💡 Top 10 sed Use Cases: From basic substitutions to multi-line edits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔧 5 Real-Life Scenarios:&lt;/strong&gt;&lt;br&gt;
1️⃣ Updating hostnames in Nagios config files&lt;br&gt;
2️⃣ Replacing SMTP server details in Grafana&lt;br&gt;
3️⃣ Modifying database credentials in config files&lt;br&gt;
4️⃣ Updating IPs in Nginx configurations&lt;br&gt;
5️⃣ Adjusting paths in scripts after restructuring&lt;/p&gt;

&lt;p&gt;These examples highlight how sed saves time and prevents manual errors in everyday IT tasks.&lt;/p&gt;

&lt;p&gt;📖 &lt;a href="https://graphpe.medium.com/top-10-sed-use-cases-every-linux-user-should-know-9951f28b6b60" rel="noopener noreferrer"&gt;Read the full article here&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/top-10-sed-use-cases-every-linux-user-should-know-9951f28b6b60" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/top-10-sed-use-cases-every-linux-user-should-know-9951f28b6b60" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Top 10 SED Use Cases Every Linux User Should Know | by Oliver Bennet | Nov, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Nov 20, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;💬 Have a favorite sed use case? Share it in the comments!&lt;/p&gt;

&lt;p&gt;Let’s master the art of text automation together! 🚀 #Linux #DevOps #OpenSource&lt;/p&gt;

</description>
      <category>bash</category>
      <category>linux</category>
      <category>cli</category>
      <category>opensource</category>
    </item>
    <item>
      <title>🔐 Why Your Team Needs Passbolt for Password Management</title>
      <dc:creator>Oliver Bennet</dc:creator>
      <pubDate>Wed, 20 Nov 2024 11:28:49 +0000</pubDate>
      <link>https://dev.to/oliverbennet/why-your-team-needs-passbolt-for-password-management-59kh</link>
      <guid>https://dev.to/oliverbennet/why-your-team-needs-passbolt-for-password-management-59kh</guid>
      <description>&lt;p&gt;Managing passwords across teams can be challenging, especially when security is a top priority. Passbolt, an open-source password manager, is here to help. Designed specifically for teams and businesses, Passbolt offers robust features to keep your credentials safe and accessible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Passbolt?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;End-to-End Encryption: Your passwords, encrypted and secure.&lt;/li&gt;
&lt;li&gt;Team Collaboration: Seamlessly share passwords with team members.&lt;/li&gt;
&lt;li&gt;Self-Hosting: Take full control of your data.&lt;/li&gt;
&lt;li&gt;Browser Extensions: Access and autofill passwords effortlessly.&lt;/li&gt;
&lt;li&gt;Role-Based Access Control (RBAC): Manage access with precision.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're securing API keys, database credentials, or login details, Passbolt ensures your team stays secure and productive.&lt;/p&gt;

&lt;p&gt;💻 Check out our in-depth guide: &lt;a href="https://graphpe.medium.com/passbolt-a-comprehensive-guide-to-secure-password-management-for-teams-322d4d8f39f1" rel="noopener noreferrer"&gt;Passbolt in detail&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/passbolt-a-comprehensive-guide-to-secure-password-management-for-teams-322d4d8f39f1" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/passbolt-a-comprehensive-guide-to-secure-password-management-for-teams-322d4d8f39f1" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Passbolt: A Comprehensive Guide to Secure Password Management for Teams | by Oliver Bennet | Nov, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Nov 18, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;🔗 Let’s discuss! How do you manage passwords in your team? Share your thoughts in the comments!&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>bash</category>
      <category>linux</category>
    </item>
    <item>
      <title>🎯 Master Wireshark: 15 Essential Filters for Cybersecurity Professionals</title>
      <dc:creator>Oliver Bennet</dc:creator>
      <pubDate>Wed, 20 Nov 2024 11:26:22 +0000</pubDate>
      <link>https://dev.to/oliverbennet/master-wireshark-15-essential-filters-for-cybersecurity-professionals-3oa6</link>
      <guid>https://dev.to/oliverbennet/master-wireshark-15-essential-filters-for-cybersecurity-professionals-3oa6</guid>
      <description>&lt;p&gt;&lt;strong&gt;Wireshark&lt;/strong&gt; is a must-have tool for network analysis, but mastering its filters can take your skills to the next level. In this guide, we’ve compiled 15 practical Wireshark display filters every cybersecurity analyst should know.&lt;/p&gt;

&lt;p&gt;🔍 &lt;strong&gt;What’s Inside?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filter by IP addresses or ranges&lt;/li&gt;
&lt;li&gt;Analyze specific TCP/UDP ports&lt;/li&gt;
&lt;li&gt;Monitor HTTP methods, status codes, and cookies&lt;/li&gt;
&lt;li&gt;Capture DNS queries or TLS handshakes&lt;/li&gt;
&lt;li&gt;Includes real-world commands and outputs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 Whether you're debugging networks, analyzing attacks, or monitoring performance, these filters are your secret weapon!&lt;/p&gt;

&lt;p&gt;📖 Read the complete guide now: &lt;a href="https://graphpe.medium.com/wireshark-display-filters-essential-filters-every-cybersecurity-analyst-should-master-27f7a2a40075" rel="noopener noreferrer"&gt;Check it out here&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/wireshark-display-filters-essential-filters-every-cybersecurity-analyst-should-master-27f7a2a40075" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/wireshark-display-filters-essential-filters-every-cybersecurity-analyst-should-master-27f7a2a40075" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Wireshark Display Filters: Essential Filters Every Cybersecurity Analyst Should Master | by Oliver Bennet | Nov, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Nov 19, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;💬 What’s your favorite Wireshark filter? Drop your thoughts in the comments!&lt;/p&gt;

&lt;h1&gt;
  
  
  Wireshark #Cybersecurity #NetworkTools #OpenSource
&lt;/h1&gt;

</description>
      <category>linux</category>
      <category>bash</category>
      <category>tutorial</category>
      <category>networking</category>
    </item>
    <item>
      <title>Essential Linux Text Manipulation Tools: cut, sort, uniq, tr 🛠️</title>
      <dc:creator>Oliver Bennet</dc:creator>
      <pubDate>Wed, 20 Nov 2024 11:23:34 +0000</pubDate>
      <link>https://dev.to/graphpe/essential-linux-text-manipulation-tools-cut-sort-uniq-tr-269</link>
      <guid>https://dev.to/graphpe/essential-linux-text-manipulation-tools-cut-sort-uniq-tr-269</guid>
      <description>&lt;p&gt;&lt;strong&gt;Linux's&lt;/strong&gt; text processing commands are the Swiss Army knives for developers and sysadmins. In this post, I break down four essential tools—cut, sort, uniq, and tr—that can simplify your workflows:&lt;/p&gt;

&lt;p&gt;🔥 Key Features&lt;br&gt;
🔥 40+ Practical Examples&lt;br&gt;
🔥 Real-World Use Cases&lt;/p&gt;

&lt;p&gt;💡 Whether you're a beginner or an advanced user, this guide will help you unlock new efficiencies.&lt;/p&gt;

&lt;p&gt;👉 Check it out here: &lt;a href="https://graphpe.medium.com/4-most-essential-text-manipulation-tools-in-linux-cut-sort-uniq-tr-0ce09623f862" rel="noopener noreferrer"&gt;4 Most used text manipulation tools&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/4-most-essential-text-manipulation-tools-in-linux-cut-sort-uniq-tr-0ce09623f862" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/4-most-essential-text-manipulation-tools-in-linux-cut-sort-uniq-tr-0ce09623f862" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;4 Most Essential Text Manipulation Tools in Linux: cut, sort, uniq, tr | by Oliver Bennet | Nov, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Nov 20, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Have any creative use cases of your own? Let's discuss in the comments!&lt;/p&gt;

&lt;h1&gt;
  
  
  Linux #TextProcessing #CLI #OpenSource #DevOps #BashScripting
&lt;/h1&gt;

</description>
      <category>bash</category>
      <category>linux</category>
      <category>ubuntu</category>
      <category>archlinux</category>
    </item>
    <item>
      <title>What's a Quickie Post?</title>
      <dc:creator>Oliver Bennet</dc:creator>
      <pubDate>Tue, 19 Nov 2024 05:45:41 +0000</pubDate>
      <link>https://dev.to/oliverbennet/whats-a-quickie-post-2g5c</link>
      <guid>https://dev.to/oliverbennet/whats-a-quickie-post-2g5c</guid>
      <description>&lt;p&gt;A Quickie Post is a new, concise way to share quick tips, code snippets, or random thoughts on Dev.to. It's perfect for those bite-sized ideas that don't need a full-blown article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Quickie Posts?
&lt;/h2&gt;

&lt;p&gt;I personally think below are some of the features for Quickie Post.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Share Quickly:&lt;/strong&gt; Get your thoughts out there fast.&lt;br&gt;
&lt;strong&gt;Keep it Simple:&lt;/strong&gt; No need for long-form content.&lt;br&gt;
&lt;strong&gt;Engage the Community:&lt;/strong&gt; Spark discussions with focused topics.&lt;br&gt;
Give it a Try!&lt;/p&gt;

&lt;p&gt;Comment and let's discuss what are the other features that you might want Dev.to team to include in Quickie Post&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>devto</category>
    </item>
    <item>
      <title>Linux Kernel 6.12: A Quantum Leap in Performance and Features</title>
      <dc:creator>Oliver Bennet</dc:creator>
      <pubDate>Mon, 18 Nov 2024 07:54:50 +0000</pubDate>
      <link>https://dev.to/oliverbennet/linux-kernel-612-a-quantum-leap-in-performance-and-features-5ah6</link>
      <guid>https://dev.to/oliverbennet/linux-kernel-612-a-quantum-leap-in-performance-and-features-5ah6</guid>
      <description>&lt;p&gt;&lt;strong&gt;Linux Kernel 6.12&lt;/strong&gt; is a significant release that brings a plethora of enhancements, new features, and improved hardware support. This powerful kernel is set to revolutionize the Linux experience for users across various platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-time Performance Revolution
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;One of the most significant advancements in Linux Kernel 6.12 is the inclusion of PREEMPT_RT mainline support. This long-awaited feature significantly boosts real-time performance, making Linux an ideal choice for time-critical applications like industrial automation, robotics, and real-time audio/video processing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;By enabling the kernel to respond to interrupts and context switches more promptly, PREEMPT_RT minimizes latency and jitter, ensuring that time-sensitive tasks are executed with precision. This level of real-time responsiveness was previously challenging to achieve on Linux, but with PREEMPT_RT, it's now a reality.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Expanded Hardware Ecosystem
&lt;/h2&gt;

&lt;p&gt;Linux Kernel 6.12 continues to expand its hardware support, embracing a diverse range of platforms:&lt;/p&gt;

&lt;p&gt;-&lt;strong&gt;Raspberry Pi 5&lt;/strong&gt;: Initial mainline support for the latest Raspberry Pi model, further solidifying Linux as a preferred OS for hobbyists and developers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ARM-powered GameForce Ace&lt;/strong&gt;: Optimized support for this popular gaming handheld, enhancing gaming performance and compatibility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ODROID-M15 and ODROID-M2&lt;/strong&gt;: Improved driver support for these versatile single-board computers, enabling smoother operation and better utilization of their capabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OneXPlayer&lt;/strong&gt;: Enhanced sensor support for this gaming device, providing a more immersive and responsive gaming experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Performance Tweaks and Optimizations
&lt;/h2&gt;

&lt;p&gt;The kernel's performance continues to be refined with several optimizations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Intel P-State Driver&lt;/strong&gt;: The hybrid CPU scaling feature in the Intel P-State driver is further optimized for upcoming Intel Core Ultra 2000 chips, leading to improved power efficiency and performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AMD P-State Driver&lt;/strong&gt;: Enhanced support for AMD Boost and AMD Preferred Core features allows for better utilization of AMD CPU resources, resulting in increased performance and responsiveness.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Developer Tools and Ecosystem
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SWIG Bindings for libcpupower&lt;/strong&gt;: This addition simplifies scripting and extension of libcpupower functionality, making it easier for developers to - create custom tools and scripts to manage CPU power states and performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Other Notable Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;QR Code Support in Kernel Panic Screens&lt;/strong&gt;: This innovative feature facilitates easier debugging and troubleshooting by providing a QR code that can be scanned to access detailed information about the system's state at the time of the crash.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RISC-V CPU ISA Extensions&lt;/strong&gt;: Expanded support for RISC-V architectures, ensuring compatibility with a wider range of RISC-V-based hardware.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simplified Microcode Patch Loading&lt;/strong&gt;: This optimization streamlines the process of loading microcode patches on AMD Zen and newer CPUs, improving system stability and security.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SPI-NAND Continuous Reads&lt;/strong&gt;: Enhanced performance for SPI-NAND storage devices, leading to faster data transfer rates and smoother overall system performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regmap IRQDomain Custom Names&lt;/strong&gt;: This feature provides greater flexibility in configuring interrupt domains, making it easier to manage complex hardware setups.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SPI Bus Idle State Configuration&lt;/strong&gt;: More precise control over the behavior of the SPI bus during idle periods, allowing for better power management and reduced interference with other devices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;vDSO getrandom for Various Architectures&lt;/strong&gt;: Expanded availability of a faster random number generator, improving the security and randomness of cryptographic operations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Deeper Dive into Real-time Performance
&lt;/h2&gt;

&lt;p&gt;To fully understand the impact of PREEMPT_RT, let's delve deeper into its technical implications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Kernel Preemption&lt;/strong&gt;: PREEMPT_RT enables the kernel to preempt running tasks, allowing it to switch to higher-priority tasks more quickly. This reduces latency and jitter, ensuring that time-critical tasks are executed promptly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency Reduction&lt;/strong&gt;: By minimizing the time it takes for the kernel to respond to interrupts and context switches, PREEMPT_RT significantly reduces system latency. This is crucial for applications that require low-latency responses, such as real-time audio and video processing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jitter Minimization&lt;/strong&gt;: PREEMPT_RT helps to minimize jitter, which is the variation in the timing of events. This is essential for applications that require precise timing, such as robotics and industrial automation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Real-world Use Cases and Benefits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Industrial Automation&lt;/strong&gt;: PREEMPT_RT enables the development of highly responsive and deterministic control systems for industrial automation, ensuring precise control of machinery and processes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Robotics:&lt;/strong&gt; Real-time performance is critical for robotics applications, as it allows robots to react quickly to changes in their environment. PREEMPT_RT helps to improve the responsiveness and accuracy of robotic systems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time Audio/Video Processing&lt;/strong&gt;: For applications like audio and video streaming, low-latency and jitter-free performance is essential.&lt;/li&gt;
&lt;li&gt;PREEMPT_RT helps to minimize latency and jitter, ensuring smooth and uninterrupted playback.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Future of Linux Kernel
&lt;/h2&gt;

&lt;p&gt;Linux Kernel 6.12 represents a significant milestone in the evolution of the Linux kernel. With its focus on real-time performance, hardware support, performance optimizations, and developer tools, this release empowers users and developers alike to unlock the full potential of their Linux systems.&lt;/p&gt;

&lt;p&gt;As the Linux kernel continues to evolve, we can expect even more exciting features and improvements in future releases. The open-source community's collaborative efforts will undoubtedly drive the kernel's development, ensuring that Linux remains a powerful and versatile operating system for years to come.&lt;/p&gt;

&lt;p&gt;By embracing the power of Linux Kernel 6.12, users can experience a quantum leap in performance, stability, and functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recent Articles
&lt;/h2&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/effortless-file-transfers-a-guide-to-using-scp-and-rsync-f3403d67a580" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/effortless-file-transfers-a-guide-to-using-scp-and-rsync-f3403d67a580" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Effortless File Transfers: A Guide to Using scp and rsync | by Oliver Bennet | Nov, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Nov 15, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/25-advanced-bash-commands-every-linux-user-should-know-393455b2ded6" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/25-advanced-bash-commands-every-linux-user-should-know-393455b2ded6" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;25 Advanced Bash Commands Every Linux User Should Know | by Oliver Bennet | Nov, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Nov 8, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/top-10-sed-use-cases-every-linux-user-should-know-9951f28b6b60" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/top-10-sed-use-cases-every-linux-user-should-know-9951f28b6b60" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Top 10 SED Use Cases Every Linux User Should Know | by Oliver Bennet | Nov, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Nov 5, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/linux-aliases-you-didnt-know-you-needed-part-2-e78770cc2bf8" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/linux-aliases-you-didnt-know-you-needed-part-2-e78770cc2bf8" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Linux Aliases You Didn’t Know You Needed: Practical Shortcuts for Every User | by Oliver Bennet | Nov, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Nov 15, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Recent Videos
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Fh7i3fvVFfA?start=220"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/TTNbQtR9s1I?start=1490"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/oIFoVLyRWVg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>linux</category>
      <category>news</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Prometheus 3.0: A Quantum Leap in Monitoring</title>
      <dc:creator>Oliver Bennet</dc:creator>
      <pubDate>Mon, 18 Nov 2024 07:06:01 +0000</pubDate>
      <link>https://dev.to/graphpe/prometheus-30-a-quantum-leap-in-monitoring-30ea</link>
      <guid>https://dev.to/graphpe/prometheus-30-a-quantum-leap-in-monitoring-30ea</guid>
      <description>&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%2F2iw56nun1hv9xova9z3v.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%2F2iw56nun1hv9xova9z3v.png" alt="Prometheus" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prometheus&lt;/strong&gt;, the open-source systems monitoring and alerting toolkit, has long been a favorite among DevOps engineers and system administrators. Its powerful query language, PromQL, and flexible data model have made it a go-to tool for monitoring complex systems. With the recent release of Prometheus 3.0, the platform has taken a significant leap forward, introducing a host of new features and improvements that elevate its capabilities to new heights.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features and Enhancements
&lt;/h2&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%2Ffus2c1h41polak77j7jp.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%2Ffus2c1h41polak77j7jp.png" alt="Prometheus" width="779" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Native Histograms:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Prometheus 3.0 introduces native support for histograms, a data type that efficiently captures distribution information. This is particularly useful for metrics like response times, request durations, and latency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;By leveraging native histograms, Prometheus can provide more accurate and granular insights into the performance of your systems.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  OpenTelemetry Support:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Prometheus 3.0 strengthens its integration with OpenTelemetry, a vendor-neutral observability framework. This enables seamless collection and analysis of telemetry data from various sources, including applications, infrastructure, and cloud services.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;By adopting OpenTelemetry, you can simplify your monitoring setup and gain a more comprehensive view of your entire technology stack.&lt;br&gt;
Performance Optimizations:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prometheus 3.0 incorporates several performance optimizations, including:&lt;br&gt;
Faster query execution, especially for complex queries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reduced memory usage, leading to improved scalability.&lt;br&gt;
Enhanced data ingestion and storage efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;These optimizations ensure that Prometheus can handle larger workloads and provide real-time insights without compromising performance.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Enhanced PromQL:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;PromQL, the powerful query language for Prometheus, has been further refined in 3.0 with the addition of new functions and operators:&lt;/li&gt;
&lt;li&gt;delta: Calculates the difference between two time series.
changes: Counts the number of changes in a time series.&lt;/li&gt;
&lt;li&gt;rate_interval: Calculates the rate of change over a specific interval.
These new capabilities empower you to perform more sophisticated analysis and troubleshooting tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Improved Alerting:
&lt;/h3&gt;

&lt;p&gt;The alerting system in Prometheus 3.0 has been enhanced with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhanced filtering: More flexible filtering options for alerts.&lt;/li&gt;
&lt;li&gt;Improved grouping: Better grouping of alerts based on specific criteria.&lt;/li&gt;
&lt;li&gt;Enhanced notification channels: Support for additional notification channels, including email, SMS, and PagerDuty.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These improvements streamline the alert management process and ensure timely notifications of critical issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  New Web UI:
&lt;/h3&gt;

&lt;p&gt;Prometheus 3.0 boasts a redesigned web UI with a modern look and feel. The new UI offers:&lt;/p&gt;

&lt;p&gt;-Improved navigation and search capabilities.&lt;br&gt;
-More intuitive query building and visualization tools.&lt;br&gt;
-Enhanced performance and responsiveness.&lt;/p&gt;

&lt;p&gt;The new UI makes it easier to explore and analyze your monitoring data.&lt;/p&gt;
&lt;h3&gt;
  
  
  Why Upgrade to Prometheus 3.0?
&lt;/h3&gt;

&lt;p&gt;Upgrading to Prometheus 3.0 is highly recommended for several reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhanced Performance: The performance optimizations in 3.0 ensure that Prometheus can handle larger workloads and provide real-time insights.&lt;/li&gt;
&lt;li&gt;Improved Scalability: Native histograms and other enhancements make 
Prometheus more scalable, allowing it to monitor larger and more complex systems.&lt;/li&gt;
&lt;li&gt;Increased Functionality: The new features in 3.0, such as OpenTelemetry support and enhanced PromQL, provide greater flexibility and power.&lt;/li&gt;
&lt;li&gt;Better User Experience: The redesigned web UI offers a more intuitive and efficient user experience.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Breaking Changes
&lt;/h3&gt;

&lt;p&gt;While most of the changes in Prometheus 3.0 are backward-compatible, there are a few breaking changes that you should be aware of. These include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Changes to the rate function: The rate function now calculates the rate of change over a specific interval, rather than the instantaneous rate of change.&lt;/li&gt;
&lt;li&gt;Changes to the irate function: The irate function now uses a more accurate algorithm to calculate the instantaneous rate of change.&lt;/li&gt;
&lt;li&gt;Changes to the increase function: The increase function now returns the total increase over a specific interval, rather than the instantaneous rate of increase.&lt;/li&gt;
&lt;li&gt;It's essential to review the migration guide provided by the Prometheus team to ensure a smooth upgrade process.&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%2Fgwdy9s5102miy6r2zbon.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%2Fgwdy9s5102miy6r2zbon.png" alt="Prometheus" width="600" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Prometheus 3.0 is a significant milestone in the evolution of this powerful monitoring solution. The new features and improvements make it even more robust, efficient, and user-friendly. By upgrading to 3.0, you can gain deeper insights into your systems, improve performance, and enhance your overall monitoring strategy.&lt;/p&gt;
&lt;h2&gt;
  
  
  Recent Articles
&lt;/h2&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/effortless-file-transfers-a-guide-to-using-scp-and-rsync-f3403d67a580" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/effortless-file-transfers-a-guide-to-using-scp-and-rsync-f3403d67a580" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Effortless File Transfers: A Guide to Using scp and rsync | by Oliver Bennet | Nov, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Nov 15, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/25-advanced-bash-commands-every-linux-user-should-know-393455b2ded6" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/25-advanced-bash-commands-every-linux-user-should-know-393455b2ded6" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;25 Advanced Bash Commands Every Linux User Should Know | by Oliver Bennet | Nov, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Nov 8, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/top-10-sed-use-cases-every-linux-user-should-know-9951f28b6b60" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/top-10-sed-use-cases-every-linux-user-should-know-9951f28b6b60" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Top 10 SED Use Cases Every Linux User Should Know | by Oliver Bennet | Nov, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Nov 5, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/linux-aliases-you-didnt-know-you-needed-part-2-e78770cc2bf8" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/linux-aliases-you-didnt-know-you-needed-part-2-e78770cc2bf8" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Linux Aliases You Didn’t Know You Needed: Practical Shortcuts for Every User | by Oliver Bennet | Nov, 2024 | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Nov 15, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Recent Videos
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Fh7i3fvVFfA?start=220"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/TTNbQtR9s1I?start=1490"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/oIFoVLyRWVg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>prometheus</category>
      <category>opensource</category>
      <category>monitoring</category>
      <category>webdev</category>
    </item>
    <item>
      <title>🎉 Dive into Python 3.13: New Features, JIT Compiler, Free threading &amp; Installation Guide! 🎉</title>
      <dc:creator>Oliver Bennet</dc:creator>
      <pubDate>Tue, 12 Nov 2024 13:00:44 +0000</pubDate>
      <link>https://dev.to/graphpe/dive-into-python-313-new-features-jit-compiler-free-threading-installation-guide-2i6h</link>
      <guid>https://dev.to/graphpe/dive-into-python-313-new-features-jit-compiler-free-threading-installation-guide-2i6h</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;Hey, &lt;strong&gt;Python enthusiasts!&lt;/strong&gt; The long-awaited Python 3.13 release has arrived, and it brings a host of exciting changes, from a Just-In-Time (JIT) compiler and free-threading support to a more interactive interpreter. In my latest video, I go over all the essential new features and also walk through the installation process for both Windows and Ubuntu.&lt;/p&gt;

&lt;p&gt;Check out the video here: &lt;a href="https://youtu.be/Fh7i3fvVFfA" rel="noopener noreferrer"&gt;Python 3.13 Features &amp;amp; Installation Guide&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s New in Python 3.13?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Python 3.13 introduces several game-changing updates:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free-threading Support (PEP 703)&lt;/strong&gt; – Experimental support to run Python without the Global Interpreter Lock (GIL).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Just-In-Time (JIT) Compiler (PEP 744)&lt;/strong&gt; – A basic JIT compiler, currently disabled by default, but laying the groundwork for future performance boosts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Error Messages&lt;/strong&gt; – Python’s interactive interpreter and error handling have leveled up, now with colorized tracebacks for easy debugging.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Library Improvements&lt;/strong&gt; – Expect a streamlined standard library, with several legacy modules officially removed (PEP 594).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved Interactive Interpreter&lt;/strong&gt; – Inspired by the PyPy project, the REPL now includes multiline editing, history browsing, and colorized prompts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step-by-Step Installation for Windows &amp;amp; Ubuntu&lt;/strong&gt;&lt;br&gt;
If you’re eager to try Python 3.13, &lt;a href="https://youtu.be/Fh7i3fvVFfA" rel="noopener noreferrer"&gt;this video&lt;/a&gt; includes a complete installation guide for both Windows and Ubuntu. Whether you're upgrading or installing Python for the first time, follow along to set up the latest version on your system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watch the Full Breakdown Medium Post:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="https://graphpe.medium.com/python-3-13-is-here-ed0462885d15" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afill%3A88%3A88%2F1%2AzMbYz7ccvNTjb7TNuHHBZA.jpeg" alt="Oliver Bennet"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://graphpe.medium.com/python-3-13-is-here-ed0462885d15" class="ltag__link__link" rel="noopener noreferrer"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Python 3.13 is here and It could be a Game Changer | Medium&lt;/h2&gt;
      &lt;h3&gt;Oliver Bennet ・ &lt;time&gt;Nov 12, 2024&lt;/time&gt; ・ 
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fmedium-f709f79cf29704f9f4c2a83f950b2964e95007a3e311b77f686915c71574fef2.svg" alt="Medium Logo"&gt;
        graphpe.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Python 3.13 Features &amp;amp; Installation Guide
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Key Highlights Covered in the Video&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Error Message Improvements&lt;/strong&gt; – Helpful error messages for common mistakes like naming conflicts with standard modules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New Security Enhancements&lt;/strong&gt; – Updates in ssl and other libraries to keep your applications secure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Typing Improvements&lt;/strong&gt; – Expanded typing functionality including default values for type parameters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deprecations and Removals&lt;/strong&gt; – Say goodbye to legacy modules like cgi, crypt, telnetlib, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you’re developing on Windows or Ubuntu, this video has all the insights you need to get started with Python 3.13! Check it out and let me know your thoughts in the comments below. Happy coding!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Fh7i3fvVFfA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>python</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>25 Advanced Bash Commands Every Linux User Should Know</title>
      <dc:creator>Oliver Bennet</dc:creator>
      <pubDate>Sat, 09 Nov 2024 07:04:07 +0000</pubDate>
      <link>https://dev.to/oliverbennet/25-advanced-bash-commands-every-linux-user-should-know-1ce7</link>
      <guid>https://dev.to/oliverbennet/25-advanced-bash-commands-every-linux-user-should-know-1ce7</guid>
      <description>&lt;p&gt;For &lt;strong&gt;Linux&lt;/strong&gt; users aiming to maximize productivity, mastering advanced Bash commands is essential. These commands provide powerful ways to search, manipulate, and automate tasks, unlocking a world of efficiency for both system administration and development workflows. Here’s a deep dive into 25 of the most advanced Bash commands, essential for any serious Linux user.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. grep - Advanced Text Searching
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;grep -r "pattern" /directory&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: grep searches for text patterns within files and directories. With the &lt;code&gt;-r&lt;/code&gt; (recursive) option, it looks through subdirectories as well. It supports regex patterns, allowing for complex search capabilities.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;grep -r "error" /var/log/&lt;/code&gt; searches all logs for "error."&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%2F7m7vuqk2drewb2z7i9mu.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%2F7m7vuqk2drewb2z7i9mu.png" alt="grep output" width="800" height="248"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  2. awk - Text Processing and Data Extraction
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt; a&lt;code&gt;wk '{print $1, $3}' file.txt&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation:&lt;/strong&gt; awk is a powerful tool for text manipulation, allowing you to filter and reformat data. You can use it to extract columns and apply conditions on text files.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;*: &lt;code&gt;awk '{print $1, $4, $5}' /var/log/syslog&lt;/code&gt; extracts the first, fourth and fifth columns from syslog.&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%2Fe6tt1hcy1t6ac5l1kior.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%2Fe6tt1hcy1t6ac5l1kior.png" alt="awkoutput" width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  3. sed - Stream Editing for Efficient Text Manipulation
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt; &lt;code&gt;sed 's/old/new/g' file.txt&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation:&lt;/strong&gt; sed allows you to find and replace text patterns within files. It’s ideal for batch substitutions across large files or groups of files.&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; &lt;code&gt;sed 's/apache/nginx/g' config.txt&lt;/code&gt; replaces "apache" with "nginx" in config.txt.&lt;/p&gt;
&lt;h2&gt;
  
  
  4. xargs - Command Chaining for Pipelining Tasks
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt; &lt;code&gt;cat files.txt | xargs rm&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation:&lt;/strong&gt; xargs constructs command lines from standard input. It’s useful in combination with find or grep to perform actions on lists of files.&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; &lt;code&gt;find . -name "*.log" | xargs rm&lt;/code&gt; deletes all .log files in the current directory and its subdirectories.&lt;/p&gt;
&lt;h2&gt;
  
  
  5. find - Locating Files and Directories
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt; &lt;code&gt;find /path -type f -name "*.txt"&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation:&lt;/strong&gt; find is invaluable for locating files based on criteria like name, type, size, or modification date.&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; &lt;code&gt;find /etc -type f -name "*.conf"&lt;/code&gt; finds all configuration files in /etc.&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%2F7v6e5pz2o4yuz7y1ngm8.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%2F7v6e5pz2o4yuz7y1ngm8.png" alt="find output" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  6. chmod and chown - Managing Permissions and Ownership
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt; chmod 755 file, chown user:group file&lt;br&gt;
&lt;strong&gt;Explanation:&lt;/strong&gt; chmod and chown modify permissions and file ownership. Proper permissions are essential for security and functionality.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/em&gt; chmod 644 document.txt sets read and write permissions for the owner and read-only for others.&lt;/p&gt;
&lt;h2&gt;
  
  
  7. curl and wget - Retrieving Web Content
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt; &lt;code&gt;curl -O url, wget url&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation:&lt;/strong&gt; Both &lt;code&gt;curl&lt;/code&gt;and &lt;code&gt;wget&lt;/code&gt;fetch files from the internet, but curl is more versatile, supporting API requests.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;curl -O https://example.com/file.zip&lt;/code&gt; downloads a file to the current directory.&lt;/p&gt;
&lt;h2&gt;
  
  
  8. tar - File Archiving and Compression
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt; &lt;code&gt;tar -czvf archive.tar.gz /var/log/syslog&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation:&lt;/strong&gt; tar is used for creating archives, combining multiple files into one. It’s often used with gzip for compression.&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; &lt;code&gt;tar -xzvf archive.tar.gz&lt;/code&gt; extracts a .tar.gz archive.&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%2Ff2z6jvfir8efei2q14w2.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%2Ff2z6jvfir8efei2q14w2.png" alt="tar output" width="800" height="204"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  9. rsync - Syncing Files Across Directories and Systems
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt; &lt;code&gt;rsync -avz /source /destination&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation:&lt;/strong&gt; rsync copies and synchronizes files, offering options for compression and partial transfers, making it ideal for backups.&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; &lt;code&gt;rsync -avz /home/user /backup/&lt;/code&gt; backs up a user’s home directory to /backup.&lt;/p&gt;
&lt;h2&gt;
  
  
  10. netstat and ss - Network Monitoring
&lt;/h2&gt;

&lt;p&gt;Usage: &lt;code&gt;netstat -tuln&lt;/code&gt;, &lt;code&gt;ss -tuln&lt;/code&gt;&lt;br&gt;
Explanation: netstat and ss display network connections and listening ports. Use ss for more recent and faster network inspection.&lt;br&gt;
Example: ss -tuln shows active TCP/UDP listening sockets.&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%2Frsmze3cwifqs06pz9ml4.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%2Frsmze3cwifqs06pz9ml4.png" alt="ss output" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  &lt;a href="https://www.youtube.com/watch?v=oIFoVLyRWVg" rel="noopener noreferrer"&gt;Mastering BASH CLI in 3 Hours&lt;/a&gt;
&lt;/h2&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  11. &lt;code&gt;df&lt;/code&gt;and &lt;code&gt;du&lt;/code&gt;- Disk Usage Analysis
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;df -h&lt;/code&gt;, &lt;code&gt;du -sh /path&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: &lt;code&gt;df&lt;/code&gt; provides an overview of disk space usage, while du gives a breakdown by directory.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;du -sh /home&lt;/code&gt; shows the size of the /home directory.&lt;/p&gt;
&lt;h2&gt;
  
  
  12. &lt;code&gt;ps&lt;/code&gt; and &lt;code&gt;top&lt;/code&gt;- Monitoring Running Processes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;ps aux&lt;/code&gt;, &lt;code&gt;top&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: ps lists processes, while top provides real-time monitoring of CPU and memory usage.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;top&lt;/code&gt; helps identify resource-intensive processes.&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%2Fxbe30wtfxxnt780hso6a.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%2Fxbe30wtfxxnt780hso6a.png" alt="ps output" width="800" height="202"&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%2Fqqmj9xe0anzra0pvlkvv.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%2Fqqmj9xe0anzra0pvlkvv.png" alt="top output" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  13. kill and pkill - Terminating Processes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;kill PID&lt;/code&gt;,&lt;code&gt;pkill name&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: kill sends signals to processes. Use kill -9 for forceful termination, and pkill to terminate by name.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;pkill firefox&lt;/code&gt; stops all Firefox processes.&lt;/p&gt;
&lt;h2&gt;
  
  
  14. &lt;code&gt;tail&lt;/code&gt;and &lt;code&gt;head&lt;/code&gt; - Viewing File Sections
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;tail -n 20 file.txt&lt;/code&gt;, &lt;code&gt;head -n 20 file.txt&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: &lt;code&gt;tail&lt;/code&gt;displays the last lines, and head shows the first lines of a file. Useful for log analysis.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: tail -f /var/log/syslog continuously shows new log entries.&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%2Fbwbxltkrnlwqrf4lzxp0.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%2Fbwbxltkrnlwqrf4lzxp0.png" alt="tail output" width="800" height="294"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  15. &lt;code&gt;man&lt;/code&gt;- Displaying Command Manuals
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;man service&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: &lt;code&gt;man&lt;/code&gt; displays manuals for commands, helping you understand usage and options.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;man rsync&lt;/code&gt; provides details on using rsync.&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%2Fqxa1l5ihkrn84l2qvnb9.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%2Fqxa1l5ihkrn84l2qvnb9.png" alt="man rsync output" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  16. diff - File Comparison
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;:&lt;code&gt;diff file1 file2&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: diff shows line-by-line differences between files, useful for version control.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;diff config.old config.new&lt;/code&gt; compares two versions of a configuration file.&lt;/p&gt;
&lt;h2&gt;
  
  
  17. &lt;code&gt;history&lt;/code&gt;- Command Recall and Re-execution
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;history&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: Lists past commands, allowing for easy re-execution.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;!100&lt;/code&gt; re-executes command number 100.&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%2Fxp7z5e6vp5m5c5e5oj6y.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%2Fxp7z5e6vp5m5c5e5oj6y.png" alt="history output" width="800" height="806"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  18. alias - Creating Command Shortcuts
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;alias ll='ls -al'&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: &lt;code&gt;alias&lt;/code&gt;allows you to create shortcuts for commonly used commands.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;alias rmf='rm -f'&lt;/code&gt; creates a shortcut for force deletion.&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%2Fr5yr7w7jzm0m1goocf91.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%2Fr5yr7w7jzm0m1goocf91.png" alt="alias output" width="749" height="391"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  19. &lt;code&gt;crontab&lt;/code&gt;- Scheduling Jobs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;crontab -e&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: Schedules recurring tasks using cron. Useful for automation.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;0 2 * * * /path/to/script.sh&lt;/code&gt; runs a script daily at 2 AM.&lt;/p&gt;
&lt;h2&gt;
  
  
  20. zip and unzip - File Compression and Extraction
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;zip -r archive.zip folder&lt;/code&gt;, &lt;code&gt;unzip archive.zip&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: Creates and extracts ZIP archives, offering a quick way to manage compressed files.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;zip -r project.zip /project&lt;/code&gt; compresses /project into project.zip.&lt;/p&gt;
&lt;h2&gt;
  
  
  21. &lt;code&gt;ln&lt;/code&gt; - Creating Links
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;ln -s /source /destination&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: &lt;code&gt;ln&lt;/code&gt; creates hard and symbolic links, linking files or directories.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;ln -s /opt/project /home/user/project_lin&lt;/code&gt;k creates a symbolic link.&lt;/p&gt;
&lt;h2&gt;
  
  
  22. &lt;code&gt;mount&lt;/code&gt; and &lt;code&gt;umount&lt;/code&gt; - Mounting File Systems
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;mount /dev/sdb1 /mnt&lt;/code&gt;, &lt;code&gt;umount /mnt&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: Mounts and unmounts storage devices, allowing access to external storage.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;mount -o loop disk.iso /mnt&lt;/code&gt; mounts an ISO file.&lt;/p&gt;
&lt;h2&gt;
  
  
  23. &lt;code&gt;echo&lt;/code&gt; and &lt;code&gt;printf&lt;/code&gt; - Displaying Text
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;echo "Hello"&lt;/code&gt;, &lt;code&gt;printf "User: %s\n" "$USER"&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: Outputs text, useful in scripts for showing variable values or message formatting.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;printf "Current date: %(%Y-%m-%d)T\n" -1&lt;/code&gt; shows the current date.&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%2Ffjy9fxnvq5hrgvjxzhcj.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%2Ffjy9fxnvq5hrgvjxzhcj.png" alt="printf output" width="800" height="149"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  24. uptime - System Uptime and Load
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;uptime&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: Shows system uptime and average load, helpful for monitoring performance.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;uptime&lt;/code&gt; displays the system’s active time since the last reboot.&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%2F5v2w7mhxxlmw32r5kgqe.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%2F5v2w7mhxxlmw32r5kgqe.png" alt="uptime output" width="800" height="87"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  25. iptables - Configuring Firewall Rules
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;: &lt;code&gt;iptables -A INPUT -p tcp --dport 22 -j ACCEPT&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Explanation&lt;/strong&gt;: iptables manages firewall settings, controlling access to ports and services.&lt;br&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;code&gt;iptables -L&lt;/code&gt; lists current firewall rules.&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%2F544m4dvzczrd2lzv2jmk.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%2F544m4dvzczrd2lzv2jmk.png" alt="IPTables Output" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These 25 commands are indispensable tools for any Linux user, helping manage, monitor, and automate tasks efficiently. Familiarizing yourself with them will deepen your command-line expertise and significantly enhance your productivity on Linux systems.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/oIFoVLyRWVg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Support my Work&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;▶️ &lt;a href="https://www.youtube.com/@graphpe?sub_confirmation=1" rel="noopener noreferrer"&gt;Support by Subscribing my YouTube&lt;/a&gt;&lt;br&gt;
▶️ &lt;a href="https://graphpe.com/" rel="noopener noreferrer"&gt;Explore more open-source tutorials on my website&lt;/a&gt;&lt;br&gt;
▶️ &lt;a href="https://x.com/obennetgpe" rel="noopener noreferrer"&gt;Follow me on X&lt;/a&gt;&lt;br&gt;
☕ &lt;a href="https://buymeacoffee.com/graphpe" rel="noopener noreferrer"&gt;Buy me a Coffee&lt;/a&gt;&lt;/p&gt;

</description>
      <category>bash</category>
      <category>linux</category>
      <category>ubuntu</category>
    </item>
  </channel>
</rss>
