By Fathalla Ramadan
February 2026 | Alexandria, Egypt


If you’re running a home lab with even two or three routers, you know the pain:

“I spent hours configuring OSPF… and forgot to save. Now it’s gone.”

What if your lab backed itself up every night—automatically?

In this guide, you’ll set up a simple, reliable backup system using Python and Netmiko that:

This is Lab 26.1 from my IP Routing and Switching Lab Handout Book—now shared free for serious learners.

Let’s build it.

🛠️ What You’ll Need

🔧 Step 1: Install Required Libraries

Open your terminal or Command Prompt and run:

pip install netmiko python-dotenv

🔐 Step 2: Create a Secure Credentials File

In your project folder, create a file named .env:

USERNAME=admin
PASSWORD=cisco123

⚠️ Never commit this file to GitHub! Add .env to your .gitignore.

💻 Step 3: Create the Backup Script

Create a file named backup_lab.py:

import os
from datetime import datetime
from dotenv import load_dotenv
from netmiko import ConnectHandler

Load credentials

load_dotenv()
username = os.getenv(“USERNAME”)
password = os.getenv(“PASSWORD”)

Define your devices

devices = [
{
“host”: “192.168.1.10”,
“device_type”: “cisco_ios”,
“username”: username,
“password”: password,
},
{
“host”: “192.168.1.11”,
“device_type”: “cisco_ios”,
“username”: username,
“password”: password,
},
# Add more devices as needed
]

Create backup directory

backup_dir = “backups”
os.makedirs(backup_dir, exist_ok=True)

Get timestamp

timestamp = datetime.now().strftime(“%Y-%m-%d_%H-%M-%S”)

Backup each device

for device in devices:
try:
print(f”Backing up {device[‘host’]}…”)
connection = ConnectHandler(**device)
hostname = connection.find_prompt().replace(“#”, “”)
config = connection.send_command(“show running-config”)
connection.disconnect()

    # Save to file
    filename = f"{backup_dir}/{hostname}_{timestamp}.txt"
    with open(filename, "w") as f:
        f.write(config)
    print(f"✅ Saved: {filename}")

except Exception as e:
    print(f"❌ Failed to back up {device['host']}: {str(e)}")

Customize: Replace IP addresses and add your devices.

▶️ Step 4: Test the Script

Run it manually:

python backup_lab.py

You’ll see:

Backing up 192.168.1.10…
✅ Saved: backups/R1_2026-02-13_20-30-00.txt

Check the backups/ folder—your configs are there!

Step 5: Automate It (Run Every Night)

On Windows: Use Task Scheduler

  1. Open Task Scheduler
  2. Create Basic Task → Name: Nightly Lab Backup
  3. Trigger: Daily at 2:00 AM
  4. Action: Start a program
    • Program: python
    • Arguments: C:\path\to\backup_lab.py
  5. Finish

On macOS/Linux: Use cron

Run crontab -e and add:

0 2 * * * /usr/bin/python3 /path/to/backup_lab.py

Now your lab backs up every night at 2 AM—without you lifting a finger.

💡 Pro Tips

📚 Go Further

Want the full Lab 26.1 with error handling, logging, email notifications, and multi-vendor support (Cisco, Juniper, Arista)?

👉 Get it in my IP Routing and Switching Lab Handout Book—used by learners in 30+ countries.

💬 Final Thought

Automation isn’t about replacing you.
It’s about freeing you from repetitive tasks—so you can focus on design, troubleshooting, and innovation.

And it all starts with one script.

Fathalla Ramadan
Network Architect & Educator
Alexandria, Egypt
35+ years in IT, networking, and technology education across the Middle East and beyond

🔖 Tags:

#NetworkAutomation #Python #Netmiko #HomeLab #CCNA #Cisco #ITAutomation #FathallaRamadan #GlobalLearners #DevOpsForNetworking

Leave a Reply

Your email address will not be published. Required fields are marked *