Autor: Maximilian Thoma

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 […]

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] […]

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 […]

Weiterlesen

Festplatte aus einem kaputten Seagate NAS System mounten – EXT4 mit 64k Blocksize mounten

Neulich hat mir ein Kunde eine kaputte Seagate NAS gebracht, eine der Disks hatte ein Problem, die NAS hat nicht mehr zuverlässig gebootet. Ich habe die Disks in meinen Linux PC eingebaut, mit mdadm –scan –assemble hat er die Software RAIDs gefunden. Auf ein Problem bin ich dann doch gestoßen, […]

Weiterlesen

Python: Entfernen von Steuerzeichen in ASCII Strings

Bin heute wieder mal über ein Problem mit ASCII Strings gestolpert. Im String war ein CTRL+C welches als \x03 in der ASCII Tabelle ist. Ich bin auf eine Seite gestoßen welche für alle möglichen Script und Programmiersprachen Codesnippets bereitstellt um Steuerzeichen zu entfernen. ASCII Tabelle bei Wikipedia: https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange Hier für Python: […]

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 […]

Weiterlesen

Python: Snippet – E-Mail versenden, alternative zu Mailer

#!/usr/bin/env python # -*- coding: utf-8 -*- import smtplib from email.mime.text import MIMEText def postmaster(mfrom, mto, msubject, message, smtphost): msg = MIMEText(message.encode(„utf-8“)) msg[‚Subject‘] = msubject msg[‚From‘] = mfrom msg[‚To‘] = mto s = smtplib.SMTP(smtphost) s.sendmail(msg[‚From‘], msg[‚To‘], msg.as_string()) s.quit()  

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, […]

Weiterlesen

NGINX Reverse Proxy für Exchange 2016

Folgende Pakete müssen auf einem Ubuntu 16.04 LTS installiert werden: apt install nginx nginx-extras Die Konfiguration wird abgelegt unter /etc/nginx/conf.d/exchange.conf Folgende Dinge müssen angepasst werden: DNS Name unter dem OWA etc. erreichbar sein soll z.B. mail.example.org Autodiscover DNS Name z.B. autodiscover.example.org Interner Exchange Server z.B. exchange-server.example.internal server { listen 80; […]

Weiterlesen

Check_MK: Problem mit Apache HTTP Proxy – SELinux blockt Reverse Proxy Verbindung zur Check_MK Instanz

Habe gerade auf ein frisch installiertes CentOS 7.4 Check_MK 1.4.0p19 installiert. Nach dem Start einer OMD Instanz kommt nur die Fehlermeldung: OMD: Site Not Started You need to start this site in order to access the web interface. Im Apache Log ist folgendes zu sehen: [Mon Dec 04 08:50:48.097245 2017] […]

Weiterlesen

Python: Experiment/Snippet – Komprimieren und löschen von Logfiles nach X Tagen

Ein Ansatz für Logverzeichnisse im Format /log/<yyyy>/<mm>/<dd>/<div. logsfiles> #!/usr/bin/env python import gzip import shutil import os import datetime import time ############################################# # Config ############################################# # Path of Logfiles # Structure is /opt/log/<YYYY>/<MM>/<DD>/ gpath=’/opt/log/‘ # hold logs for x days hold_time=180 ############################################# def get_immediate_subdirectories(a_dir): return [name for name in os.listdir(a_dir) if […]

Weiterlesen

Python: Snippet – Kaputten UTF-8 String reparieren

Ich habe aus der Datenbank einen String zurückbekommen der UTF-8 war aber falsch kodiert zurückgegeben wurde. So wurde aus Geschäftsstelle -> Gesch├ñftsstelle Folgendes Snippet kann einen kaputten UTF-8 String neu auf UTF-8 kodieren: name_kaputt = ‚Gesch\xc3\xa4ftsstelle‘ name = “.join(chr(ord(c)) for c in name_kaputt).decode(„utf-8“) print name_kaputt print name Ergebnis: Python 2.7.13 (v2.7.13:a06454b1afa1, […]

Weiterlesen

Einfacher Random String Generator in Python

“.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(N)) N = Anzahl der Stellen z.B. Uppercase + Digits mit 16 Stellen: OMD[dev1]:~$ python Python 2.7.13 (default, Jul 24 2017, 12:14:45) [GCC 6.3.0] on linux2 Type „help“, „copyright“, „credits“ or „license“ for more information. >>> import string >>> import random >>> “.join(random.choice(string.ascii_uppercase + […]

Weiterlesen