<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Vidul Nikolaev Petrov: Category scripts</title>
    <link>http://www.vidul.com/articles/category/scripts</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Ultra Tiny Address Book</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="comment"&gt;#!/usr/bin/perl&lt;/span&gt;

&lt;span class="global"&gt;$s&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;shift&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="global"&gt;$&amp;quot;&lt;/span&gt;  &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;;&lt;/span&gt;
&lt;span class="global"&gt;$/&lt;/span&gt;  &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="global"&gt;$\&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="global"&gt;$_&lt;/span&gt;  &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="constant"&gt;DATA&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="attribute"&gt;@_&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="regex"&gt;(.*?$s.*)&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;gi&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;

&lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;@_&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;;&lt;/span&gt;

&lt;span class="ident"&gt;__DATA__&lt;/span&gt;

&lt;span class="ident"&gt;me&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;some address&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ident"&gt;my_phone_here&lt;/span&gt;
&lt;span class="ident"&gt;etc&lt;/span&gt;&lt;span class="punct"&gt;...&lt;/span&gt;
&lt;span class="ident"&gt;etc&lt;/span&gt;&lt;span class="punct"&gt;...&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Wed, 29 Oct 2008 07:18:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:c9bb461f-6a01-4956-8c70-5a844738c673</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/10/29/ultra-tiny-address-book</link>
      <category>Perl</category>
      <category>scripts</category>
      <category>tiny</category>
      <trackback:ping>http://www.vidul.com/articles/trackback/92</trackback:ping>
    </item>
    <item>
      <title>Quick Scanner (Host/Port)</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="comment"&gt;#!/usr/bin/ruby&lt;/span&gt;

&lt;span class="ident"&gt;host_port&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;ARGV&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt;
&lt;span class="ident"&gt;host&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;host_port&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;split&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;:&lt;/span&gt;&lt;span class="punct"&gt;').&lt;/span&gt;&lt;span class="ident"&gt;first&lt;/span&gt;
&lt;span class="ident"&gt;port&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;host_port&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;split&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;:&lt;/span&gt;&lt;span class="punct"&gt;').&lt;/span&gt;&lt;span class="ident"&gt;last&lt;/span&gt;

&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;%x[&lt;/span&gt;&lt;span class="string"&gt;nmap -p &lt;span class="expr"&gt;#{port}&lt;/span&gt; &lt;span class="expr"&gt;#{host}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

Or just:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="comment"&gt;#!/usr/bin/ruby&lt;/span&gt;

&lt;span class="ident"&gt;host&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;port&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;ARGV&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;].&lt;/span&gt;&lt;span class="ident"&gt;split&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;:&lt;/span&gt;&lt;span class="punct"&gt;')&lt;/span&gt;

&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;%x[&lt;/span&gt;&lt;span class="string"&gt;nmap -p &lt;span class="expr"&gt;#{port}&lt;/span&gt; &lt;span class="expr"&gt;#{host}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

Usage (cli and given that the script is named scan_proxy):
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="punct"&gt;./&lt;/span&gt;&lt;span class="regex"&gt;scan_proxy 202.105.182.87:808&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Sun, 28 Sep 2008 13:09:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:32b246a1-01ba-4b9e-b32f-2cebcb0348b4</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/09/28/quick-scanner-host-port</link>
      <category>Ruby</category>
      <category>scripts</category>
      <category>scanner</category>
      <trackback:ping>http://www.vidul.com/articles/trackback/86</trackback:ping>
    </item>
    <item>
      <title>Simple Phonebook Script</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;
&lt;span class="comment"&gt;#!/usr/bin/env ruby&lt;/span&gt;

&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Hash&lt;/span&gt;
  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;search&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;arg&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="constant"&gt;self&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;select&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;k&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="ident"&gt;v&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;k&lt;/span&gt; &lt;span class="punct"&gt;=~&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="regex"&gt;&lt;span class="expr"&gt;#{arg}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt; &lt;span class="keyword"&gt;or&lt;/span&gt; &lt;span class="ident"&gt;v&lt;/span&gt; &lt;span class="punct"&gt;=~&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="regex"&gt;&lt;span class="expr"&gt;#{arg}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="ident"&gt;search&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;ARGV&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt;
&lt;span class="ident"&gt;search&lt;/span&gt; &lt;span class="punct"&gt;=~&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="regex"&gt;^[0-9]+&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt; &lt;span class="keyword"&gt;and&lt;/span&gt; &lt;span class="ident"&gt;search&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;search&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_i&lt;/span&gt;

&lt;span class="ident"&gt;phones&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;me&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;        &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;359880101020406&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Hitler&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;     &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;+49 666&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Van Gog&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;+31&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;devil&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;      &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;666&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;God&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;       &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt;
&lt;span class="punct"&gt;}&lt;/span&gt;

&lt;span class="ident"&gt;phones&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;search&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;search&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;person&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
  &lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;person:&lt;span class="expr"&gt;#{person.first}&lt;/span&gt;&lt;span class="escape"&gt;\t&lt;/span&gt;number:&lt;span class="expr"&gt;#{person.last}&lt;/span&gt;&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Sat, 20 Sep 2008 08:39:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:091f09cc-faa0-46ff-8596-a55c3bda5c58</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/09/20/simple-phonebook-script</link>
      <category>Ruby</category>
      <category>scripts</category>
      <trackback:ping>http://www.vidul.com/articles/trackback/84</trackback:ping>
    </item>
    <item>
      <title>Remove All Empty Directories</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;alias&lt;/span&gt; &lt;span class="ident"&gt;_rmdir_empty&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;rmdir * 2&amp;gt;/dev/null&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Mon, 04 Aug 2008 02:41:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:12125fd2-892a-4167-9dcf-ef0a8a7fa794</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/08/04/remove-all-empty-directories</link>
      <category>scripts</category>
      <category>shell</category>
    </item>
    <item>
      <title>Converting Between Numeric Bases</title>
      <description>Sample .bashrc file:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="comment"&gt;# decimal to binary&lt;/span&gt;
&lt;span class="keyword"&gt;alias&lt;/span&gt; &lt;span class="ident"&gt;d2b&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;ruby -e &amp;quot;puts ARGV.first.to_i.to_s(2)&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="comment"&gt;# decimal to hexademical&lt;/span&gt;
&lt;span class="keyword"&gt;alias&lt;/span&gt; &lt;span class="ident"&gt;d2h&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;ruby -e &amp;quot;puts ARGV.first.to_i.to_s(16)&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="comment"&gt;# decimal to octal&lt;/span&gt;
&lt;span class="keyword"&gt;alias&lt;/span&gt; &lt;span class="ident"&gt;d2o&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;ruby -e &amp;quot;puts ARGV.first.to_i.to_s(8)&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;

&lt;span class="comment"&gt;# binary to decimal&lt;/span&gt;
&lt;span class="keyword"&gt;alias&lt;/span&gt; &lt;span class="ident"&gt;b2d&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;ruby -e &amp;quot;puts eval(%q|0b| + ARGV.first)&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="comment"&gt;# binary to hexademical&lt;/span&gt;
&lt;span class="keyword"&gt;alias&lt;/span&gt; &lt;span class="ident"&gt;b2h&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;ruby -e &amp;quot;puts eval(%q|0b| + ARGV.first).to_s(16)&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="comment"&gt;# binary to octal&lt;/span&gt;
&lt;span class="keyword"&gt;alias&lt;/span&gt; &lt;span class="ident"&gt;b2o&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;ruby -e &amp;quot;puts eval(%q|0b| + ARGV.first).to_s(8)&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;

&lt;span class="comment"&gt;# hexademical to decimal&lt;/span&gt;
&lt;span class="keyword"&gt;alias&lt;/span&gt; &lt;span class="ident"&gt;h2d&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;ruby -e &amp;quot;puts eval(%q|0x| + ARGV.first)&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="comment"&gt;# hexademical to binary&lt;/span&gt;
&lt;span class="keyword"&gt;alias&lt;/span&gt; &lt;span class="ident"&gt;h2b&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;ruby -e &amp;quot;puts eval(%q|0x| + ARGV.first).to_s(2)&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="comment"&gt;# hexademical to octal&lt;/span&gt;
&lt;span class="keyword"&gt;alias&lt;/span&gt; &lt;span class="ident"&gt;h2o&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;ruby -e &amp;quot;puts eval(%q|0x| + ARGV.first).to_s(8)&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;

&lt;span class="comment"&gt;# octal to decimal&lt;/span&gt;
&lt;span class="keyword"&gt;alias&lt;/span&gt; &lt;span class="ident"&gt;o2d&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;ruby -e &amp;quot;puts eval(%q|0o| + ARGV.first)&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="comment"&gt;# octal to binary&lt;/span&gt;
&lt;span class="keyword"&gt;alias&lt;/span&gt; &lt;span class="ident"&gt;o2b&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;ruby -e &amp;quot;puts eval(%q|0o| + ARGV.first).to_s(2)&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="comment"&gt;# octal to hexademical&lt;/span&gt;
&lt;span class="keyword"&gt;alias&lt;/span&gt; &lt;span class="ident"&gt;o2h&lt;/span&gt;&lt;span class="punct"&gt;='&lt;/span&gt;&lt;span class="string"&gt;ruby -e &amp;quot;puts eval(%q|0o| + ARGV.first).to_s(16)&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Thu, 31 Jul 2008 23:58:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:9119177d-c089-468c-91d2-9a66ac75d989</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/07/31/converting-between-numeric-bases</link>
      <category>Ruby</category>
      <category>scripts</category>
      <category>alias</category>
      <trackback:ping>http://www.vidul.com/articles/trackback/70</trackback:ping>
    </item>
    <item>
      <title>Dracula (The Vampire King)</title>
      <description>&lt;div style="overflow:auto; width:540px;"&gt;
&lt;img src="http://www.vidul.com/files/drakula.jpg"&gt;
&lt;/div&gt;</description>
      <pubDate>Sat, 26 Jul 2008 15:46:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:0d8e7022-8991-46fd-887f-1d8ad9582ba5</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/07/26/dracula-the-vampire-king</link>
      <category>scripts</category>
      <category>vampire</category>
      <enclosure type="image/jpeg" url="http://www.vidul.com/files/drakula.jpg" length="28156"/>
    </item>
    <item>
      <title>Bulgarian-English command line tool (using sa.dir.bg)</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="comment"&gt;#!/usr/bin/env ruby&lt;/span&gt;

&lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;tempfile&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;net/http&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;

&lt;span class="ident"&gt;arg&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt;  &lt;span class="constant"&gt;ARGV&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;].&lt;/span&gt;&lt;span class="ident"&gt;chomp&lt;/span&gt;
&lt;span class="ident"&gt;url&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;sa.dir.bg&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="ident"&gt;h&lt;/span&gt;   &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Net&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;HTTP&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;url&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="number"&gt;80&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;

&lt;span class="ident"&gt;resp&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="ident"&gt;data&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;h&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;get&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;/cgi/sabig.cgi?word=&lt;span class="expr"&gt;#{arg}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="constant"&gt;nil&lt;/span&gt; &lt;span class="punct"&gt;)&lt;/span&gt;
&lt;span class="ident"&gt;outtmp&lt;/span&gt;    &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Tempfile&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;translator&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;)&lt;/span&gt;

&lt;span class="ident"&gt;outtmp&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="ident"&gt;data&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt;
&lt;span class="ident"&gt;outtmp&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;rewind&lt;/span&gt;
&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;%x[&lt;/span&gt;&lt;span class="string"&gt;html2text &amp;quot;&lt;span class="expr"&gt;#{outtmp.path}&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt;

&lt;span class="comment"&gt;__END__&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Sat, 19 Jul 2008 15:59:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:d4c6e8d2-58f4-4033-92d8-4d517b3e198e</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/07/19/bulgarian-english-command-line-tool-using-sa-dir-bg</link>
      <category>scripts</category>
      <category>tools</category>
    </item>
    <item>
      <title>TRAC - change SVN repository</title>
      <description>&lt;p&gt;Go to your &lt;span class="caps"&gt;TRAC&lt;/span&gt; project dir and issue the following commands:&lt;br /&gt;
1. &lt;b&gt;cd to_your_trac_project_dir&lt;/b&gt;&lt;br /&gt;
2. &lt;b&gt;ruby -i -pe &amp;#8217;$_.sub! /(repository_dir\s&lt;strong&gt;=\s&lt;/strong&gt;).+/, &amp;#8220;repository_dir = &lt;span class="caps"&gt;NEW&lt;/span&gt;_repository_PATH&amp;#8221;&amp;#8217; trac.ini&lt;/b&gt;&lt;br /&gt;
3. &lt;b&gt;trac-admin . resync&lt;/b&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 07 Jul 2008 18:26:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:06d4dfa9-8b4b-46fb-8e2a-30ad9e1f2a25</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/07/07/trac-change-svn-repository</link>
      <category>scripts</category>
      <category>SA</category>
    </item>
    <item>
      <title>mkdir &amp;amp;&amp;amp; cd to it</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="comment"&gt;# negative - spawning a new shell&lt;/span&gt;
&lt;span class="ident"&gt;mkdir&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;p&lt;/span&gt; &lt;span class="global"&gt;$1&lt;/span&gt; &lt;span class="punct"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="ident"&gt;cd&lt;/span&gt; &lt;span class="global"&gt;$1&lt;/span&gt; &lt;span class="punct"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="global"&gt;$SHELL&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Mon, 16 Jun 2008 06:49:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:294cedce-5953-4b26-8aaa-d6d6b36a5431</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/06/16/mkdir-cd-to-it</link>
      <category>scripts</category>
      <category>SA</category>
    </item>
    <item>
      <title>Ruby system administration scripts</title>
      <description>&lt;b&gt;OS users&lt;/b&gt;:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;users&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;File&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;/etc/passwd&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;).&lt;/span&gt;&lt;span class="ident"&gt;collect&lt;/span&gt;&lt;span class="punct"&gt;{|&lt;/span&gt;&lt;span class="ident"&gt;x&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;x&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;split&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;:&lt;/span&gt;&lt;span class="punct"&gt;')[&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;]}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;b&gt;Number of files in directory&lt;/b&gt;:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;%x{&lt;/span&gt;&lt;span class="string"&gt;ls&lt;/span&gt;&lt;span class="punct"&gt;}.&lt;/span&gt;&lt;span class="ident"&gt;split&lt;/span&gt;&lt;span class="punct"&gt;(/&lt;/span&gt;&lt;span class="regex"&gt;&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;/).&lt;/span&gt;&lt;span class="ident"&gt;size&lt;/span&gt;
&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;%x[&lt;/span&gt;&lt;span class="string"&gt;ls|wc&lt;/span&gt;&lt;span class="punct"&gt;].&lt;/span&gt;&lt;span class="ident"&gt;split&lt;/span&gt;&lt;span class="punct"&gt;(/&lt;/span&gt;&lt;span class="regex"&gt;&lt;span class="escape"&gt;\s&lt;/span&gt;+&lt;/span&gt;&lt;span class="punct"&gt;/)[&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;b&gt;Network interfaces&lt;/b&gt;:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;inet&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Hash&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;&lt;span class="punct"&gt;{|&lt;/span&gt;&lt;span class="ident"&gt;h&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="ident"&gt;k&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;h&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="ident"&gt;k&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;split&lt;/span&gt;&lt;span class="punct"&gt;(/&lt;/span&gt;&lt;span class="regex"&gt;&lt;span class="escape"&gt;\s&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;/)[&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;]]&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;k&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;scan&lt;/span&gt;&lt;span class="punct"&gt;(/&lt;/span&gt;&lt;span class="regex"&gt;addr:(&lt;span class="escape"&gt;\d&lt;/span&gt;+&lt;span class="escape"&gt;\.\d&lt;/span&gt;+&lt;span class="escape"&gt;\.\d&lt;/span&gt;+&lt;span class="escape"&gt;\.\d&lt;/span&gt;+)&lt;/span&gt;&lt;span class="punct"&gt;/)[&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;].&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt;&lt;span class="punct"&gt;}&lt;/span&gt;

&lt;span class="punct"&gt;%x[&lt;/span&gt;&lt;span class="string"&gt;ifconfig&lt;/span&gt;&lt;span class="punct"&gt;].&lt;/span&gt;&lt;span class="ident"&gt;to_s&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;split&lt;/span&gt;&lt;span class="punct"&gt;(&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&lt;span class="escape"&gt;\n\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;).&lt;/span&gt;&lt;span class="ident"&gt;collect&lt;/span&gt;&lt;span class="punct"&gt;{|&lt;/span&gt;&lt;span class="ident"&gt;x&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;inet&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="ident"&gt;x&lt;/span&gt;&lt;span class="punct"&gt;]}&lt;/span&gt;

&lt;span class="comment"&gt;# dump the structure: puts inet.inspect&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;to be continued&amp;#8230;.&lt;/p&gt;</description>
      <pubDate>Sat, 22 Mar 2008 12:45:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:71d8031a-9b9f-4fac-ae05-049a33622e68</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/03/22/ruby-system-administration</link>
      <category>Ruby</category>
      <category>scripts</category>
      <category>administration</category>
    </item>
    <item>
      <title>How to find free domain name</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="comment"&gt;#!/usr/bin/perl&lt;/span&gt;

&lt;span class="ident"&gt;use&lt;/span&gt; &lt;span class="ident"&gt;strict&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="ident"&gt;use&lt;/span&gt; &lt;span class="ident"&gt;warnings&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;

&lt;span class="ident"&gt;my&lt;/span&gt; &lt;span class="global"&gt;$dom&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;shift&lt;/span&gt; &lt;span class="punct"&gt;||&lt;/span&gt; &lt;span class="ident"&gt;die&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;missing name&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;;&lt;/span&gt;
&lt;span class="ident"&gt;my&lt;/span&gt; &lt;span class="global"&gt;$res&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;qx&lt;/span&gt;&lt;span class="punct"&gt;{&lt;/span&gt;&lt;span class="ident"&gt;whois&lt;/span&gt; &lt;span class="global"&gt;$dom&lt;/span&gt;&lt;span class="punct"&gt;};&lt;/span&gt;

&lt;span class="ident"&gt;die&lt;/span&gt; &lt;span class="global"&gt;$1&lt;/span&gt; &lt;span class="punct"&gt;.&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;for '$dom'&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ident"&gt;if&lt;/span&gt; &lt;span class="global"&gt;$res&lt;/span&gt; &lt;span class="punct"&gt;=~&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="regex"&gt;(no&lt;span class="escape"&gt;\s&lt;/span&gt;+whois&lt;span class="escape"&gt;\s&lt;/span&gt;+server&lt;span class="escape"&gt;\s&lt;/span&gt;+)&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;i&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="ident"&gt;die&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;$dom is free&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;    &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="global"&gt;$res&lt;/span&gt; &lt;span class="punct"&gt;=~&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="regex"&gt;no&lt;span class="escape"&gt;\s&lt;/span&gt;+match|does&lt;span class="escape"&gt;\s&lt;/span&gt;+not&lt;span class="escape"&gt;\s&lt;/span&gt;+exist&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;i&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="ident"&gt;die&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;$dom is reserved&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;;&lt;/span&gt;

&lt;span class="comment"&gt;__END__
_whois 123456.com
123456.com is reserved

_whois _123456_.com
_123456_.com is free&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Fri, 22 Feb 2008 14:23:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:4e17a074-f62c-4d7f-ae7b-8322c5e461e9</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/02/22/how-to-find-free-domain-name</link>
      <category>Perl</category>
      <category>scripts</category>
      <category>money</category>
    </item>
    <item>
      <title>Perl script opening (vim variant)</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;#!/bin/bash

file=$1

if [ -e $file ]
then
        vim $file
else
        touch $file
        echo '#!/usr/bin/perl' &amp;gt; $file
        echo '' &amp;gt;&amp;gt; $file
        echo 'use strict;' &amp;gt;&amp;gt; $file
        echo 'use warnings;' &amp;gt;&amp;gt; $file
        echo 'use diagnostics;' &amp;gt;&amp;gt; $file
        echo '' &amp;gt;&amp;gt; $file
        chmod +x $file
        vim $file
fi&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Mon, 04 Feb 2008 14:57:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:288028e0-f9e9-4bf1-837c-639d92733d9b</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/02/04/perl-script-opening-vim-variant</link>
      <category>Perl</category>
      <category>scripts</category>
      <category>UNIX</category>
    </item>
    <item>
      <title>find command (practical books' dir copy)</title>
      <description>&lt;p&gt;&lt;br /&gt;
Copy all those formats (pdf|chm|txt|html) from $HOME/Desktop to the current working directory:
&lt;br /&gt;&lt;br /&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;find  ~/Desktop/ -iname &amp;quot;*.pdf&amp;quot; \
  -o -iname &amp;quot;*.chm&amp;quot; \
  -o -iname &amp;quot;*.txt&amp;quot; \
  -o -iname &amp;quot;*.html&amp;quot; \
-exec cp -v {} . \;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;a href="http://www.athabascau.ca/html/depts/compserv/webunit/HOWTO/find.htm"&gt;more about find command&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 03 Feb 2008 04:26:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:3e416d69-c860-40db-b71f-f4e28a0a3e3d</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/02/03/find-command-practical-books-dir-copy</link>
      <category>scripts</category>
      <category>UNIX</category>
    </item>
    <item>
      <title>HTML To WIKI converter</title>
      <description>&lt;p&gt;Perl script (thanks to the author of &lt;a href="http://search.cpan.org/~diberri/HTML-WikiConverter-0.61/lib/HTML/WikiConverter.pm"&gt;&lt;span class="caps"&gt;HTML&lt;/span&gt;::WikiConverter&lt;/a&gt;):&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="comment"&gt;#!/usr/bin/perl&lt;/span&gt;

&lt;span class="ident"&gt;use&lt;/span&gt; &lt;span class="ident"&gt;strict&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="ident"&gt;use&lt;/span&gt; &lt;span class="ident"&gt;warnings&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="ident"&gt;use&lt;/span&gt; &lt;span class="constant"&gt;HTML&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;WikiConverter&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;
&lt;span class="ident"&gt;use&lt;/span&gt; &lt;span class="constant"&gt;Perl6&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Slurp&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;

&lt;span class="ident"&gt;my&lt;/span&gt; &lt;span class="global"&gt;$file_name&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;shift&lt;/span&gt;&lt;span class="punct"&gt;;&lt;/span&gt;

&lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;f&lt;/span&gt; &lt;span class="global"&gt;$file_name&lt;/span&gt; &lt;span class="keyword"&gt;or&lt;/span&gt; &lt;span class="ident"&gt;die&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No file given!&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;;&lt;/span&gt;

&lt;span class="ident"&gt;my&lt;/span&gt; &lt;span class="global"&gt;$wiki&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;new&lt;/span&gt; &lt;span class="constant"&gt;HTML&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;WikiConverter&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;dialect&lt;/span&gt;&lt;span class="punct"&gt;=&amp;gt;'&lt;/span&gt;&lt;span class="string"&gt;MediaWiki&lt;/span&gt;&lt;span class="punct"&gt;');&lt;/span&gt;

&lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="global"&gt;$wiki&lt;/span&gt;&lt;span class="punct"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="ident"&gt;html2wiki&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;slurp&lt;/span&gt; &lt;span class="global"&gt;$file_name&lt;/span&gt;&lt;span class="punct"&gt;);&lt;/span&gt;

&lt;span class="comment"&gt;__END__

  Supported dialects:  

  DokuWiki
  Kwiki
  MediaWiki
  MoinMoin
  Oddmuse
  PbWiki
  PhpWiki
  PmWiki
  SlipSlap
  TikiWiki
  UseMod
  WakkaWiki
  WikkaWiki&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Sat, 02 Feb 2008 05:59:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:6d7a8f4f-4ae0-44e3-a6a3-2c9d2314240f</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/02/02/html-to-wiki-converter</link>
      <category>Perl</category>
      <category>scripts</category>
      <category>wiki</category>
      <category>converter</category>
    </item>
    <item>
      <title>File Splitter</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_perl "&gt;use strict;
use Getopt::Std;
use File::Basename;

getopts('scf:p:'); 

our($opt_s, $opt_c, $opt_f, $opt_p);

my $file = $opt_f;
my $size = $opt_p || 1;
my $len  = 1024;
my $c = 1;
my ($buf, $counter);

-f $file or usage();

if($opt_s){
    $size = 1024 * $size;

    open IN, &amp;quot;&amp;lt; $file&amp;quot; or die &amp;quot;cannot open_r $file $!&amp;quot;;
    open OUT, &amp;quot;&amp;gt; $file.$c&amp;quot;  or die &amp;quot;cannot open_w $file $!&amp;quot;;
    binmode IN;
    binmode OUT;

    while(read(IN, $buf, $len)){
        $counter++;
        if($counter &amp;gt; $size){
            $counter = 0;
            $c++;
            close OUT;
            open OUT, &amp;quot;&amp;gt; $file.$c&amp;quot;  or die &amp;quot;cannot open_w $file $!&amp;quot;;
            binmode OUT;
        } 
        print OUT $buf
    }
} elsif($opt_c) {
    my @files = grep { -f and /^$file\.\d+$/ } glob '*';
    my $newfile = &amp;quot;splitter_$file&amp;quot;;
    open OUT, &amp;quot;&amp;gt;&amp;gt; $newfile&amp;quot; or die &amp;quot;cannot open_w $file $!&amp;quot;;
    binmode OUT;
    map { $_ =~ s/^$file\.// } @files;
    for(sort {$a&amp;lt;=&amp;gt;$b} @files ){
        open IN, &amp;quot;$file.$_&amp;quot; or die &amp;quot;cannot open_r $file $!&amp;quot;;
        binmode IN;
        print OUT $_ while &amp;lt;IN&amp;gt;;
        close IN;
    }
} else {
    usage()
}

sub usage{
    my $pro = basename($0);
    print &amp;lt;&amp;lt;SQ;

$pro (-s|-c) -p piece size -f filename

    -s    split a file into pieces
    -c    collect a file from pieces
    -p     chunk size (defaults to 1MB)
    -f     file to be processed
SQ
    exit 1
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Fri, 18 Jan 2008 22:28:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:39d0f585-3124-44cf-a51a-eeb818f55b44</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/01/18/file-splitter</link>
      <category>Perl</category>
      <category>scripts</category>
      <category>splitter</category>
    </item>
    <item>
      <title>File.rename(tedious part of the filename)</title>
      <description>Rename each file in each sub-directory, substituting &amp;#8216;%20&amp;#8217; with &amp;#8217; &amp;#8216;(space).
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;File&lt;/span&gt;
  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;self.rename_basename&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;abs_name&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;old_str&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;new_str&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="ident"&gt;f_name&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;File&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;basename&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;abs_name&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;gsub&lt;/span&gt; &lt;span class="constant"&gt;Regexp&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;quote&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;old_str&lt;/span&gt;&lt;span class="punct"&gt;),&lt;/span&gt; &lt;span class="ident"&gt;new_str&lt;/span&gt;
    &lt;span class="ident"&gt;d_name&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;File&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;dirname&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;abs_name&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="constant"&gt;File&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;rename&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;abs_name&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;d_name&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;/&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; &lt;span class="ident"&gt;f_name&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
    &lt;span class="keyword"&gt;rescue&lt;/span&gt;
      &lt;span class="keyword"&gt;raise&lt;/span&gt; &lt;span class="constant"&gt;ArgumentError&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;No such file &lt;span class="expr"&gt;#{filename}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="ident"&gt;caller&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="constant"&gt;Dir&lt;/span&gt;&lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;*/**&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;].&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;f&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
  &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="constant"&gt;File&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;basename&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;f&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;match&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;%20&lt;/span&gt;&lt;span class="punct"&gt;')&lt;/span&gt;
    &lt;span class="constant"&gt;File&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;rename_basename&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;f&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;%20&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt; &lt;/span&gt;&lt;span class="punct"&gt;')&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Sun, 13 Jan 2008 00:58:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:2b28dd34-4bb5-4367-861e-c44d8c1f7b91</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/01/13/file-rename-tedious-part-of-the-filename</link>
      <category>Ruby</category>
      <category>scripts</category>
      <category>tools</category>
    </item>
    <item>
      <title>bashrc</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_perl "&gt;export PATH=$PATH:$HOME/bin:/usr/sbin:/sbin:$HOME/network
export TERM=linux
export gemdoc=`gem environment gemdir`/doc

function prompt_set {

 local GRAY=&amp;quot;\[\033[1;30m\]&amp;quot;
 local LIGHT_GRAY=&amp;quot;\[\033[0;37m\]&amp;quot;
 local CYAN=&amp;quot;\[\033[0;36m\]&amp;quot;
 local LIGHT_CYAN=&amp;quot;\[\033[1;36m\]&amp;quot;
 local NO_COLOUR=&amp;quot;\[\033[0m\]&amp;quot;

 case $TERM in
    xterm*|rxvt*)
        local TITLEBAR='\[\033]0;\u@\h:\w\007\]'
        ;;
    *)
        local TITLEBAR=&amp;quot;&amp;quot;
        ;;
 esac

 local temp=$(tty)
 local GRAD1=${temp:5}
PS1=&amp;quot;$GRAY-$CYAN-$LIGHT_CYAN(\
$CYAN\u$GRAY@$CYAN\h$LIGHT_CYAN)$CYAN-$LIGHT_CYAN(\
$CYAN\$(date +%H:%M)$GRAY:$CYAN\w\
$LIGHT_CYAN)$CYAN-$GRAY-$LIGHT_GRAY &amp;quot;
PS2=&amp;quot;$LIGHT_CYAN-$CYAN-$GRAY-$NO_COLOUR &amp;quot;
}

prompt_set

alias get_visits=&amp;quot;ssh l 'tail /home/postgres/stats.txt'&amp;quot;
alias __='history | tail -2 | head -1'
alias r=&amp;quot;temproot `id -u`'&amp;quot;
alias sql='mysql --password=pass'
alias ..='cd ..';
alias ...='cd ../..';
alias ,='cd -'
alias e=exit
alias e=exit
alias v=vim
alias l='ls -lc -h --color=yes'
alias c=clear
alias top='top -d1'
alias hc='history -c'
alias gre=grep
alias gr=gre
alias gpre=gr
alias grp=gpre
alias le=less
alias mroe=more
alias mreo=mroe
alias h=history
alias pe='perl -e'
alias pc='perl -c'
alias t=date
alias d=date

function FOR {
        local count=$1
        start=0
        shift
        while [ $start -lt $count ]
        do
        $*
        sleep 1
                clear
                let start=$start+1
        done
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Sat, 29 Dec 2007 08:28:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:315b4d4a-a611-467f-984c-024c7a3a2ba6</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2007/12/29/bashrc</link>
      <category>scripts</category>
    </item>
    <item>
      <title>nmap cleaner in Perl</title>
      <description>&lt;p&gt;$&amp;#8221;=&amp;#8221; @ARGV&amp;#8221;;/^\D+/||print for`nmap$&amp;#8221;`&lt;/p&gt;</description>
      <pubDate>Sat, 29 Dec 2007 08:26:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:a9bda6c6-90d0-43f8-b79f-f5c38a552771</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2007/12/29/nmap-cleaner-in-perl</link>
      <category>Perl</category>
      <category>scripts</category>
    </item>
    <item>
      <title>Everyday UNIX Commands</title>
      <description>&lt;p&gt;&lt;BR&gt;
&lt;B&gt;find&lt;/B&gt;&lt;BR&gt;
Recursively find and print all files, having 'txt' extention:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;find&lt;/STRONG&gt; ./ -type f -name "*.txt"&lt;/FONT&gt;&lt;BR&gt;
&lt;BR&gt;
The same but case insensititve:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;find&lt;/STRONG&gt; ./ -type f -iname "*.txt"&lt;/FONT&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;code&gt;cat&lt;/code&gt; all found 'txt' files:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;find&lt;/STRONG&gt; ./ -type f -name "*.txt" -exec cat '{}' \;&lt;/FONT&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;code&gt;rm&lt;/code&gt; all found 'txt' files, starting with capital letter:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;find&lt;/STRONG&gt; ./ -type f -name "[A-Z]*.txt" -exec rm '{}' \;&lt;/FONT&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;code&gt;rm&lt;/code&gt; all except 'txt' files:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;find&lt;/STRONG&gt; ./ -type f ! -name "*.txt" -exec rm '{}' \;&lt;/FONT&gt;&lt;BR&gt;
&lt;BR&gt;&lt;BR&gt;
&lt;B&gt;grep&lt;/B&gt;&lt;BR&gt;
Find and print all lines in all files, containing  'tester':&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;grep&lt;/STRONG&gt; tester *&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;
Find and print all lines in all files, which do not contain  'tester':&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;grep -v&lt;/STRONG&gt; tester *&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;
The same but recursively:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;grep -r -v&lt;/STRONG&gt; tester *&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;
The same but case insensitive:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;grep -i -v&lt;/STRONG&gt; tester *&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;
&lt;B&gt;processes&lt;/B&gt;&lt;BR&gt;
simple Perl daemon:&lt;BR&gt;
&lt;FONT color="brown"&gt;perl -e 'use POSIX qw(setsid); fork; setsid; sleep 1, print $c++,$/ while 1'&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;
checking the process existance: &lt;FONT color="brown"&gt;&lt;STRONG&gt;ps x&lt;/STRONG&gt; perl&lt;/FONT&gt;&lt;BR&gt;
another way to find the process id: &lt;FONT color="brown"&gt;&lt;STRONG&gt;pgrep&lt;/STRONG&gt; perl&lt;/FONT&gt;&lt;BR&gt;
kill all processes, related to perl interpreter: &lt;FONT color="brown"&gt;&lt;STRONG&gt;pkill&lt;/STRONG&gt; perl&lt;/FONT&gt;&lt;BR&gt;
&lt;BR&gt;&lt;BR&gt;
&lt;B&gt;archive&lt;/B&gt;&lt;BR&gt;
Archive directory and all files and sub-directories:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;tar cvf&lt;/STRONG&gt; home.tar /home&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;
The same but gzip compresses:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;tar zcvf&lt;/STRONG&gt; home.tar.gz /home&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;
The same but bzip2 compressed:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;tar jcvf &lt;/STRONG&gt;home.tar.bz2 /home&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;
"untar" gzip compressed archive:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;tar zxvf&lt;/STRONG&gt; home.tar.gz&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;
"untar" bzip2 compressed archive:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;tar jxvf&lt;/STRONG&gt; home.tar.gz&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;
&lt;B&gt;column extraction&lt;/B&gt;&lt;BR&gt;
Let's assume that we need all user names from "/etc/passwd", which is the 1st column (the columns delimiter is &lt;B&gt;:&lt;/B&gt; ):&lt;BR&gt;&lt;BR&gt;
&lt;B&gt;cut&lt;/B&gt; command&lt;BR&gt;
&lt;FONT color="brown"&gt;cat /etc/passwd | &lt;STRONG&gt;cut -f1 -d:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;B&gt;awk&lt;/B&gt; script&lt;BR&gt;
&lt;FONT color="brown"&gt;cat /etc/passwd | &lt;STRONG&gt;awk -F':' '{print $1}'&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;B&gt;Perl&lt;/B&gt; source code&lt;BR&gt;
&lt;FONT color="brown"&gt;perl -ne '&lt;STRONG&gt;/(\w+)/ &amp;amp;&amp;amp; print $1,$/&lt;/STRONG&gt;' /etc/passwd&lt;/FONT&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;B&gt;Ruby&lt;/B&gt; source code&lt;BR&gt;
&lt;FONT color="brown"&gt;ruby -ne '&lt;STRONG&gt;puts $1 if /(\w+)/&lt;/STRONG&gt;' /etc/passwd&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;
&lt;B&gt;ISO image manipulation&lt;/B&gt;&lt;BR&gt;
ISO image creation:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;dd&lt;/STRONG&gt; if=/dev/cdrom of=/tmp/cdr.iso&lt;/FONT&gt;&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;mkisofs -rJTV&lt;/STRONG&gt; "books label" /home/books &gt; /tmp/books.iso&lt;/FONT&gt;&lt;BR&gt;
&lt;BR&gt;
ISO image reading:&lt;BR&gt;
&lt;FONT color="brown"&gt;&lt;STRONG&gt;mount -o loop -t iso9660&lt;/STRONG&gt; /tmp/books.iso /mnt/isoimage&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;
&lt;BR&gt;
&lt;BR&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 23 Aug 2007 09:23:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:7a785cc5-ff26-4885-a460-cf13fe3c9942</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2007/08/23/everyday-unix-commands</link>
      <category>scripts</category>
      <category>administration</category>
      <category>UNIX</category>
    </item>
    <item>
      <title>compare the ip address of different hostnames</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;
&lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;socket&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;

&lt;span class="keyword"&gt;unless&lt;/span&gt; &lt;span class="constant"&gt;ARGV&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;size&lt;/span&gt; &lt;span class="punct"&gt;==&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;
 &lt;span class="keyword"&gt;raise&lt;/span&gt; &lt;span class="constant"&gt;ArgumentError&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;
   &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Expected two hostnames, got &lt;span class="expr"&gt;#{ARGV.size}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="ident"&gt;h1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="ident"&gt;h2&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;ARGV&lt;/span&gt;

&lt;span class="keyword"&gt;begin&lt;/span&gt;
  &lt;span class="ident"&gt;h1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="ident"&gt;h2&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Socket&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="ident"&gt;getaddrinfo&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;h1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="number"&gt;7&lt;/span&gt;&lt;span class="punct"&gt;)[&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;][&lt;/span&gt;&lt;span class="number"&gt;3&lt;/span&gt;&lt;span class="punct"&gt;],&lt;/span&gt; &lt;span class="constant"&gt;Socket&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="ident"&gt;getaddrinfo&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;h2&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="number"&gt;7&lt;/span&gt;&lt;span class="punct"&gt;)[&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;][&lt;/span&gt;&lt;span class="number"&gt;3&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt;
&lt;span class="keyword"&gt;rescue&lt;/span&gt;
  &lt;span class="ident"&gt;print&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&lt;span class="expr"&gt;#{$!}&lt;/span&gt;...&lt;span class="escape"&gt;\t&lt;/span&gt;exiting&lt;span class="escape"&gt;\n&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
  &lt;span class="ident"&gt;exit&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="ident"&gt;h1&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;eql?&lt;/span&gt; &lt;span class="ident"&gt;h2&lt;/span&gt;
  &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;hosts have the same ip address: &lt;span class="expr"&gt;#{h1}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="keyword"&gt;else&lt;/span&gt;
  &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;hosts differ: &lt;span class="expr"&gt;#{h1}&lt;/span&gt; &lt;span class="expr"&gt;#{h2}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Fri, 20 Jul 2007 04:38:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:b2eb1510-42a8-4087-b33c-69fba974cbdf</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2007/07/20/compare-the-ip-address-of-different-hostnames</link>
      <category>scripts</category>
      <category>administration</category>
      <category>scripts</category>
    </item>
  </channel>
</rss>
