By Fathalla Ramadan
February 2026

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 automate home lab backup devices 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.

Important Note (2026):
This script requires real SSH access to network devices.

Best use case: Run this against physical gear, Cisco Modeling Labs (CML), or EVE-NG with licensed images.
For learning: Test the script logic first (“dry-run”), then deploy when you have real access.

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 automate home lab backup devices all starts with one script.

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

Leave a Reply

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