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

<channel>
	<title>ArghWebWorks</title>
	<atom:link href="http://www.arghwebworks.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.arghwebworks.com</link>
	<description>True happiness comes from the joy of deeds well done, the zest of creating things new --- Antoine de Saint-Exupery</description>
	<pubDate>Thu, 31 Jul 2008 19:44:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Hyperdesk</title>
		<link>http://www.arghwebworks.com/2008/07/31/hyperdesk/</link>
		<comments>http://www.arghwebworks.com/2008/07/31/hyperdesk/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 19:44:28 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=107</guid>
		<description><![CDATA[The hyperdesk site is finally live. It&#8217;s been a long road of about eight months of nightly work. Once the client was satisfied that the html(link)/css he wanted was out of my league ( way out of my league ) he had another company set up the html(link) and CSS(link) (Cascading Style Sheets) and start [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="https://www.plimus.com/jsp/redirect.jsp?contractId=1955226&#038;referrer=sparky" onclick="javascript:pageTracker._trackPageview ('/outbound/www.plimus.com');">hyperdesk</a> site is finally live. It&#8217;s been a long road of about eight months of nightly work. Once the client was satisfied that the <abbr class="uttInitialism" title="HyperText Markup Language">html</abbr>(<a class="ubernym" href="http://www.w3.org/MarkUp/">link</a>)/css he wanted was out of my league ( way out of my league ) he had another company set up the <abbr class="uttInitialism" title="HyperText Markup Language">html</abbr>(<a class="ubernym" href="http://www.w3.org/MarkUp/">link</a>) and <abbr class="uttInitialism" title="Cascading Style Sheets">CSS</abbr>(<a class="ubernym" href="http://www.w3.org/Style/CSS/">link</a>) (Cascading Style Sheets) and start up the javascript.</p>
<p>Their work with mootools was a lot smoother than my work with prototype. <img src='http://www.arghwebworks.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The site owes a lot to mootools.net, PEAR and smarty.  I went with using the Pear libraries for database access, the Smarty tools for templating and the mootools for javascript.  I&#8217;ve built a secondary site at <a href="http://www.hyperdeskthemes.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.hyperdeskthemes.com');">hyperdesk themes</a> that&#8217;s using the same stuff and also the blueprint <abbr class="uttInitialism" title="Cascading Style Sheets">css</abbr>(<a class="ubernym" href="http://www.w3.org/Style/CSS/">link</a>) libraries.  Once nice thing about building a site for myself ( or to my own standards ) is that while I can say &#8220;this is ugly&#8221; ( the animation is currently ugly ), I can also say &#8220;make this better via the blueprint grid.&#8221; and not &#8220;move this over 2 pixels, no too far!&#8221;</p>]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2008/07/31/hyperdesk/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Competitive?</title>
		<link>http://www.arghwebworks.com/2008/07/22/competitive/</link>
		<comments>http://www.arghwebworks.com/2008/07/22/competitive/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 18:47:31 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=106</guid>
		<description><![CDATA[How does one &#8220;become more competitive?&#8221; 
Competetiveness is a virtue of companies. Basically, people who believe in it consider  that there&#8217;s a limited amount of income available ( or public attention or whatever ) and they&#8217;re driven to get &#8220;their fair share&#8221; or &#8220;most of what&#8217;s out there.&#8221; 
Here&#8217;s a list of values a [...]]]></description>
			<content:encoded><![CDATA[<p>How does one &#8220;become more competitive?&#8221; </p>
<p>Competetiveness is a virtue of companies. Basically, people who believe in it consider  that there&#8217;s a limited amount of income available ( or public attention or whatever ) and they&#8217;re driven to get &#8220;their fair share&#8221; or &#8220;most of what&#8217;s out there.&#8221; </p>
<p>Here&#8217;s a list of values a client poses for his company.  It&#8217;s not my list, but I think it&#8217;s an interesting one to look through:</p>
<ul>
<li>Creative in approach to solving problems</li>
<li>dedicated to his own ideas</li>
<li>high value on time</li>
<li>competitive</li>
<li>thinks big</li>
<li>forward thinking/future oriented</li>
<li>innovative</li>
</ul>
<p>I like to think t hat I&#8217;m dedicated to my own ideas, innovative and creative with regards to problem-solving. However, I&#8217;m not sure I place a high enough value on time, or that I think big enough. As far as &#8220;competitive,&#8221; don&#8217;t make me laugh. <img src='http://www.arghwebworks.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   </p>
<p>How does one groom oneself to become more competitive?</p>]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2008/07/22/competitive/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fail2Ban and Spammers</title>
		<link>http://www.arghwebworks.com/2008/06/08/fail2ban-and-spammers/</link>
		<comments>http://www.arghwebworks.com/2008/06/08/fail2ban-and-spammers/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 00:43:52 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=105</guid>
		<description><![CDATA[I thought that Fail2Ban would work well with the spammers we&#8217;ve been getting through one of the mail servers.  Basically, I wanted to keep track of who had connected to the server and was from one of the spam sources listed at spamhaus.org.  I wanted to configure a firewall rule so we didn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>I thought that <a href="http://fail2ban.org/" onclick="javascript:pageTracker._trackPageview ('/outbound/fail2ban.org');">Fail2Ban</a> would work well with the spammers we&#8217;ve been getting through one of the mail servers.  Basically, I wanted to keep track of who had connected to the server and was from one of the spam sources listed at spamhaus.org.  I wanted to configure a firewall rule so we didn&#8217;t even have to listen to their message.</p>
<p>I configured it to watch the mail log and when a connection was rejected because of spamhaus.org, it would trigger. It would remember the IP for an hour and then let the spammer try again.  Why an hour? Our list is currently averaging around 2500 ips, and I didn&#8217;t want it bigger than that. <img src='http://www.arghwebworks.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> </p>
<p>This is the jail.conf entry:<br />
<code><br />
[spamhaus]<br />
enabled  = true<br />
filter   = spamhaus<br />
action   = iptables[name=SPAMHAUS, port=smtp, protocol=tcp]<br />
logpath  = /var/log/maillog<br />
findtime = 60<br />
bantime  = 3600<br />
maxretry = 1<br />
</code></p>
<p>And the filter entry:<br />
<code><br />
[Definition]<br />
failregex = [[](?P<host>\S*)[]] (?:did not issue|[(]may be forged[)])<br />
failregex = (?P</host><host>\S*) listed at sbl-xbl.spamhaus.org<br />
</host></code></p>
<p>However, here&#8217;s an intriguing question: at some point fail2ban just &#8220;stopped working.&#8221;  It was like the regex didn&#8217;t match any more. Nothing obvious in the logs, et cetera. But when it stopped working, we were <strong>hammered</strong> by inbound spam. In fact, I originally thought the problem was a DOS <em>attack</em>. But maybe when the iptables rules expired, the spam mail servers carried on their normal mail sending ( when a mail server comes back online, send any waiting mail to it ). Maybe I&#8217;m not helping the problem and I should go back to a plain 5.7.1 reject?</p>]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2008/06/08/fail2ban-and-spammers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pear&#8217;s Services_Amazon</title>
		<link>http://www.arghwebworks.com/2008/05/21/pears-services_amazon/</link>
		<comments>http://www.arghwebworks.com/2008/05/21/pears-services_amazon/#comments</comments>
		<pubDate>Wed, 21 May 2008 21:23:39 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Amazon]]></category>

		<category><![CDATA[pear]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=104</guid>
		<description><![CDATA[I don&#8217;t recommend it yet. Of course, it&#8217;s in beta, so cavet programmeur and all that. However, I had to comment out an include for the PEAR.php file ( for some reason site5 is automatically including it ) and then the response from Amazon, when I finally got one of their example scripts running was [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t recommend it yet. Of course, it&#8217;s in beta, so cavet programmeur and all that. However, I had to comment out an include for the PEAR.php file ( for some reason site5 is automatically including it ) and then the response from Amazon, when I finally got one of their example scripts running was &#8220;410,&#8221; which means &#8220;gone, left with no forwarding address.&#8221; </p>
<p>So I&#8217;m imagining that it&#8217;s not really being maintained at the moment. Feel free to argue with me <img src='http://www.arghwebworks.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> For now, I guess, I&#8217;m rolling my own class. And that&#8217;s ok too.</p>]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2008/05/21/pears-services_amazon/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Timing Page Loads</title>
		<link>http://www.arghwebworks.com/2008/04/03/timing-page-loads/</link>
		<comments>http://www.arghwebworks.com/2008/04/03/timing-page-loads/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 14:18:23 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
		
		<category><![CDATA[Webmastering]]></category>

		<category><![CDATA[system admin]]></category>

		<category><![CDATA[system administration]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/2008/04/03/timing-page-loads/</guid>
		<description><![CDATA[Every morning, I had a client calling me and asking &#8220;Is our server abnormally unresponsive?&#8221;  They were browsing their website and it seemed to them that the pages were taking longer than usual to render.  Once I figured out why they were asking and what they were measuring with, I realized I could [...]]]></description>
			<content:encoded><![CDATA[<p>Every morning, I had a client calling me and asking &#8220;Is our server abnormally unresponsive?&#8221;  They were browsing their website and it seemed to them that the pages were taking longer than usual to render.  Once I figured out why they were asking and what they were measuring with, I realized I could graph this amount of time, the important thing was figuring out how to get this information.</p>
<p>Here&#8217;s what I came up with: I was already running mrtg-rrd to do much of their graphing, so I wanted to create a MRTG Target line to correspond to &#8220;how long does our page take to render.&#8221;  I wrote a script to run &#8220;/path/towget &#8211;delete-after -pq (page) -O /tmp/garbage&#8221; and display the amount of time it took.  I wrote it in <a href="http://www.php.net" class="ubernym uttInitialism"><abbr class="uttInitialism" title="PHP: Hypertext Preprocessor">php</abbr></a> because it was easiest.</p>
<p><code><br />
$wget="/usr/bin/wget -pq --delete-after -O /tmp/garbage";<br />
$toget = "$site";<br />
$start=microtime(true);<br />
exec( "$wget $toget", $out, $e );<br />
$end=microtime(true);<br />
$dur=round( $end-$start, 3 );<br />
print "$dur\n";<br />
</code></p>
<p>The problem with this is that I was running it on their gateway; their gateway is also the monitor and grapher.   It was taking less than a second to render the page ( because of local network speeds ). Instead, I wanted it to more closely correspond to what the client would be seeing. Their development server is at their office; so I put the script there and wrote the MRTG target to point at a local ( on the gateway ) script that got the value from the development server, printed it twice, printed the date and the name of the site. It looks like this:<br />
<code><br />
$user='foo';<br />
$password='bar';<br />
$sitename='example.com';<br />
exec("/usr/bin/lynx -auth=$user:$password --dump http://developmentserver.com/scriptname.php ", $out, $e );<br />
$time=0;<br />
while ( ($time==0) &#038;&#038; (count( $out ) > 0 ) ) {<br />
        $time=(float) array_shift( $out );<br />
}<br />
print "$time\n";<br />
print "$time\n";<br />
print date("r\n");<br />
print "$sitename\n";<br />
</code></p>
<p>A couple of important caveats. The day after I started running this ( it averages around 4.6 seconds, btw, much too long imho ), the displayed time doubled.  It could have been a change to the page we&#8217;re looking for, but it turned out to be a DNS issue on the development server. So DNS is important. This doesn&#8217;t take into account the amount of time a browser takes to render a page; it&#8217;s just the time to download all the pieces. So processor intensive stuff, like super heavy javascript or super heavy tables, won&#8217;t show up here.  However, if you keep in mind what the value is- how long to resolve and download all the pieces of a web page, this is a useful metric.</p>]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2008/04/03/timing-page-loads/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ie6</title>
		<link>http://www.arghwebworks.com/2008/03/27/ie6/</link>
		<comments>http://www.arghwebworks.com/2008/03/27/ie6/#comments</comments>
		<pubDate>Fri, 28 Mar 2008 01:13:58 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/2008/03/27/ie6/</guid>
		<description><![CDATA[can DIAF.
That is all.]]></description>
			<content:encoded><![CDATA[<p>can DIAF.</p>
<p>That is all.</p>]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2008/03/27/ie6/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Permissions Unmasked!</title>
		<link>http://www.arghwebworks.com/2008/02/07/permissions-unmasked/</link>
		<comments>http://www.arghwebworks.com/2008/02/07/permissions-unmasked/#comments</comments>
		<pubDate>Thu, 07 Feb 2008 23:22:15 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
		
		<category><![CDATA[system administration]]></category>

		<category><![CDATA[howto]]></category>

		<category><![CDATA[permissions]]></category>

		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/2008/02/07/permissions-unmasked/</guid>
		<description><![CDATA[Oy. Permissions. Permissions in a Linux / Unix environment can be a headache; and who knows what all those little numbers and letters mean?
I do, and you will too.
Of course, every book in the world will tell you that there are three sets of permissions; user, group and world. So something that&#8217;s rw-r&#8211;r&#8211; is writable [...]]]></description>
			<content:encoded><![CDATA[<p>Oy. Permissions. Permissions in a Linux / Unix environment can be a headache; and who knows what all those little numbers and letters mean?</p>
<p>I do, and you will too.</p>
<p>Of course, every book in the world will tell you that there are three sets of permissions; user, group and world. So something that&#8217;s rw-r&#8211;r&#8211; is writable only by the user but readable by everyone.  There&#8217;s read, write and executable settings for each one, and they&#8217;re marked by &#8220;bits&#8221;. You know that computers think in binary, and in binary there are only zeroes and ones.   Here&#8217;s what we&#8217;re interested in for the next few minutes.</p>
<pre>
Decimal 0 = Binary 000
Decimal 1 = Binary 001
Decimal 2 = Binary 010
Decimal 4 = Binary 100
</pre>
<p>If you look those over, you&#8217;ll see there&#8217;s only one way to get each of the numbers from 0 to 7 using only one of a number ( ie, you can&#8217;t replace a 4 with 2 2s ). A seven <strong>has</strong> to be a four, a two and a one. No other options.  So when you&#8217;re saying &#8220;change the ownership of somefile to 755&#8243; what you mean is you want the ownership to be read:ON, write:ON, execute:ON for the owner, and read:ON write:OFF execute:ON for everyone else.  </p>
<p>If you&#8217;re <a href="http://www.arghwebworks.com/2008/02/06/automated-login-for-system-maintenance/">ssh&#8217;d into your server</a> and you run an &#8220;ls -la somefile&#8221; you&#8217;ll see something that looks like</p>
<pre>
-rw-r--r--
</pre>
<p>which translates to</p>
<pre>
011000100
</pre>
<p>or, taking off the first one ( because it&#8217;s special and I won&#8217;t talk about it here), </p>
<pre>
110 100 100
</pre>
<p>If you treat those each as binary numbers and translate them to decimal, you&#8217;ll have 644. </p>
<p>What&#8217;s this mean?<br />
Basically, 4 is read permissions only. 2 is write permissions only but you can add them together and get 6 which is read and write permissions. There&#8217;s only one way to get a six; a four and a two ( you can&#8217;t have two threes or three twos ).  When you add &#8220;executable&#8221; to the mix, you&#8217;ll see that you can add executable to any of these numbers and get 5 ( read and execute, don&#8217;t write ), 3 ( write and execute, don&#8217;t read ( weird ) ), 7 ( read, write and execute ). </p>
<p><em><br />
Note that it doesn&#8217;t really make sense to &#8220;execute&#8221; a directory. The &#8220;executable bit&#8221; for directories translates to &#8220;traversable.&#8221;  Or, in english, a user can go through the directory without needing read permissions.  For instance, to use a contrived example, you could have a /var/logs/user/ directory and just give the users permission to see their own directory; the logs directory could not be readable or writable but be traversable; they could go through it. But if they did a &#8220;ls -la /var/logs&#8221;, they&#8217;d get back an error.</em></p>]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2008/02/07/permissions-unmasked/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How To Configure An Automated Login</title>
		<link>http://www.arghwebworks.com/2008/02/06/automated-login-for-system-maintenance/</link>
		<comments>http://www.arghwebworks.com/2008/02/06/automated-login-for-system-maintenance/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 07:14:44 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
		
		<category><![CDATA[system admin]]></category>

		<category><![CDATA[]]></category>

		<category><![CDATA[authentication]]></category>

		<category><![CDATA[how-to]]></category>

		<category><![CDATA[putty]]></category>

		<category><![CDATA[remote host]]></category>

		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=100</guid>
		<description><![CDATA[I&#8217;ll be honest, I do a lot of command line work. Of course you know by now that Telnet, the granddaddy of connecting-to-command-line programs isn&#8217;t very secure, so reasonable people ( and even a few unreasonable ones ) have turned to an encrypted protocol called SSH for their command line needs.
I ssh to the servers [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be honest, I do a lot of command line work. Of course you know by now that Telnet, the granddaddy of connecting-to-command-line programs isn&#8217;t very secure, so reasonable people ( and even a few unreasonable ones ) have turned to an encrypted protocol called SSH for their command line needs.</p>
<p>I ssh to the servers my sites are on in order to look at server statistics.  I can&#8217;t stand automatically generated passwords with numbers, letters, capital letters, punctuation and more than thirty-five characters. They&#8217;re irritating, though pretty secure, I&#8217;ll admit. So here&#8217;s what to do in order to connect more automatically with your server.</p>
<p>First, make sure you have SSH access. With <a href="http://www.site5.com/in.php?id=28661" onclick="javascript:pageTracker._trackPageview ('/outbound/www.site5.com');">Site 5</a>, it took me an email. With <a href="http://www.dpbolvw.net/click-2566207-10409150" target="_top" onclick="javascript:pageTracker._trackPageview ('/outbound/www.dpbolvw.net');">Hostgator</a>, it took an email and a scanned copy of my driver&#8217;s license.  No big deal, really.  Ok, now you&#8217;ve got access to the server, what next? </p>
<p>I like a SSH client named <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.chiark.greenend.org.uk');">Putty</a>. Don&#8217;t use this in countries that outlaw encryption, for gods&#8217; sake!  <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" onclick="javascript:pageTracker._trackPageview ('/outbound/www.chiark.greenend.org.uk');">Download Putty</a> and PuttyGen ( you&#8217;ll need this in a couple of minutes).  You can save them to your desktop, or to a thumbdrive, or whatever.  Save the files. </p>
<p>Then run PuttyGen by double clicking on the icon.  You want to create a SSH RSA 2 key.  Click &#8220;generate.&#8221;  You&#8217;ll need to &#8220;create some randomness&#8221; by moving the cursor around the blank area. Nothing fancy, just move the mouse.  Click &#8220;save public key&#8221; to save the public key. You&#8217;ll want to come up with some identifying name for it; let&#8217;s use myserver.pub. And then you&#8217;ll need to save the private key. Click &#8220;Save Private Key&#8221; and it&#8217;ll ask you for a passphrase. A passphrase is a good idea, but if your computer is in your house and nobody else uses it, et cetera, you may not need one. Use your judgement.  If you&#8217;re doing this on a laptop or a thumbdrive, you&#8217;ll want to use a passphrase. It&#8217;s just like a password.  Enter &#8220;myserver.ppk as the name of the key and click OK to continue.</p>
<p>Hopefully this is the only time you&#8217;ll need your password for your account at your host. Click on the putty.exe file and run it. Type the name of your host ( possibly www.domainname.com, however you&#8217;d normally connect ) into the host box and make sure &#8220;ssh&#8221; is selected for connection type. Connect, and type in your password. You&#8217;re logged in now! Yay!  See if there&#8217;s already a .ssh directory there with the command &#8220;ls .ssh&#8221;. If it&#8217;s not there, create the .ssh directory with the command &#8220;mkdir .ssh.&#8221;  Chmod it to usable only by you: &#8220;chmod 700 .ssh&#8221;.</p>
<p>Enter the .ssh directory ( cd .ssh ) and look for a file named &#8220;authorized_keys.&#8221; If it&#8217;s not there, don&#8217;t worry, we&#8217;ll create it.  Go back to where you saved your public key ( above, with the PuttyGen software. The public key is the one named &#8220;myserver.pub.&#8221; Open it up with a text editor like notepad. It should look something like this:</p>
<p>ssh-rsa AAB3NzD+rXhGEB9Bt6kEotYi/+gvcGKrRpeNIIekJvnCj4jAsmu9eQHgwxJq1rsTqo0iJAw0B6w0LPn+0omkorYcqA89OK/gsI1VuFuS+WV4oFCXbRBqJJkdkxz972uOqj/rn7re/zn3oKzsPhqUKCtdjz/c7S/zAX5DLT/DDhWkzS4QzrlZYWI0H8ruKh7ZcmOd7texXFkFFRYca7djvsFIbLQ//KVMAZ2l78r53SSvnNd2GoF3n9yvQsslze0t7Dh9t1i4Hni53rc990jpw== </p>
<p>with a comment at the right end of it ( leave the comment there ).  Copy that entire thing. Go back to the Putty window and type &#8220;cat >> authorized_keys&#8221; and hit return. The cursor will drop to the next line.  Paste in your public key, hit enter, and then hit &#8220;Ctrl-D&#8221; and enter, and your authorized keys file will be complete.  You&#8217;ll want to &#8220;chmod 600 authorized_keys&#8221; to make sure that only you can read it. Or write it.  Make sure the file is only one line long; the ssh key shouldn&#8217;t be broken into separate lines.</p>
<p>Ok, exit from your putty program. Close it up and restart it.  Enter your server&#8217;s host name again in the box, and ensure it&#8217;s set for SSH.  On the left hand window pane, go to &#8220;connection&#8221; and then to &#8220;rlogin.&#8221; Enter your username. Then go down a little more in the left window and hit &#8220;SSH&#8221; and then &#8220;Auth.&#8221;  Use the myserver.ppk private key for authentication. It&#8217;s just like every other file- browse box.  Make sure you go back to the left hand pane, back up to &#8220;Session&#8221; and save it. You&#8217;ll need to enter a name in the &#8220;name&#8221; box and then press &#8220;save.&#8221;  </p>
<p>To use it, double click on the saved name in the little window.  If everything went according to plan, Putty will read the private key (you&#8217;ll need your passphrase here if you used one ), generate the public key, and then use that to authenticate with the server, and then log you in.<br />
<img src="http://www.ftjcfx.com/image-2566207-10409150" width="1" height="1" border="0"/></p>]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2008/02/06/automated-login-for-system-maintenance/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Stupid &#8220;Yum&#8221; tricks.</title>
		<link>http://www.arghwebworks.com/2008/01/25/stupid-yum-tricks/</link>
		<comments>http://www.arghwebworks.com/2008/01/25/stupid-yum-tricks/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 03:40:06 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
		
		<category><![CDATA[system admin]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=99</guid>
		<description><![CDATA[
Note to self:don&#8217;t do &#8220;yum -y remove coreutils.&#8221;

It seemed like a good idea at the time. I installed CentOS 5 on a new computer with a big hard drive, intended solely for network storage over NFS. So I figured I&#8217;d remove all the unneeded packages. I ran &#8220;yum list &#124; grep installed&#8221; to get a [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>
Note to self:don&#8217;t do &#8220;yum -y remove coreutils.&#8221;
</p></blockquote>
<p>It seemed like a good idea at the time. I installed CentOS 5 on a new computer with a big hard drive, intended solely for network storage over NFS. So I figured I&#8217;d remove all the unneeded packages. I ran &#8220;yum list | grep installed&#8221; to get a list of all the installed packages, and then made a long list of packages to remove.</p>
<p>When it got to the &#8220;doing it&#8221; part, it started throwing out this error&#8230;</p>
<blockquote><p>
/etc/rc.d/init.d/nfs: line 125: rm: command not found<br />
/etc/init.d/functions: line 303: rm: command not found</p>
<p>/etc/rc.d/init.d/rpcidmapd: line 68: rm: command not found<br />
/etc/rc.d/init.d/nfslock: line 29: uname: command not found
</p></blockquote>
<p>Well, what happened?</p>
<p>When I ran my &#8220;yum remove&#8221; line to remove the 25 or so packages, I included the -y flag, which assumes &#8220;yes&#8221; for everything.  I scrolled up and it was removing some packages that required some of the packages that I was deleting. So, for instance, it was removing python. Nevermind that yum requires <strong>python.</strong> It was going.  It was also removing coreutils, which is where <strong>uname</strong> and <strong>rm</strong> went.  When I realized what it was doing, I aborted it. </p>
<p>My terminal is already fubar though.</p>
<p>scp still works, however, so I&#8217;m copying the /usr/ and the /lib/ and the /bin/ directories from another system with the same release and the same processor type, and I hope that when I do a &#8220;yum install&#8221; to replace all the packages that were removed that I&#8217;ll be back to normal in relatively no time.  I don&#8217;t really feel like driving back down to the colocation again; it&#8217;s been twice already today.</p>
<p>Edit:<br />
Nope, it&#8217;s broken.  Off to the colo again. Don&#8217;t feel right about charging the client for my enthusiasm so it&#8217;ll be just me.</p>]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2008/01/25/stupid-yum-tricks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Asterisk-mrtg.pl</title>
		<link>http://www.arghwebworks.com/2008/01/20/asterisk-mrtgpl/</link>
		<comments>http://www.arghwebworks.com/2008/01/20/asterisk-mrtgpl/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 04:35:35 +0000</pubDate>
		<dc:creator>Russ</dc:creator>
		
		<category><![CDATA[system admin]]></category>

		<guid isPermaLink="false">http://www.arghwebworks.com/?p=98</guid>
		<description><![CDATA[This script ( see that download link far to the right of &#8220;An MRTG script to allow graphing of concurrent calls in asterisk&#8221; ? ) is good, but I think it could be somewhat better. 
That&#8217;s because in the version of asterisk we have on our system, the Manager interface outputs the channel in upper [...]]]></description>
			<content:encoded><![CDATA[<p>This <a href="http://karlsbakk.net/asterisk/" onclick="javascript:pageTracker._trackPageview ('/outbound/karlsbakk.net');">script</a> ( see that download link far to the right of &#8220;An MRTG script to allow graphing of concurrent calls in asterisk&#8221; ? ) is good, but I think it could be somewhat better. </p>
<p>That&#8217;s because in the version of asterisk we have on our system, the Manager interface outputs the channel in upper case not lower case: SIP not sip. So we had it configured for &#8220;sip&#8221; and it wasn&#8217;t returning anything. I changed it to &#8220;SIP&#8221; and it&#8217;s working again, but a case-insensitive flag would help me <img src='http://www.arghwebworks.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.arghwebworks.com/2008/01/20/asterisk-mrtgpl/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.389 seconds -->
