30 mars 2020

Jag är lat!

Vad gör man när man skall lägga in ytterligare konfiguration i +200 switchar och inte orkar klicka i WebUI eller SSH till alla, en efter en.

En av mina första chefer sa till mig en gång, ”Tomas, lär dig scripta, det kommer du ha nytta av”. Då lärde jag mig bash och perl, och dessa språk har jag använt mig av i snart 25 år för att göra repetitiva uppgifter lite lättare.

Denna gång handlade det om att lägga till SNMP read-access för ytterligare en IP adress i Fortiswitchar. IP adresserna till samtliga switchar fanns i asset-registret så en text-fil med dessa skapades. Sedan fram med bash och lite expect-kod. (användarnamn och lösen är givetvis omsatta nedan)

 

====== set_snmp_fortiswitch.bash =======

#!/bin/bash

 for ip in `cat fortiswitchws.txt`; do

  ./set_snmp_switchconfig.expect $ip

done

====== set_snmp_fortiswitch.bash =======

====== set_snmp_switchconfig.expect ======

#!/usr/bin/expect

#Usage set_snmp_switchconfig.expect <host>  

set timeout 10

spawn ssh username@[lindex $argv 0]

expect "yes/no" { 

                      send "yes\r"

                      expect "*?assword" { send "password\r" }

                      } "*?assword" { send "password\r" }

 

expect "# " { send "config system snmp community\r" }

expect "# " { send "edit 1\r" }

expect "# " { send "config hosts\r" }

expect "# " { send "edit 2\r" }

expect "# " { send "set ip 10.10.10.10 255.255.255.255\r" }

expect "# " { send "next\r" }

expect "# " { send "end\r" }

expect "# " { send "end\r" }

expect "# " { send "exit\r" }

====== set_snmp_switchconfig.expect ======

En uppgift som hade tagit några minuter per switch att utföra tog nu istället under 15 minuter att skapa och sedan en sekund att exekvera.

Om andra konfigurationer skall ändras finns nu script att utgå från, och andra CLI-kommandon kan snabbt skickas ut till samtliga switchar igen.

/Tomas