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: stripped = lambda s: „“.join(i … 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 – 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()  

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

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; server_name mail.example.org autodiscover.example.org; return 301 … 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] [proxy_http:error] [pid 20887] [client x.x.x.x:31372] … Weiterlesen

Python: Snippet/Experiment – Syslog Server mit globalen und Host Filtern

Der Code ist nicht fertig und war mal ein Labor Versuch. Es lassen sich globale und Host Filter setzen wo diese zutreffen werden die Logs in ein extra File geschrieben. Config file: #!/usr/bin/env python # -*- coding: utf-8 -*- # Config definition class CFG: def __init__(self): # Path for logfiles self.syslogpath = „/home/mthoma/_dev/syslog/log/“ # Listner … Weiterlesen

Python: Snippet Multiprocessing mit Ergebnis

Beispiel für Parallelisierung von Jobs mit Ergebnis welche als Liste zurückgegeben werden. #!/usr/bin/env python # -*- encoding: utf-8; py-indent-offset: 4 -*- import os from multiprocessing import Pool def worker(job): x, y = job result = x ** y return os.getpid(), result if __name__ == ‚__main__‘: jobs = [(1, 2), (3, 4), (5, 6), (11, 12), … 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 os.path.isdir(os.path.join(a_dir, name))] def delete_files(f): # … 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, Dec 17 2016, 20:42:59) [MSC … Weiterlesen

Python: Snippet – Datum / Zeitstempel älter als X Tage z.B. 90 Tage

Mit dem Typ datetime lässt sich direkt rechnen was das ganze sehr bequem macht. Beispiel: import datetime old_time = datetime.datetime(2016, 4, 11, 10, 57, 23) today = datetime.datetime.today() age = today – old_time if age.days > 90: print „Older than 90 days“ else: print „Not older than 90 days“ Beispiel Datei Alter: import datetime import … Weiterlesen

Check_MK: Automation via Web Service

Wenn man Dinge automatisieren möchte kann man das über die Webservices von Check_MK machen. Dazu gibt es einen schönen Artikel von Check_MK selbst: https://mathias-kettner.de/checkmk_multisite_automation.html Leider ist es aus der URL nicht leicht rauszufinden welche Variablen man mitgeben muss um z.B. einen Service zu Ack’en. Es gibt aber einen Trick um das einfach herauszufinden. In den Global … 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 + string.digits) for _ in range(16)) … Weiterlesen

Subnetze und IP Adressen extrahieren aus SPF Records (z.B. Office365 oder Google Apps for Business)

Wenn man bei Office365 oder Google Apps for Business einen eigenen Mailserver (Postfix) vorschalten möchte beim versenden/empfangen muss man die Mailserver von Microsoft/Google Whitelisten in den mynetworks bei Postfix. Das Script löst alle SPF Record includes auf und generiert CIDR Maps die sich in Postfix einbinden lassen. Beispiel: max@dev1:~$ python get_subnets_of_spf_record_mynetwoks.py Working on job office365 … Weiterlesen

Postfix Mails aus der Queue von bestimmten Absendern löschen

Mit diesen Kommandos lassen sich aus der Postfix Queue Mails löschen die dort wegen Zustellungsproblemen liegengeblieben sind. Besonders wenn man einen Kunden drauf hat mit Malware Infektion und man die Reste aus der Queue beseitigen möchte. Für die komplette Domain: postqueue -p | tail -n +2 | awk ‚BEGIN { RS = „“ } /@example\.com/ … Weiterlesen

HP Server Tools für Debian/Ubuntu

HP stellt für verschiedene Linux Distributionen seine eigenen Tools bereit. Unteranderem System Health Application and Command line Utilities, iLO Online Configuration Utilities und die Insight Management Agents. HP SDR (Software Delivery Repository): http://downloads.linux.hpe.com/SDR/index.html Repository für Debian 8 (jessie) hinzufügen /etc/apt/sources.list.d/HP-mcp.list anlegen deb http://downloads.linux.hpe.com/SDR/repo/mcp jessie/current non-free Alternativ Repository für Ubuntu 16.04 LTS hinzufügen /etc/apt/sources.list.d/HP-mcp.list anlegen deb http://downloads.linux.hpe.com/SDR/repo/mcp xenial/current … Weiterlesen

Check_MK: Agent Monitoring via SSH

Falls eine unverschlüsselte Abfrage des Check_MK Agemten nicht in Frage kommt ist es möglich den Agenten über SSH abzurufen. SSH Key erzeugen in der OMD Umgebung OMD[dev1]:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/omd/sites/dev1/.ssh/id_rsa): Created directory ‚/omd/sites/dev1/.ssh‘. Enter passphrase (empty for no passphrase): Enter same … Weiterlesen