<?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/"
	>

<channel>
	<title>PSEiBlog &#187; Remco</title>
	<atom:link href="http://www.pseiko.nl/blog/author/remco/feed" rel="self" type="application/rss+xml" />
	<link>http://www.pseiko.nl/blog</link>
	<description>Lalalala… uh… huh???</description>
	<lastBuildDate>Fri, 07 May 2010 14:02:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Automatically remove duplicate IP&#8217;s in Iptables</title>
		<link>http://www.pseiko.nl/blog/375/automatically-remove-duplicate-ips-in-iptables</link>
		<comments>http://www.pseiko.nl/blog/375/automatically-remove-duplicate-ips-in-iptables#comments</comments>
		<pubDate>Wed, 09 Dec 2009 15:01:58 +0000</pubDate>
		<dc:creator>Remco</dc:creator>
				<category><![CDATA[Computer & Technology Related]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[clean]]></category>
		<category><![CDATA[duplicate]]></category>
		<category><![CDATA[Iptables]]></category>

		<guid isPermaLink="false">http://www.pseiko.nl/blog/?p=375</guid>
		<description><![CDATA[Many scripts like my Persistent Iptables bans from Fail2Ban script add a bunch of DROP statements to Iptables chains.
I noticed that quite a lot of people ask questions on mailing lists and forums requesting a method to automatically remove any duplicate IP&#8217;s that might exist within a given chain.
Well, that&#8217;s quite easy to accomplish really, [...]]]></description>
			<content:encoded><![CDATA[<p>Many scripts like my <a href="http://www.pseiko.nl/blog/288/persistent-iptables-bans-from-fail2ban">Persistent Iptables bans from Fail2Ban script</a> add a bunch of DROP statements to Iptables chains.</p>
<p>I noticed that quite a lot of people ask questions on mailing lists and forums requesting a method to automatically remove any duplicate IP&#8217;s that might exist within a given chain.</p>
<p>Well, that&#8217;s quite easy to accomplish really, just run this little PHP script I created as root, and your Iptables is once again clean as a whistle!</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**
 * Configuration
 */</span>
<span style="color: #000088;">$chain</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Blocklist&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$safelist</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;x.x.x.x&quot;</span>
                 <span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;y.y.y.y&quot;</span>
                 <span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;z.z.z.z&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">shell_exec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'iptables -S '</span><span style="color: #339933;">.</span><span style="color: #000088;">$chain</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$iparr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">,</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$j</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$ref</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span>sizeof<span style="color: #009900;">&#40;</span><span style="color: #000088;">$iparr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr_count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$iparr</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000088;">$ref</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$j</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$iparr</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
                <span style="color: #000088;">$j</span><span style="color: #339933;">++;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">sort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ref</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span>sizeof<span style="color: #009900;">&#40;</span><span style="color: #000088;">$ref</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$ip</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$ref</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$ref</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">stristr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;0.0.0.0&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$ip</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">2</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #990000;">in_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip</span><span style="color: #339933;">,</span><span style="color: #000088;">$safelist</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">in_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip</span><span style="color: #339933;">,</span><span style="color: #000088;">$ref</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Duplicate IP found: <span style="color: #006699; font-weight: bold;">$ip</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">in_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip</span><span style="color: #339933;">,</span><span style="color: #000088;">$ref</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #990000;">shell_exec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'iptables -D '</span><span style="color: #339933;">.</span><span style="color: #000088;">$chain</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' -s '</span><span style="color: #339933;">.</span><span style="color: #000088;">$ip</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' -j DROP'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                        <span style="color: #000088;">$ref</span><span style="color: #009900;">&#91;</span><span style="color: #990000;">array_search</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip</span><span style="color: #339933;">,</span><span style="color: #000088;">$ref</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.pseiko.nl/blog/375/automatically-remove-duplicate-ips-in-iptables/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Countering PHPMyAdmin scanners with Fail2Ban</title>
		<link>http://www.pseiko.nl/blog/367/countering-phpmyadmin-scanners-with-fail2ban</link>
		<comments>http://www.pseiko.nl/blog/367/countering-phpmyadmin-scanners-with-fail2ban#comments</comments>
		<pubDate>Wed, 09 Dec 2009 14:44:40 +0000</pubDate>
		<dc:creator>Remco</dc:creator>
				<category><![CDATA[Computer & Technology Related]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Fail2Ban]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[regular expression]]></category>

		<guid isPermaLink="false">http://www.pseiko.nl/blog/?p=367</guid>
		<description><![CDATA[While examining my webserver statistics, I noticed that quite a lot 404&#8217;s are being served on most of my domains to scan bots that are trying to find exploits in possible running PHPMyAdmin configurations.
Though harmless if you keep a clean ship with a decently configured PHPMyAdmin and the latest updates like I do, I still [...]]]></description>
			<content:encoded><![CDATA[<p>While examining my webserver statistics, I noticed that quite a lot 404&#8217;s are being served on most of my domains to scan bots that are trying to find exploits in possible running PHPMyAdmin configurations.<br />
Though harmless if you keep a clean ship with a decently configured PHPMyAdmin and the latest updates like I do, I still decided I couldn&#8217;t let this behaviour unanswered. So I took action, and wrote a small fail2ban filter that permanently drops all traffic from the IP addresses these scans originate from, like I do with every address that misbehaves in any way.</p>
<p>The regex used won&#8217;t capture all attempts, but with my configuration only 1 hit is enough to get you banned (the scripts these scans call are main.php and config.inc.php, which aren&#8217;t to be called directly, especially not when they fail with a 404 like these), and all scanning attempts I&#8217;ve seen so far cycle through at least 20 different combinations.</p>
<p>Well, enough talk, here is the filter.d file:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Fail2Ban configuration file
</span><span style="color: #666666; font-style: italic;">#
</span><span style="color: #666666; font-style: italic;"># Author: Remco Overdijk
</span><span style="color: #666666; font-style: italic;">#
</span><span style="color: #666666; font-style: italic;"># $Revision: 4 $
</span><span style="color: #666666; font-style: italic;">#
</span>
<span style="color: #009900;">&#91;</span>Definition<span style="color: #009900;">&#93;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Option:  failregex
</span><span style="color: #666666; font-style: italic;"># Notes.:  regex to match the 404'ed PMA file in the logfile. The
</span><span style="color: #666666; font-style: italic;">#          host must be matched by a group named &quot;host&quot;. The tag &quot;&lt;HOST&gt;&quot; can
</span><span style="color: #666666; font-style: italic;">#          be used for standard IP/hostname matching and is only an alias for
</span><span style="color: #666666; font-style: italic;">#          (?:::f{4,6}:)?(?P&lt;host&gt;\S+)
</span><span style="color: #666666; font-style: italic;"># Values:  TEXT
</span><span style="color: #666666; font-style: italic;">#
</span>failregex <span style="color: #339933;">=</span> <span style="color: #339933;">&lt;</span>HOST<span style="color: #339933;">&gt;</span> <span style="color: #339933;">-.*</span><span style="color: #0000ff;">&quot;GET .*(php|pma|PMA|p/m/a|db|sql|admin).*/(config/config\.inc|main)\.php.*&quot;</span><span style="color: #339933;">.*</span><span style="color:#800080;">404.</span><span style="color: #339933;">*</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Option:  ignoreregex
</span><span style="color: #666666; font-style: italic;"># Notes.:  regex to ignore. If this regex matches, the line is ignored.
</span><span style="color: #666666; font-style: italic;"># Values:  TEXT
</span><span style="color: #666666; font-style: italic;">#
</span>ignoreregex <span style="color: #339933;">=</span></pre></div></div>

<p>And this is of course accompanied by a bit in jail.conf:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#91;</span>apache<span style="color: #339933;">-</span>pma<span style="color: #009900;">&#93;</span>
&nbsp;
enabled <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span>
filter <span style="color: #339933;">=</span> apache<span style="color: #339933;">-</span>pma
action <span style="color: #339933;">=</span> iptables<span style="color: #339933;">-</span>allports<span style="color: #009900;">&#91;</span>name<span style="color: #339933;">=</span>pma<span style="color: #009900;">&#93;</span>
mail<span style="color: #339933;">-</span>whois<span style="color: #009900;">&#91;</span>name<span style="color: #339933;">=</span>pma<span style="color: #339933;">,</span> dest<span style="color: #339933;">=&lt;</span>YOURADDRHERE<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#93;</span>
logpath <span style="color: #339933;">=</span> <span style="color: #339933;">/</span><span style="color: #000000; font-weight: bold;">var</span><span style="color: #339933;">/</span><span style="color: #990000;">log</span><span style="color: #339933;">/</span>apache2<span style="color: #339933;">/</span>access_log
bantime <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>
maxretry <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span></pre></div></div>

<p>Works for me, another 20 additional IPs/day onto the shitlist!</p>
<blockquote><p><b>Update:</b> It seems another variation of these scans are hitting the NIC&#8217;s quite often; One for Zen Cart to be more precise.<br />
You can easily add support countering this scanner as well, simply by expanding the failregex with this line:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">^<span style="color: #339933;">&lt;</span>HOST<span style="color: #339933;">&gt;</span> <span style="color: #339933;">-.*</span><span style="color: #0000ff;">&quot;GET .*(cart|boutique|catalog|butik|shop|zen|store).*/install\.txt.*&quot;</span><span style="color: #339933;">.*</span><span style="color:#800080;">404.</span><span style="color: #339933;">*</span></pre></div></div>

<p>You can put multiple regexes within one failregex, just put each one on a new line.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.pseiko.nl/blog/367/countering-phpmyadmin-scanners-with-fail2ban/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Owl City &#8211; Fireflies &amp; Vanilla Twilight</title>
		<link>http://www.pseiko.nl/blog/362/owl-city-fireflies</link>
		<comments>http://www.pseiko.nl/blog/362/owl-city-fireflies#comments</comments>
		<pubDate>Tue, 17 Nov 2009 21:46:46 +0000</pubDate>
		<dc:creator>Remco</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[fireflies]]></category>
		<category><![CDATA[owl city]]></category>
		<category><![CDATA[vanilla twilight]]></category>
		<category><![CDATA[vimeo]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.pseiko.nl/blog/?p=362</guid>
		<description><![CDATA[Wat mij betreft in de serie &#8220;kippevel&#8221;&#8230;

Owl City from Endeavor Media Group on Vimeo.
En van dit nummer is (nog) geen clip volgens mij, maar wellicht het mooiste nummer van het album, dus allicht moest ik hem wel posten  

]]></description>
			<content:encoded><![CDATA[<p>Wat mij betreft in de serie &#8220;kippevel&#8221;&#8230;</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=6772890&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=6772890&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/6772890">Owl City</a> from <a href="http://vimeo.com/endeavormedia">Endeavor Media Group</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>En van dit nummer is (nog) geen clip volgens mij, maar wellicht het mooiste nummer van het album, dus allicht moest ik hem wel posten <img src='http://www.pseiko.nl/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/_JE0HovpAzw&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/_JE0HovpAzw&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pseiko.nl/blog/362/owl-city-fireflies/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kabouter Wesley</title>
		<link>http://www.pseiko.nl/blog/357/kabouter-wesley</link>
		<comments>http://www.pseiko.nl/blog/357/kabouter-wesley#comments</comments>
		<pubDate>Fri, 30 Oct 2009 00:22:19 +0000</pubDate>
		<dc:creator>Remco</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[kabouter]]></category>
		<category><![CDATA[wesley]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.pseiko.nl/blog/?p=357</guid>
		<description><![CDATA[Gewoon.. omdat het briljant is!  

(Klik op lees meer voor meer Kabouter Wesley hilariteiten miljaar!)










]]></description>
			<content:encoded><![CDATA[<p>Gewoon.. omdat het briljant is! <img src='http://www.pseiko.nl/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/fuYC--k0GPQ&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/fuYC--k0GPQ&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
<p>(Klik op lees meer voor meer Kabouter Wesley hilariteiten miljaar!)<br />
<span id="more-357"></span></p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/e8BOVPpHgcw&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/e8BOVPpHgcw&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/S0-XN3_-hqw&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/S0-XN3_-hqw&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/q1j2oZaRv7M&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/q1j2oZaRv7M&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/xRbQqf3rGuk&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/xRbQqf3rGuk&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/AkOrxlXpWk4&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/AkOrxlXpWk4&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/nHfY5UcPWMw&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/nHfY5UcPWMw&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/5kZRUT_B9fM&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/5kZRUT_B9fM&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/3Lbhyyr3SKY&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/3Lbhyyr3SKY&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/dOUi2iscaqw&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/dOUi2iscaqw&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pseiko.nl/blog/357/kabouter-wesley/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Munin plugins for Dell IPMI fan speeds and temperatures</title>
		<link>http://www.pseiko.nl/blog/349/munin-plugins-for-dell-ipmi-fan-speeds-and-temperatures</link>
		<comments>http://www.pseiko.nl/blog/349/munin-plugins-for-dell-ipmi-fan-speeds-and-temperatures#comments</comments>
		<pubDate>Tue, 20 Oct 2009 15:22:26 +0000</pubDate>
		<dc:creator>Remco</dc:creator>
				<category><![CDATA[Computer & Technology Related]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[cacti]]></category>
		<category><![CDATA[dell]]></category>
		<category><![CDATA[fan speed]]></category>
		<category><![CDATA[graph]]></category>
		<category><![CDATA[ipmi]]></category>
		<category><![CDATA[munin]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[poweredge]]></category>
		<category><![CDATA[temperature]]></category>

		<guid isPermaLink="false">http://www.pseiko.nl/blog/?p=349</guid>
		<description><![CDATA[It is possible to monitor fan speeds and temperatures on Dell Poweredge servers under Linux. You can achieve this by reading out the IPMI data that is available on the system.
I used the steps on this website to buffer the data gathered by IPMI to use in Cacti.
However, in addition to Cacti I also use [...]]]></description>
			<content:encoded><![CDATA[<p>It is possible to monitor fan speeds and temperatures on Dell Poweredge servers under Linux. You can achieve this by reading out the IPMI data that is available on the system.<br />
I used the steps on <a href="https://hep.pa.msu.edu/twiki/bin/view/AGLT2/DellCactiSetup">this website</a> to buffer the data gathered by IPMI to use in Cacti.</p>
<p>However, in addition to Cacti I also use Munin to monitor various system parameters. Wouldn&#8217;t it be nice to incorporate graphs for fan speeds and temperatures in Munin? I thought so, so I developed a way to do this.<br />
<span id="more-349"></span><br />
In this case the solution consists out of 2 munin plugins and a PHP script that formats the IPMI values for graphing use. This could also be done directly in the plugins, but since I&#8217;m not such an <code>awk</code> and <code>sed</code> expert I chose to let a PHP script handle the transformation, so I&#8217;d be done sooner (time is money my friends!).</p>
<p>First up, the PHP script:</p>
<p><b>/usr/bin/ipmi.php</b></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">#!/usr/bin/php
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$handle</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/dev/shm/dell.ipmi&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;r&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">feof</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$line</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/AmbientTemp/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;tambi.value &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/CPU1Temp/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;tcpu1.value &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/CPU2Temp/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;tcpu2.value &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/Fan1/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;fan1.value &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/Fan2/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;fan2.value &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/Fan3/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;fan3.value &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/Fan4/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;fan4.value &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/Fan5/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;fan5.value &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/Fan6/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;fan6.value &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/PlanarTemp/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;tplan.value &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/RiserTemp/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;trise.value &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>With the SHM values now being prefixed with matching Munin values, we can graph them in 2 plugins:</p>
<p><b>/etc/munin/plugins/ipmitemps</b></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$1&quot;</span> = <span style="color: #ff0000;">&quot;autoconf&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-r</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>shm<span style="color: #000000; font-weight: bold;">/</span>dell.ipmi <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #c20cb9; font-weight: bold;">yes</span>
                <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
        <span style="color: #000000; font-weight: bold;">else</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> no
                <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
        <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$1&quot;</span> = <span style="color: #ff0000;">&quot;config&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
&nbsp;
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'graph_title Dell 2850 IPMI Temperatures'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'graph_order tcpu1 tcpu2 tambi tplan trise'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'graph_vlabel Temperature (Deg C)'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'graph_scale yes'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'graph_info This graph shows sensor temperatures'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'graph_category system'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tcpu1.label CPU1'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tcpu1.warning 80'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tcpu1.critical 90'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tcpu1.info XEON CPU 1 Temperature'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tcpu2.label CPU2'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tcpu2.warning 80'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tcpu2.critical 90'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tcpu2.info XEON CPU 2 Temperature'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tambi.label Ambient'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tambi.warning 80'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tambi.critical 90'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tambi.info Ambient Temperature'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tplan.label Planar'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tplan.warning 80'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tplan.critical 90'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'tplan.info Planar Temperature'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'trise.label Riser'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'trise.warning 80'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'trise.critical 90'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'trise.info Riser Temperature'</span>
        <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>ipmi.php</pre></td></tr></table></div>

<p>and</p>
<p><b>/etc/munin/plugins/ipmifans</b></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$1&quot;</span> = <span style="color: #ff0000;">&quot;autoconf&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-r</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>shm<span style="color: #000000; font-weight: bold;">/</span>dell.ipmi <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #c20cb9; font-weight: bold;">yes</span>
                <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
        <span style="color: #000000; font-weight: bold;">else</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> no
                <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
        <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$1&quot;</span> = <span style="color: #ff0000;">&quot;config&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
&nbsp;
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'graph_title Dell 2850 IPMI Fanspeeds'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'graph_order fan1 fan2 fan3 fan4 fan5 fan6'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'graph_vlabel Fanspeed (RPM)'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'graph_scale yes'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'graph_info This graph shows fanspeeds'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'graph_category system'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'fan1.label Fan1'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'fan1.info Fan1 speed'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'fan2.label Fan2'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'fan2.info Fan2 speed'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'fan3.label Fan3'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'fan3.info Fan3 speed'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'fan4.label Fan4'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'fan4.info Fan4 speed'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'fan5.label Fan5'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'fan5.info Fan5 speed'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'fan6.label Fan6'</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'fan6.info Fan6 speed'</span>
        <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>ipmi.php</pre></td></tr></table></div>

<p>restart your munin-node, run the munin crons, and voila, graphs!<br />
With these settings they will look like this:</p>
<div id="attachment_352" class="wp-caption alignnone" style="width: 505px"><img src="http://www.pseiko.nl/blog/wp-content/uploads/2009/10/ipmi-day.png" alt="Dell IPMI Temperatures" title="ipmi-temperatures" width="495" height="323" class="size-full wp-image-352" /><p class="wp-caption-text">Dell IPMI Temperatures</p></div>
<div id="attachment_353" class="wp-caption alignnone" style="width: 505px"><img src="http://www.pseiko.nl/blog/wp-content/uploads/2009/10/ipmifans-day.png" alt="Dell IPMI Fan Speeds" title="ipmi-fanspeeds" width="495" height="335" class="size-full wp-image-353" /><p class="wp-caption-text">Dell IPMI Fan Speeds</p></div>
<p>You can modify the params to change the graphs ofcourse.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pseiko.nl/blog/349/munin-plugins-for-dell-ipmi-fan-speeds-and-temperatures/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lancering nieuw Weblog: Strategie Online</title>
		<link>http://www.pseiko.nl/blog/338/lancering-nieuw-weblog-strategie-online</link>
		<comments>http://www.pseiko.nl/blog/338/lancering-nieuw-weblog-strategie-online#comments</comments>
		<pubDate>Fri, 25 Sep 2009 12:56:26 +0000</pubDate>
		<dc:creator>Remco</dc:creator>
				<category><![CDATA[Computer & Technology Related]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[e-business]]></category>
		<category><![CDATA[luuk]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[maxserv]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[raaij]]></category>
		<category><![CDATA[strategie]]></category>
		<category><![CDATA[whisky]]></category>

		<guid isPermaLink="false">http://www.pseiko.nl/blog/?p=338</guid>
		<description><![CDATA[
Goed.. gisterenavond was ik dus op een surpriseparty ter ere van de 30e verjaardag van MaxServ&#8217;s Luuk van Raaij. Bij een goede surpriseparty hoort ook de nodige Whisky, en van Whisky ga je domme dingen zeggen.
Zo heb ik hem dus plechtig beloofd zijn nieuwe Online Strategie blog te promoten. Helaas had Luuk één glaasje minder [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.strategie-online.nl"><img src="http://www.pseiko.nl/blog/wp-content/uploads/2009/09/strategieonline.jpg" alt="strategie-online.nl" title="strategie-online.nl" width="90" class="alignright size-full wp-image-339" /></a><br />
Goed.. gisterenavond was ik dus op een surpriseparty ter ere van de 30e verjaardag van <a href="http://www.maxserv.nl">MaxServ</a>&#8217;s <a href="http://www.linkedin.com/pub/luuk-van-raaij/8/612/631">Luuk van Raaij</a>. Bij een goede surpriseparty hoort ook de nodige Whisky, en van Whisky ga je domme dingen zeggen.</p>
<p>Zo heb ik hem dus plechtig beloofd zijn nieuwe Online Strategie blog te promoten. Helaas had Luuk één glaasje minder gedronken dan ik, en herrinerde hij zich deze belofte nog glashelder.. helaas.</p>
<p>Dus.. lieve mensen, bij deze: Geinteresseerd in het laatste nieuws op Online Strategisch gebied? Neem even een kijkje op <a href="http://www.strategie-online.nl">www.stategie-online.nl </a> of check de <a href="http://www.twitter.com/maxserv">MaxServ Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pseiko.nl/blog/338/lancering-nieuw-weblog-strategie-online/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cisco VoIP oplossing voor Ziggo telefonie</title>
		<link>http://www.pseiko.nl/blog/295/cisco-voip-oplossing-voor-ziggo-telefonie</link>
		<comments>http://www.pseiko.nl/blog/295/cisco-voip-oplossing-voor-ziggo-telefonie#comments</comments>
		<pubDate>Fri, 04 Sep 2009 09:30:37 +0000</pubDate>
		<dc:creator>Remco</dc:creator>
				<category><![CDATA[Computer & Technology Related]]></category>
		<category><![CDATA[1760]]></category>
		<category><![CDATA[alles-in-1]]></category>
		<category><![CDATA[caller-id]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[configuratie]]></category>
		<category><![CDATA[dial-peer]]></category>
		<category><![CDATA[dsp]]></category>
		<category><![CDATA[dtmf]]></category>
		<category><![CDATA[e/m]]></category>
		<category><![CDATA[fsk]]></category>
		<category><![CDATA[fxo]]></category>
		<category><![CDATA[fxs]]></category>
		<category><![CDATA[handleiding]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[hunt]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[nummerherkenning]]></category>
		<category><![CDATA[nummerweergave]]></category>
		<category><![CDATA[overlay]]></category>
		<category><![CDATA[packetcable]]></category>
		<category><![CDATA[plar]]></category>
		<category><![CDATA[pots]]></category>
		<category><![CDATA[pstn]]></category>
		<category><![CDATA[pvdm]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[sip]]></category>
		<category><![CDATA[telefonie]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[vic]]></category>
		<category><![CDATA[vic2-2fxo]]></category>
		<category><![CDATA[voice]]></category>
		<category><![CDATA[voicemail]]></category>
		<category><![CDATA[VoIP]]></category>
		<category><![CDATA[voorbeeld]]></category>
		<category><![CDATA[Ziggo]]></category>

		<guid isPermaLink="false">http://www.pseiko.nl/blog/?p=295</guid>
		<description><![CDATA[Sinds een recente verhuizing beschik ik thuis over een Ziggo Alles-in-1 Plus pakket, met internet, tv, én telefonie.
Daarvoor maakte ik gebruik van een Cisco VoIP netwerk op basis van een externe SIP provider. Natuurlijk wilde ik mijn Cisco netwerk blijven gebruiken, maar dan wel op basis van de Ziggo telefonie aansluiting.
Helaas maakt Ziggo gebruik van [...]]]></description>
			<content:encoded><![CDATA[<p>Sinds een recente verhuizing beschik ik thuis over een Ziggo Alles-in-1 Plus pakket, met internet, tv, én telefonie.<br />
Daarvoor maakte ik gebruik van een Cisco VoIP netwerk op basis van een externe SIP provider. Natuurlijk wilde ik mijn Cisco netwerk blijven gebruiken, maar dan wel op basis van de Ziggo telefonie aansluiting.</p>
<p>Helaas maakt Ziggo gebruik van het <a href="http://en.wikipedia.org/wiki/PacketCable">PacketCable</a> protocol over <a href="http://en.wikipedia.org/wiki/DOCSIS">EuroDocsis</a>, in plaats van <a href="http://en.wikipedia.org/wiki/Session_Initiation_Protocol">SIP</a>. Daarnaast heeft het Motorola SurfBoard modem dat bij het Ziggo abonnement geleverd wordt geen SIP interface voor het LAN, maar beschikt over 2 <a href="http://en.wikipedia.org/wiki/Plain_old_telephone_service">POTS</a> poorten op <a href="http://en.wikipedia.org/wiki/RJ11,_RJ14,_RJ25">RJ-11</a> connectoren.<br />
Alsof dat nog niet genoeg ellende is maakt Ziggo geen gebruik van <a href="http://en.wikipedia.org/wiki/Dual-tone_multi-frequency">DTMF ETSI</a> signalering voor onder andere nummerweergave, maar in plaats daarvan het veel minder bekende <a href="http://en.wikipedia.org/wiki/FSK_standards_for_use_in_Caller_ID_and_remote_metering">Bellcore FSK</a>.</p>
<p><span id="more-295"></span>Goed, tot zover de met technische termen bezaaide probleemvorming. Tijd voor een oplossing om je mooie VoIP apparatuur aan de gang te krijgen! Er zijn naar mijn ervaring bijzonder weinig how-to&#8217;s / handleidingen of tutorials te vinden op het internet om een dergelijke setup te maken, en de informatie over het Ziggo netwerk is zo mogelijk nog beperkter, vandaar deze uitgebreide uitleg om voor eens en altijd van dat probleem af te zijn!</p>
<p><strong>De basis</strong></p>
<p>Als basis voor deze tutorial gebruik ik de volgende hardware:</p>
<p>- <a href="http://www.cisco.com/en/US/products/hw/routers/ps221/products_data_sheet09186a00800920f2.html">Cisco 1760-V Modular Access Router</a><br />
- <a href="http://www.cisco.com/en/US/products/hw/phones/ps379/ps1854/">Cisco 7940 IP-Phone<br />
</a>- <a href="http://www.cisco.com/en/US/products/ps5946/">Cisco 7971GE IP-Phone</a><br />
- <a href="http://www.motorola.com/staticfiles/Business/Products/Modems%20and%20Gateways/Modems/Digital%20Voice%20Modems/SBV5121/_Documents/Static%20Files/SBV5121e-data-sheet-534281-001-a.pdf">Motorola SBV5121e VoIP Cable Modem</a></p>
<p>Naast deze hardware heb ik nog een tweede router (voor o.a. Wireless) en de nodige switching apparatuur draaien, maar dat maakt voor het doel van deze tutorial weinig uit.</p>
<p>Een schematische weergave van de aan elkaar geknoopte hardware:</p>
<div class="wp-caption aligncenter" style="width: 310px"><a href="http://www.remz.nl/network.png" rel="lightbox[295]"><img title="Netwerk" src="http://www.remz.nl/network.png" alt="Netwerk" width="300" /></a><p class="wp-caption-text">Netwerk</p></div>
<p><strong>Stap 1: De hardware verbindingen</strong></p>
<p>De meest ideale situatie zou zijn om de (digitale) VoIP toestellen digitaal via SIP of een ander protocol met Ziggo te verbinden om zo de beste gesprekskwaliteit en de laagste latency te krijgen. Helaas is dit dus niet mogelijk in combinatie met het Motorola modem, en zijn we veroordeeld tot het gebruik van analoge lijnen.<br />
Gelukkig beschikt de Cisco 1760 router over de mogelijkheid om aangesloten te worden op PSTN lijnen doormiddel van een Voice Interface Card.<br />
Om van deze mogelijkheid gebruik te maken moet je router over een aantal zaken beschikken:</p>
<p>- De mogelijkheid om VIC&#8217;s te plaatsen<br />
- Een PVDM kaart waarop een DSP chip aanwezig is om van je router een Voice Gateway te maken. (In dit voorbeeld wordt een PVDM-256k-4= gebruikt)<br />
- De IOS versie op de router dient over het &#8220;IP Voice feature pack&#8221; te beschikken. (In dit voorbeeld wordt IOS (C1700-ADVENTERPRISEK9-M) Version 12.4(15)T5 (fc4) gebruikt, die daar naast Cisco Unified Call Manager ook over beschikt)</p>
<p>De VIC die je vervolgens nodig hebt is van het Foreign Exchange Office (FXO) type. Andere typen als Ear&amp;Mouth (E/M) en Foreign Exchange Subscriber (FXS) zijn voor dit doeleinde NIET geschikt, en kunnen tevens niet gelijktijdig op dezelfde router gebruikt worden. Maak dus niet dezelfde fout als ik door een VIC-2E/M aan te schaffen omdat deze vrij goedkoop zijn, in de hoop dat het werkt.. want het werkt niet! Helaas is de FXO kaart de duurste van de collectie, zeker als je nummerweergave wilt. Een overzicht van alle beschikbare FXO kaarten kun je vinden bij <a href="http://www.cisco.com/en/US/products/hw/routers/ps274/products_tech_note09186a00800b53c7.shtml">Cisco</a> . Mijn advies is om de VIC2-2FXO te nemen, aangezien deze over alle benodigde opties beschikt (helaas wel de duurste kaart met 2 poorten).</p>
<p>Goed, PVDM en VIC in de router, opstarten, en de analoge telefoonlijnen met RJ-11 pluggen van de 2 VIC poorten naar de 2 poorten op het modem verbinden en we zijn klaar om te configureren!</p>
<p><strong>Stap 2: Router configuratie</strong></p>
<p>Gebruik je favoriete protocol om in te loggen op je router (RS232, ssh of telnet), zet de router in enable mode, en check of je PVDM en VIC actief zijn en werken en check gelijk op welke poorten ze zitten. De VIC2-2FXO zit in dit voorbeeld in slot 2, en beschikt over voice-ports 2/0 en 2/1.<br />
Ga vervolgens verder met de configuratie van het geheel via &#8216;conf t&#8217;. Ik ga er van uit dat de basis van je router goed is ingesteld, en ga dus alleen in op de voice settings.</p>
<p><strong>voice card</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="ios" style="font-family:monospace;">voice-card 2
!</pre></td></tr></table></div>

<p>Geen configuratie nodig voor de kaart zelf.</p>
<p><strong>hunt group</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="ios" style="font-family:monospace;">trunk group  pots
 hunt-scheme round-robin
!</pre></td></tr></table></div>

<p>We maken een hunt group aan voor de analoge lijnen, zodat de router zelf bepaalt welke lijn vrij is en deze voor inkomende/uitgaande oproepen gebruikt.</p>
<p><strong>voice ports</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="ios" style="font-family:monospace;">voice-port 2/0
 trunk-group pots
 cptone JP
 connection plar 1337
 caller-id enable
!
voice-port 2/1
 trunk-group pots
 cptone JP
 connection plar 1337
 caller-id enable
!</pre></td></tr></table></div>

<p>Configureer beide voice-ports, en voeg ze aan de trunk group toe. Zet caller-id aan. De cptone parameter geeft aan wat voor landinstellingen de PSTN lijn gebruikt. Normaal gesproken zou dit NL zijn voor gebruik in Nederland, maar aangezien normale PSTN lijnen hier DTMF ETSI gebruiken werkt dat niet voor onze doeleinden. Daarom gebruiken we JP (Japan), aangezien daar FSK gebruikt wordt. Het klinkt wat vreemd, maar werkt perfect. Tenslotte voegen we een &#8220;private line automatic ringdown&#8221; (PLAR) toe op de lijnen. Hiermee zorgen we dat wanneer een oproep binnenkomt op de lijn, deze automatisch wordt doorgeschakeld naar de opgegeven PLAR lijn. De opgegeven PLAR lijn is in dit geval een Overlay voor de ephone DN&#8217;s die we later zullen configureren. In het kort komt het erop neer dat zodra de lijn gebeld wordt de Overlay wordt aangeroepen, en alle toestellen die gekoppeld zijn aan de DN zullen overgaan.</p>
<p><strong>codecs</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="ios" style="font-family:monospace;">voice class codec 1
 codec preference 1 g711ulaw
 codec preference 2 g711alaw
!</pre></td></tr></table></div>

<p>Niet zo belangrijk voor dit voorbeeld, maar toch is het handig om in te stellen welke codecs gebruikt worden binnen het VoIP netwerk (bellen tussen de toestellen onderling). de PVDM DSP handelt verder de codecs voor de analoge lijnen af.</p>
<p><strong>dial-peers</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="ios" style="font-family:monospace;">dial-peer voice 1 pots
 trunkgroup pots
 preference 7
 destination-pattern 0[1-9]........
 incoming called-number .
 no digit-strip
 forward-digits all
!
dial-peer voice 2 pots
 trunkgroup pots
 destination-pattern 00[1-9]..........
 incoming called-number .
 no digit-strip
 forward-digits all
!
dial-peer voice 3 pots
 trunkgroup pots
 destination-pattern 1233
 incoming called-number .
 no digit-strip
 forward-digits all
!</pre></td></tr></table></div>

<p>Voeg dial-peers toe voor alle inkomende en uitgaande belpatronen. Voor het gemak gebruiken alle dial-peers hier hetzelfde inkomende patroon (.), om het binnenkomende gesprek rechtstreeks zonder modificatie door te zetten naar de PLAR. De dial-peers dienen uiteraard net als de lijnen gekoppeld te worden aan de trunk group.<br />
De destination-patterns geven aan welke telefoonnummers geldig zijn, en indien een gedraaid nummer voldoet aan één van de patterns wordt het gesprek doorgezet naar de trunk, en zal dus gebruik maken van één van de PSTN lijnen. De opgegeven patterns zijn alles behalve compleet, maar dekken in ieder geval de volgende situaties:<br />
- Een 10 cijferig telefoonnummer, beginnend met een 0, gevolgd door een 1 tot 9 en vervolgens nog 8 random cijfers. (Bijv. 0131212121)<br />
- Een 13 cijferig internationaal telefoonnummer, beginnend met 00, gevolgd door een 1 tot 9 en nog 10 random cijfers. (Bijv. 0031131212121)<br />
- Het nummer van de Ziggo voicemail, 1233.<br />
Standaard stript de dial-peer opgegeven dialpatterns van het nummer af alvorens deze door te geven, dus gebruiken we no digit-strip om dit te voorkomen. Tenslotte zorgen we dat alle overige gedraaide nummers (right-justified) worden doorgezet naar de PSTN lijn.</p>
<p><strong>telephony service</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="ios" style="font-family:monospace;">telephony-service
 load 7960-7940 P000308000400
 load 7971 SCCP70.8-2-2SR1S
 load 7970 SCCP70.8-2-2SR1S
 max-ephones 5
 max-dn 5
 ip source-address 10.0.0.5 port 2000
 auto assign 1 to 5
 calling-number initiator
 system message ccme1 ready..
 url services http://10.0.0.35:8080/CSFEnterprise-war/
 cnf-file perphone
 network-locale NL
 time-zone 28
 time-format 24
 date-format dd-mm-yy
 voicemail 1233
 max-conferences 4 gain -6
 moh rick.au
 transfer-system full-consult dss
 create cnf-files version-stamp 7960 Apr 17 2009 09:02:53
!</pre></td></tr></table></div>

<p>Configureer je VoIP telephony service naar eigen inzicht. Bovenstaande configuratie is slechts een voorbeeld van mijn eigen configuratie. Zaken waar je op moet letten zijn of je loads goed gespecificeerd zijn (denk ook aan de tftp statements), het voicemail nummer (in dit geval extern naar Ziggo) voor wanneer op de Berichten knop op de telefoon wordt gedrukt, en de land instellingen.</p>
<p><strong>DN&#8217;s</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="ios" style="font-family:monospace;">ephone-dn  1
 number 1234
 label Woonkamer
 description 013xxxxxxx
 name Woonkamer
 call-forward busy 1235
 call-forward noan 1235 timeout 120
 ephone-hunt login
!
ephone-dn  2
 number 1235
 label Kantoor
 description 013xxxxxxx
 name Kantoor
 call-forward busy 1234
 call-forward noan 1234 timeout 120
 ephone-hunt login
!
ephone-dn  3
 number 1337
 label Extern
 description Extern Overlay
 name Extern
!</pre></td></tr></table></div>

<p>Voeg een ephone DN toe voor ieder toestel dat je aan gaat sluiten, met een eigen nummer (dit nummer en label is zichtbaar op het toestel, en wordt gebruikt om onderling met elkaar te bellen). Ik heb de DN&#8217;s zo ingesteld dat wanneer ze niet beantwoord worden/bezet zijn automatisch de andere DN wordt aangeroepen. Voeg tenslotte de Overlay DN toe die in de voice-ports is gespecificeerd, en geef het een label zodat je op je telefoons kunt zien dat een oproep van de Externe lijn afkomstig is.</p>
<p><strong>ephones</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="ios" style="font-family:monospace;">ephone  3
 mac-address 000D.EDAB.5055
 speed-dial 1 xxxxxxxxxx label &quot;xxxx&quot;
 type 7940
 button  1o2,3
 pin 1235
!
ephone  4
 conference admin
 mac-address 0015.2BD2.01C7
 username &quot;remco&quot; password xxxxxxxx
 speed-dial 1 xxxxxxxxxx label &quot;xxxx&quot;
 speed-dial 2 xxxxxxxxxx label &quot;xxxx&quot;
 speed-dial 3 xxxxxxxxxx label &quot;xxxx&quot;
 type 7971
 button  1o1,3
 pin 1234
!</pre></td></tr></table></div>

<p>Voeg ephones toe voor ieder toestel dat je hebt. Configuratie hangt natuurlijk af van het toestel dat je hebt en hoe je wil dat hij reageert. Voeg users en speeddials toe naar wens.<br />
De enige cruciale data is het MAC adres (anders weet de router niet welk toestel aan de ephone te koppelen), en de button configuratie.<br />
De button configuratie zorgt er namelijk voor dat een lijn aan het toestel gekoppeld wordt, inclusief de Overlay DN. zo heeft ephone 3 een button 1o2,3 . Dit houdt in dat DN&#8217;s 2 en 3 in overlay mode onder button 1 van dit toestel zitten. De router zoekt automatisch de meest unieke lijn uit, en presenteert deze DN onder de knop. Aangezien Overlay DN 3 op meerdere toestellen wordt gebruikt is deze het minst uniek, en zal enkel op de achtergrond aanwezig zijn. ephone 4 maakt op button 1 gebruik van DN&#8217;s 1 en 3. Op deze manier presenteren beide toestellen hun eigen nummer, maar luisteren op de achtergrond wel mee naar de Overlay DN, en zullen dus gelijktijdig overgaan zodra een gesprek binnenkomt op de trunk en deze wordt doorgezet naar de Overlay DN.</p>
<p><strong>Stap 3: klaar!</strong><br />
Save je configuratie door een &#8220;copy run start&#8221; te doen, en je zou aan de gang moeten kunnen!<br />
- Onderling bellen kan door de unieke DN van een ephone te bellen (1234 en 1235 in dit geval)<br />
- Extern bellen kan door een telefoonnummer te draaien dat gespecificeerd is in één van de dial-peers<br />
- Voicemail is gekoppeld onder de berichtenknop van een toestel.<br />
- Binnenkomende gesprekken zullen op alle toestellen die gebruik maken van de Overlay DN overgaan, inclusief nummerweergave!</p>
<p>Veel succes!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pseiko.nl/blog/295/cisco-voip-oplossing-voor-ziggo-telefonie/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Persistent Iptables bans from Fail2Ban</title>
		<link>http://www.pseiko.nl/blog/288/persistent-iptables-bans-from-fail2ban</link>
		<comments>http://www.pseiko.nl/blog/288/persistent-iptables-bans-from-fail2ban#comments</comments>
		<pubDate>Tue, 18 Aug 2009 13:53:23 +0000</pubDate>
		<dc:creator>Remco</dc:creator>
				<category><![CDATA[Blogs & Hersenspinsels]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Fail2Ban]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Iptables]]></category>

		<guid isPermaLink="false">http://www.pseiko.nl/blog/?p=288</guid>
		<description><![CDATA[On my servers I use the nifty program Fail2Ban to perform logbased automatic fire walling of &#8216;bad&#8217; ip&#8217;s.
The idea behind this is easy: Some IP performs an action I don&#8217;t approve of. This can be any number of things, e.g. requesting pages in Apache that are commonly accessed by bots and/or scanners, or trying to [...]]]></description>
			<content:encoded><![CDATA[<p>On my servers I use the nifty program <a href="http://www.fail2ban.org/wiki/index.php/Main_Page">Fail2Ban</a> to perform logbased automatic fire walling of &#8216;bad&#8217; ip&#8217;s.</p>
<p>The idea behind this is easy: Some IP performs an action I don&#8217;t approve of. This can be any number of things, e.g. requesting pages in Apache that are commonly accessed by bots and/or scanners, or trying to log in to SSH with accounts that do not exist on the system. This bad behavior gets logged, and Fail2Ban keeps tabs on those logs, and using a number of rules it determines if a host is &#8216;bad&#8217; enough to temporarily or permanently ban all access to the server. It does so by adding a few chains to Iptables (one for each thing it checks for), and dynamically adding/removing IP&#8217;s to/from these chains.</p>
<p>This all works perfectly. However, there&#8217;s one issue; When Iptables gets reloaded, it restores its default rules, removing the Fail2Ban chains and all the rules they contain, even if the ip&#8217;s in the chain were marked as permanent.<br />
<span id="more-288"></span></p>
<p>I created a workaround for this problem, consisting of two simple steps:<br />
- When a &#8216;bad&#8217; ip gets banned, it&#8217;s added to the Iptables chain, but also written to a file, containing all collected &#8216;bad&#8217; ip&#8217;s. (I use /etc/shitlist for this purpose).<br />
- Whenever Iptables gets reloaded, I run a PHP script that checks the /etc/shitlist file for &#8217;safe&#8217; and duplicate ip&#8217;s, and writes all other ip&#8217;s to the permanent Blocklist chain. (The checking for &#8217;safe&#8217; ip&#8217;s might be a bit unneeded, but with my Fail2Ban rules it&#8217;s possible that one of my own ip&#8217;s gets banned for 10 minutes if a SSH login attempt fails for 5 times. Though it&#8217;s a temporary ban, the ip will still get written to the shitlist, and would end up in the permanent Blocklist).</p>
<p>To make this work, I made the following changes:</p>
<p>Every &#8216;jail&#8217; in Fail2Ban uses an &#8216;action.d&#8217; script to perform (un)banning. I defaulted all actions to an action script called &#8216;iptables-allports.conf&#8217;. Basically this action drops everything in Iptables if a package originates from the &#8216;bad&#8217; IP.<br />
I updated the ban action such that:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">actionban = iptables <span style="color: #660033;">-I</span> fail2ban-<span style="color: #000000; font-weight: bold;">&lt;</span>name<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000;">1</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">&lt;</span>ip<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #660033;">-j</span> DROP
                 <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #000000; font-weight: bold;">&lt;</span>ip<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>shitlist</pre></td></tr></table></div>

<p>After that I created a PHP script that updates Iptables with the ip&#8217;s contained in the shitlist:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/** script that loads a shitlist file into iptables
*/</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//CONFIG</span>
<span style="color: #000088;">$shitlists</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/root/list.txt&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;/etc/shitlist&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$chain</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Blocklist&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$safelist</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;x.x.x.x&quot;</span>
                 <span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;y.y.y.y&quot;</span>
                 <span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;z.z.z.z&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Reading current IPTABLES state<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">shell_exec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'iptables -S '</span><span style="color: #339933;">.</span><span style="color: #000088;">$chain</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$iparr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' '</span><span style="color: #339933;">,</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$j</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$ref</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span>sizeof<span style="color: #009900;">&#40;</span><span style="color: #000088;">$iparr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr_count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$iparr</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #000088;">$ref</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$j</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$iparr</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
                        <span style="color: #000088;">$j</span><span style="color: #339933;">++;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">sort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ref</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$total</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$shitlists</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$shitlist</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Reading shitlist at <span style="color: #006699; font-weight: bold;">$shitlist</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">//READ FILE</span>
        <span style="color: #000088;">$fh</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$shitlist</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'r'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fh</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000088;">$itt</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
                <span style="color: #000088;">$iparr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">feof</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fh</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #000088;">$ip</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fh</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                                <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array_search</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip</span><span style="color: #339933;">,</span><span style="color: #000088;">$iparr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">===</span>false<span style="color: #339933;">&amp;&amp;</span>array_search<span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip</span><span style="color: #339933;">,</span><span style="color: #000088;">$safelist</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">===</span>false<span style="color: #339933;">&amp;&amp;</span>array_search<span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;/32&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$ref</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">===</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                                        <span style="color: #000088;">$iparr</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$ip</span><span style="color: #339933;">;</span>
                                        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Now adding <span style="color: #006699; font-weight: bold;">$ip</span> to <span style="color: #006699; font-weight: bold;">$chain</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
                                        <span style="color: #000088;">$ins</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">18</span><span style="color: #339933;">+</span><span style="color: #000088;">$itt</span><span style="color: #339933;">;</span>
                                        <span style="color: #990000;">shell_exec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;iptables -I &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$chain</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$ins</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; -s &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$ip</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;/32 -j DROP&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                                        <span style="color: #000088;">$itt</span><span style="color: #339933;">++;</span>
                                <span style="color: #009900;">&#125;</span>
                        <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span>
                <span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fh</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Finished adding <span style="color: #006699; font-weight: bold;">$itt</span> ip's from list <span style="color: #006699; font-weight: bold;">$shitlist</span> to chain <span style="color: #006699; font-weight: bold;">$chain</span> . Bye!<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$total</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$total</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$itt</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Could not open shitlist file <span style="color: #006699; font-weight: bold;">$shitlist</span> . Skipping this list<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Finished adding <span style="color: #006699; font-weight: bold;">$total</span> ip's to chain <span style="color: #006699; font-weight: bold;">$chain</span> from &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$shitlists</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; shitlists.<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>You can run the script from the commandline (as root!) simply by stating &#8220;php shitlist.php&#8221;, or add it to the startup script of your Iptables installation.</p>
<p>Hope this helps keeping your NIC&#8217;s available for VALID traffic!</p>
<p><b>Update:</b> Made some changes to the script to check for already existing bans, to keep your chains clean!<br />
<b>Update 2:</b> Little tweak to the script so it now loads an array of lists, in case you have various sources.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pseiko.nl/blog/288/persistent-iptables-bans-from-fail2ban/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The PSEiKO.nl WhatPulse competition</title>
		<link>http://www.pseiko.nl/blog/284/the-pseiko-nl-whatpulse-competition</link>
		<comments>http://www.pseiko.nl/blog/284/the-pseiko-nl-whatpulse-competition#comments</comments>
		<pubDate>Mon, 27 Jul 2009 09:01:15 +0000</pubDate>
		<dc:creator>Remco</dc:creator>
				<category><![CDATA[Computer & Technology Related]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[gadget]]></category>
		<category><![CDATA[igoogle]]></category>
		<category><![CDATA[pseiko]]></category>
		<category><![CDATA[whatpulse]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://www.pseiko.nl/blog/?p=284</guid>
		<description><![CDATA[Have you ever wondered how productive you really are during a busy day at the office? And if so, how is this &#8216;productivity&#8217; thing measured?
Well, we put some thought into it, and being the true geeks that we are, decided that the only thing that counts are the number of keyboard hits you produce, combined [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever wondered how productive you really are during a busy day at the office? And if so, how is this &#8216;productivity&#8217; thing measured?</p>
<p>Well, we put some thought into it, and being the true geeks that we are, decided that the only thing that counts are the number of keyboard hits you produce, combined with mouse clicks and the distance that nifty little device travels on your desk.<br />
<span id="more-284"></span><br />
Luckily for us, the internet provides a great project called WhatPulse, which can measure all of this, and put it in a competitive context. We dediced to join and form a team. You are very welcome to join our team, and Farhaz has written a small tutorial on how to join at <a href="http://www.pseiko.nl/blog/whatpulse-team">http://www.pseiko.nl/blog/whatpulse-team</a></p>
<p>So we turned this thing into a little competition.. who&#8217;s the biggest nerd of us all? And which IT related industry generates the most hits? To make it easier to keep track of such data, i transformed the statistics into an iGoogle Gadget, which you can conveniently place on your search homepage! Nifty!</p>
<p>You have to manually add this new Gadget to your iGoogle by going to the &#8220;Add Gadget&#8221; screen, and clicking on the &#8220;Add Feed or Gadget&#8221; link on the bottom left of the screen. Then add this URL: <a href="http://dev.remz.nl/widgets/pseiko-wp/widget.php">http://dev.remz.nl/widgets/pseiko-wp/widget.php</a> , and you&#8217;re good to go.</p>
<p><img src="http://www.pseiko.nl/blog/wp-content/uploads/2009/07/pseikowp.png" alt="PSEiKO.nl WhatPulse Ranking" title="PSEiKO.nl WhatPulse Ranking" width="512" height="290" class="aligncenter size-full wp-image-285" /></p>
<p>Enjoy, and we hope to see you soon in our competition ranking!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pseiko.nl/blog/284/the-pseiko-nl-whatpulse-competition/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Het mopje van deze week</title>
		<link>http://www.pseiko.nl/blog/230/het-mopje-van-deze-week</link>
		<comments>http://www.pseiko.nl/blog/230/het-mopje-van-deze-week#comments</comments>
		<pubDate>Fri, 05 Jun 2009 08:43:26 +0000</pubDate>
		<dc:creator>Remco</dc:creator>
				<category><![CDATA[Mop]]></category>
		<category><![CDATA[week]]></category>

		<guid isPermaLink="false">http://www.pseiko.nl/blog/?p=230</guid>
		<description><![CDATA[Het laatste mopje is alweer van een tijdje terug, dus hoog tijd voor een nieuwe:
Het is wit en kruipt over de grond, rara wat is het?

Artsen zonder lenzen  
]]></description>
			<content:encoded><![CDATA[<p>Het laatste mopje is alweer van een tijdje terug, dus hoog tijd voor een nieuwe:</p>
<p>Het is wit en kruipt over de grond, rara wat is het?<br />
<span id="more-230"></span><br />
Artsen zonder lenzen <img src='http://www.pseiko.nl/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pseiko.nl/blog/230/het-mopje-van-deze-week/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
