Timo Henke

Timo HenkeCross-Media Design
& Produkttests

Dies, das und das anderealles was woanders nicht reinpasst


Hier werde ich kleine hilfreiche Scripts, Code-Schnispel, Links zu Webseiten und was auch immer ich für Verbreitungswürdig halte, reinpacken. Vorerst wird hier einfach alles chronologisch absteigend zu finden sein, später dann evtl. mit Kategorien etc.

Ich hoffe, es ist für den ein oder anderen etwas dabei. Bei Rückfragen oder Kommentaren einfach die Kontakt-Seite bemühen

Extract MP3 from MP4



Es kommt des öfteren Vor, dass ich aus mir vorliegenden MP4 Videos nur die Tonspur extrahieren möchte. Es gibt sehr viele Wege dies zu tun aber der, wie ich finde, einfachste Weg ist ein BASH-Einzeiler unter Verwendung von avconf:

for mp4file in /folder/with/mp4files/*.mp4; do avconv -i "$mp4file" -vn -ab 128k "${mp4file%.mp4}.mp3"; done

Hiermit wird für jede .mp4 Datei eine .mp3 Datei mit der Tonspur angelegt. Natürlich kann man dieses Vorgehen auch für andere Anwendungsscenarien einsetzen, be creative :-)

Nagios: Mass Acknowledge



Als Linux Administrator hat man des öfteren das Problem, dass man auf diversen Servern für bestimmte Services oder gar ganze Hosts Downtimes definiert, weil man z.B. Wartungsarbeiten durchführt.

Problematisch wird es allerdings dann, wenn man diese ganzen Downtimes wieder entfernen möchte. Denn: Nagios bietet hierfür keine Bordmittel.

Aufgrund dieser Tatsache habe ich ein kleines rudimentäres PHP Script geschrieben, mit dessen Hilfe man unter Verwendung eines regulären Ausdrucks alle Service- oder Hostdowntimes finden und aufheben lassen kann.

<?php

	define('NAGIOS_DAT', '/var/nagios/status.dat' ); // path to nagios status.dat file
	define('NAGIOS_CMD', '/var/nagios/rw/nagios.cmd' ); // path to nagios rw command-pipe

	$matches = '(comment=xxx)'; // regular expression to detect desired downtime blocks

	if( preg_match_all('/(servicedowntime|hostdowntime) \{(.*?)\}/si',file_get_contents( NAGIOS_DAT ),$m) )
	{
		foreach( $m[1] as $id => $typ )
		{
			if( preg_match('/'.$matches.'/si',$m[2][$id]) )
			{
				$downtime = [];
				foreach( preg_split('/\r?\n/',trim($m[2][$id])) as $row )
				{
					list($k,$v) = explode('=',trim($row),2);
					if( $k == 'downtime_id' )
					{
						$cmd = ($typ == 'servicedowntime') ? 'DEL_SVC_DOWNTIME' : 'DEL_HOST_DOWNTIME';
						$Command = sprintf('[%s] %s;%d'."\n", time(), $cmd, $v);
						echo $Command;
						file_put_contents( NAGIOS_CMD, $Command, FILE_APPEND );
						break;
					}
				}
			}
		}
	}

Sicherlich kann man so ein Script auch in BASH schreiben, ich persönlich bin aber eher ein Fan von PHP und auf dem Nagios-Server meines Vertrauens ist PHP entsprechend vorhanden.

Mir hat das Script bereits mehrfach geholfen, ggf. hilft es dem ein oder anderen auch oder dient als Idee für eigene Implementierungen.

Odin Plesk: eigene Templates für Apache und Nginx



Sofern man an den Standardkonfigurationen der VHosts für den Apache und / oder den Nginx etwas anpassen möchte, so wie in meinem Fall das deaktivieren des "X-Powered-By Plesklin" Headers, ist es ratsam nicht am Original rumzufummeln sondern an einer Kopie.

Plesk bietet hier die Option, dass man eigene Templates in einem "custom" Ordner anlegt und diese vor dem "default" geladen werden.

Um nun eigene Templates für den Apache und den Nginx anzulegen und so auch bei Updates seine Modifikationen nicht zu verlieren kann man das folgende als ROOT an der Linux Konsole ausführen:

Der Code ist für ein Centos7 mit Plesk 12.5 System und muss ggf. bzgl. der Pfade auf anderen Distributionen angepasst werden.

#!/bin/bash

mkdir -p /usr/local/psa/admin/conf/templates/custom/domain;
cp /usr/local/psa/admin/conf/templates/default/server.php /usr/local/psa/admin/conf/templates/custom/server.php;
cp /usr/local/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php;
/usr/local/psa/admin/sbin/httpdmng --reconfigure-all;

Nginx: GZip aktivieren



Evtl. kennen das einige von euch: Man macht sich die Mühe und optimiert die .htaccess für den Apache um alle sinnvollen Dateitypen durch GZip / Deflate komprimieren zu lassen und somit die Ladezeiten zu drücken und / oder die Datenmenge für mobile Besucher zu verringern.

Der Apache macht dies auch anstandslos aber der werte Reverse-Proxy liefert diese Daten (.css, .js etc.) dann leider doch wieder unkomprimiert aus.

Das kleine Codeschnispel hier legt eine zusätzliche .conf Datei für den nginx ab, in welcher die Komprimierung aktiviert wird.

Der Code ist für ein Centos7 mit Plesk System und muss ggf. bzgl. der Pfade auf anderen Distributionen angepasst werden.

#!/bin/bash
/bin/cat << EOF >> /etc/nginx/conf.d/zz99_gzip_on.conf
    gzip on;
    gzip_comp_level 4;
    gzip_http_version 1.1;
    gzip_proxied any;
    gzip_min_length 1100;
    gzip_buffers 16 8k;
    gzip_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript application/xhtml+xml;
    # Disable for IE < 6 because there are some known problems
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    # Add a vary header for downstream proxies to avoid sending cached gzipped files to IE6
    gzip_vary on;
EOF
chown root:nginx /etc/nginx/conf.d/zz99_gzip_on.conf;
chmod 600 /etc/nginx/conf.d/zz99_gzip_on.conf;
service nginx restart;
A link not to be clicked on