Monthly Archives: February 2014

dmesg mit Zeitangabe

Die dmesg Zeitangaben sind nicht wirklich zu lesen, aber manchmal braucht man sie dann doch eben. So einfach ist es dann doch wieder nicht:

# perl -e 'openf,"/proc/uptime";=~/\s/;$x=time-$`;for(qx{dmesg}){s/^\[\s*([\d.]+)\]\s+//;@t=(localtime($x+$1))[5,4,3,2,1,0];$t[0]+=1900;$t[1]+=1;printf"[%04d-%02d-%02d%02d:%02d:%02d] %s",@t,$_}'

MtGox Trader

Nachdem MtGox jetzt endgültig tot ist kann ich auch endlich mal meinen Trading Bot veröffentlichen. Eigentlich wollte ich das schon früher machen, aber bin noch nicht dazu gekommen.
Der Bot handelt nur wenn es auch einen Gewinn abwirft und somit kann man eigentlich nichts verlieren. Dadurch ist er natürlich sehr sehr langsam und meistens habe ich nur einen Trade pro Tag hinbekommen, aber dafür mit Gewinn.

Die Konfiguration ist nicht ganz einfach, weil man die sqlite Datenbank einmal per Hand befüllen muss. Wenn man Bitcoins kaufen will, muss man einen Eintrag in die Tabelle “sold” mit der Anzahl der Bitcoins und eines Preises füllen. Der Preis bestimmt wie niedrig der Preis des nächsten kaufes sein muss. Abhängig je nachdem wie hoch man die Gewinnschwelle einstellt.

Den Code gibt es auf github.com.

Wer nicht immer auf Logfiles lesen steht – es gibt auch ein kleines mini Webinterface dass die letzten Transkationen anzeigt und einen Graphen mit pchart erstellt.

Nagios check_disk wrapper für PHP

Manchmal muss man auch mal die Disk durch einen einfachen HTTP request abfragen. Warum also nicht bestehende Scripte, wie das Nagios Plugin check_disk dafür verwenden. Anbei ein kleines Script, dass genau dieses macht. Eine kleine Einschränkung, der HTTP Response Code ist bei Warning und Critial der gleiche – natürlich leicht zu erweitern ;)

<?php

// global binary
$NAGIOS_DISK = "/usr/lib/nagios/plugins/check_disk";
$DISK_KEY = "Uvg2kFMfy3DU";

if (isset($_GET['key'], $_GET['w'], $_GET['c'])) {
	// okay
	$key = $_GET['key'];
	$warning = $_GET['w'];
	$critical = $_GET['c'];

	if(! (preg_match('/^[0-9]+%$/', $warning) && preg_match('/^[0-9]+%$/', $critical)) ) {
		echo "Critical or Warning values are not a valid value.\n";
		header("HTTP/1.0 510 Not Extended");
		exit;
	}

	if ($key == $DISK_KEY ) {
		// correct key

		$return = shell_exec("$NAGIOS_DISK -l -x /dev/shm -w $warning -c $critical");

		if (stripos($return,"OK")) {
			print "$return\n";
			header("HTTP/1.0 200 Okay");
		} else {
			print "$return\n";
			header("HTTP/1.0 507 Insufficient Storage");
		}

	} else {
		print "ERROR\n";
		header("HTTP/1.0 401 Unauthorized");
	}

} else {
	// error
	print "ERROR\n";
	header("HTTP/1.0 418 I’m a teapot");
}

?>

Android und OpenVPN

Auf einem aktuellen Android (4.x) einen OpenVPN Client einzurichten ist dank OpenVPN for Android auch kein Problem mehr. Einfach die App installieren und man könnte eigentlich schon fast loslegen, wenn man auch einen OpenVPN Server hätte.

Die Jungs von Tinfoil Security haben sich ein paar Minuten hingesetzt und haben ein sicheres Script geschrieben, dass einen Server in Minuten aufsetzt. Dieses ist zwar nur für Debian basierte Systeme geeignet, aber das sollten die meisten sein die man mal so hat. Notfalls kann man sich schnell ein Droplet bei DigitalOcean, etc. einrichten.
Das Script muss man als root ausführen und es erstellt die Server und Client Konfiguration, sowie das Zertifikat. Anschließend muss man nur noch /etc/openvpn/client.ovpn sicher (nein nicht per Email!) auf sein Android laden und man kann sich per ipv4 sicher in öffentlichen Netzen herumtreiben. Happy VPN!

Offene SSH Verbindungen anzeigen

Wow! Ich glaube das ich den Blog ein bisschen vernachlässigt habe. Es sind schon ein paar Monate vergangen seitdem ich das letzte mal etwas geschrieben habe, aber natürlich war ich in der IT nicht untätig. Bin jedoch seit ein paar Wochen kein Blackberry jünger, sondern ein Android Evangelist geworden und bin mit dem Nexus 5 super zufrieden.

In den vergangenen Monaten habe ich selber natürlich in vielen Blogs und Seiten gelesen und dabei recherchiert. So viele Leute beteiligen sich am Open Source und so will ich auch mal wieder was der Community zurückgeben – so gut es geht.

Fangen wir mal etwas klein an und als erstes gibt es ein Script das ganz einfach offene SSH Verbindungen anzeigt und man sich somit schnell auf einen Server einloggen kann. Das ist sehr Hilfreich, wenn man auf vielen Server unterwegs ist und deren DNS oder IP man nicht immer im Kopf hat. Leider hatte ich noch nicht die Lust das Script “IPv6 ready” zu machen, aber vielleicht findet sich da ja jemand ;)

Update: Das Script kann jetzt ordentlich mit v6 umgehen und auch Optionen der SSH Verbindung. Läuft wunderbar unter Linux und MacOSX.

Update 2: noch besser: https://github.com/bert2002/ossh