Ansible: Outputs parsen mit TEXTFSM (z.B. von Cisco)

Um Outputs von Kommandos z.B. von Cisco zu parsen in Ansible kann man TEXTFSM verwenden. Dazu muss neben Ansible das textfsm Modul mit pip installiert werden. TEXTFSM ist ein Template basierender Parser für Outputs. Installation der benötigten Pakete: Beispiel TEXTFSM Parser Datei inventory_cisco_ios.textfsm: Für viele Netzwerk Hersteller wie z.B. Cisco gibt es bereits fertige Templates, … Weiterlesen

Probleme mit PXE Boot nach Migration von Cisco Catalyst 65xx zu Nexus 7k

Nach der Migration von einem Cisco Catalyst 65xx zu einem Nexus 7k hat der PXE Boot von VM Maschinen nicht mehr funktioniert. Auf dem L3 Interface war ein IP Helper konfiguriert. Das neue L3 Interface am Nexus ist wie folgt konfiguriert: Folgende Options sind auf dem DHCP für das Netz 10.123.123.0/24 konfiguriert: option 66 10.200.200.250,10.200.200.251 … Weiterlesen

Ansible Playbooks für Cisco Geräte

Ich habe jetzt mal angefangen kleine Snippets / Playbooks in einem Github Repo zu sammeln. lanbugs/cisco_ansible_playbooks: Ansible playbooks collection for Cisco network devices (github.com) Freue mich auf Feedback und viel Spaß damit 🙂 Beispiel „Interface Description setzen bei Interfaces wo ein Access Point angeschlossen ist“:

Cisco APIC API – Umsetzung der DCACI Schulung nur über API

Hier zur DCACI Schulung die Umsetzung nur auf API in Python, die Schulung ist super, bezieht sich aber hauptsächlich auf die GUI, das Interessante an einem APIC ist ja ich möglichst viel über Automatisierung / die API löse. Alles weitere hier: lanbugs/DCACI_Lab_Solution_REST_API: DCACI training solution only with API (github.com) Beispiel: Lab 3: Task 1 – … Weiterlesen

Alte Cisco Geräte und SSH Warnung „no matching key exchange method found“ und „no matching cipher found“

Auf älteren Cisco Geräten trifft man oft noch auf SSH mit dem Schlüsselaustauschverfahren „diffie-hellman-group1-sha1“ und Chiffren wie „aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc“, dies führt auf aktuellen Linux Distributionen zu folgenden Fehlermeldungen no matching key exchange method found no matching cipher found Um temporär auf das Gerät zu kommen können Parameter beim aufruf von SSH mitgegeben werden: Alternativ kann das … Weiterlesen

Commandline Tool for exporting Cisco hardware inventory via SNMP

This tool exports every hardware asset from an Cisco device with a serial number. You can export the list as table or CSV. Download: https://gist.github.com/lanbugs/4dbed5e0e8a7d5b6d29c4ea9b9e93bb2 >python cisco_inventory.py -h usage: cisco_inventory.py [-h] -H HOST -v SNMP_VERSION [-C SNMP_COMMUNITY] [-u SNMP_USER] [-A SNMP_AUTH] [-a SNMP_AUTH_METHOD] [-X SNMP_PRIVACY] [-x SNMP_PRIVACY_METHOD] [-L SNMP_SECURITY] [–csv] Cisco inventory grabber Version 0.1 Written … Weiterlesen

Commandline Tool to export current registered users at APs from an Cisco Wireless LAN Controller (WLC)

This tool exports all current clients on all APs assigned to the WLC. You can export as CSV or as table. Download: https://gist.github.com/lanbugs/6dc874ad0736424c5c7808f01ec78f96 $ python cisco_ap_clients_grabber.py -h usage: cisco_ap_clients_grabber.py [-h] -H HOST -v SNMP_VERSION [-C SNMP_COMMUNITY] [-u SNMP_USER] [-A SNMP_AUTH] [-a SNMP_AUTH_METHOD] [-X SNMP_PRIVACY] [-x SNMP_PRIVACY_METHOD] [-L SNMP_SECURITY] [–csv] Cisco AP clients grabber Version 0.1 Written … Weiterlesen

CLI Tool – Export AP inventory from an Cisco Wireless LAN Controller (WLC)

This tool exports the complete AP inventory from an Cisco WLC. You can create an CSV export or an table. Download: https://gist.github.com/lanbugs/e86042c0b2afaf7166637a9aa9711cb6 $ python cisco_wlc_ap_grabber.py -h usage: cisco_wlc_ap_grabber.py [-h] -H HOST -v SNMP_VERSION [-C SNMP_COMMUNITY] [-u SNMP_USER] [-A SNMP_AUTH] [-a SNMP_AUTH_METHOD] [-X SNMP_PRIVACY] [-x SNMP_PRIVACY_METHOD] [-L SNMP_SECURITY] [–csv] Cisco AP WLC inventory grabber Version 0.1 Written … Weiterlesen

Ansible: Template Engine nutzen um Cisco Konfigurationen zu erzeugen

Ansible verwendet als Template Engine Jinja2. Als Beispiel wird für einen Switch die Radius Konfiguration erzeugt. Man kann direkt vom Template aus die Konfiguration auf ein Gerät fallen lassen oder so wie in diesem Fall einfach als File speichern. Eine ausführliche Anleitung was man alles mit der Jinja2 Template Engine machen kann ist unter http://jinja.pocoo.org/docs/2.10/ zu … Weiterlesen

Ansible: CLI Kommandos auf Cisco Devices ausführen und Ausgaben speichern

Beispiel Playbook exec_command.yaml: — – hosts: switch1 connection: local gather_facts: False vars: cli: host: „{{ inventory_hostname }}“ username: „{{ ansible_user }}“ password: „{{ ansible_ssh_pass }}“ tasks: – name: Call show inventory ios_command: commands: show inventory provider: „{{ cli }}“ register: output – name: Store output to file copy: content=“{{ output.stdout[0] }}“ dest=“out/inventory_{{ inventory_hostname }}.txt“ Mit … Weiterlesen

Ansible: Cisco Netzwerkautomatisierung mit Ansible – Erste Schritte

Ich habe kürzlich Angefangen meine ersten Gehversuche mit Ansible zu machen. Ziel ist unteranderem meine Linux Maschinen zu managen als auch Cisco Geräte. Hier meine ersten Erfahrungen mit Ansible. Was ist der Vorteil von Ansible? Opensource reichhaltiges Plugin Angebot (Ansible Galaxy) viele Artikel & Tipps im Internet, kein Nischenprodukt es ist in Python geschrieben 😉 … Weiterlesen

Cisco/Python: Backup der Konfiguration bei write Event auf externen Server

Diverse Cisco Geräte können bei einem write Event die Konfiguration an einen anderen Server z.B. über HTTP pushen. Cisco Config: archive path http://1.2.3.4/cisco_config/put/$h-$t write-memory Apache /etc/httpd/conf.d/zzz_cisco_backup.conf: WSGIDaemonProcess cisco_backup user=apache group=apache threads=10 WSGIPythonPath /opt/cisco_backup/web_root WSGIScriptAlias /cisco_backup /opt/cisco_backup/web_root/cisco_backup.wsgi <Directory /opt/cisco_backup/web_root> WSGIProcessGroup cisco_backup WSGIApplicationGroup %{GLOBAL} WSGIScriptReloading On Order deny,allow Allow from all <Files cisco_backup.py> Require all granted </Files> … Weiterlesen

Python: Snippet: SSH shell on Cisco devices

Mit dem Snippet können Kommandos auf einer Cisco Shell via SSH ausgeführt werden. #!/usr/bin/env python import paramiko import sys def send_string_and_wait_for_string(command, wait_string, should_print): shell.send(command) receive_buffer = „“ while not wait_string in receive_buffer: receive_buffer += shell.recv(1024) if should_print: print receive_buffer return receive_buffer client = paramiko.SSHClient() client.load_system_host_keys() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(„10.62.62.10″, username=“testuser“, password=“testpasswd“, look_for_keys=False, allow_agent=False) shell = client.invoke_shell() send_string_and_wait_for_string(„“, … Weiterlesen