<?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>Sarel, a Pragmatic Programmer &#187; Uncategorized</title>
	<atom:link href="http://blog.botha.us/sarel/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.botha.us/sarel</link>
	<description></description>
	<lastBuildDate>Thu, 14 Jan 2021 12:46:10 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>Exim with letsencrypt certbot on Ubuntu 20</title>
		<link>http://blog.botha.us/sarel/exim-with-letsencrypt-certbot/</link>
		<comments>http://blog.botha.us/sarel/exim-with-letsencrypt-certbot/#comments</comments>
		<pubDate>Thu, 14 Jan 2021 12:37:17 +0000</pubDate>
		<dc:creator><![CDATA[sarel]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.botha.us/sarel/?p=128</guid>
		<description><![CDATA[Run these commands to install cert snap install core snap refresh core snap install --classic certbot ln -s /snap/bin/certbot /usr/bin/certbot snap set certbot trust-plugin-with-root=ok # make sure firewall port 80 is unblocked and no other software is running on port 80 already certbot certonly --standalone # verify certbot timer exists to renew certificate systemctl list-timers [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Run these commands to install cert</p>
<p><code><br />
snap install core<br />
snap refresh core</p>
<p>snap install --classic certbot<br />
ln -s /snap/bin/certbot /usr/bin/certbot<br />
snap set certbot trust-plugin-with-root=ok</p>
<p># make sure firewall port 80 is unblocked and no other software is running on port 80 already<br />
certbot certonly --standalone</p>
<p># verify certbot timer exists to renew certificate<br />
systemctl list-timers</p>
<p># run this to verify the renew command will work when the timer runs it:<br />
certbot renew --dry-run<br />
</code></p>
<p>I mostly used this article to configure exim to use the letsencrypt certificate: <a href="https://www.geekrant.org/2017/04/16/install-exim4-starttls-using-a-free-letsencrypt-certificate/" rel="noopener" target="_blank">https://www.geekrant.org/2017/04/16/install-exim4-starttls-using-a-free-letsencrypt-certificate/</a></p>
<p>I made a couple additions on my server to complete this. </p>
<p>Run these to create links so exim can find the current certificate:<br />
<code><br />
ln -s /etc/letsencrypt/live/example.com/fullchain.pem /etc/exim4/exim.crt<br />
ln -s /etc/letsencrypt/live/example.com/privkey.pem /etc/exim4/exim.key<br />
</code></p>
<p>Put a hook script here to fix the permissions after certbot renews a certificate:<br />
<code><br />
vim /etc/letsencrypt/renewal-hooks/post/reset_letsencrypt_perms.sh</p>
<p>#!/bin/bash<br />
chmod -R g+rX /etc/letsencrypt/live/<br />
chmod -R g+rX /etc/letsencrypt/archive/<br />
chgrp -R privkey_users /etc/letsencrypt/archive/<br />
chgrp -R privkey_users /etc/letsencrypt/live<br />
# END OF SCRIPT<br />
</code><br />
Make it executable:<br />
<code><br />
chmod +x /etc/letsencrypt/renewal-hooks/post/reset_letsencrypt_perms.sh<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.botha.us/sarel/exim-with-letsencrypt-certbot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resetting Password on Modern Laptop with Windows 8</title>
		<link>http://blog.botha.us/sarel/resetting-password-on-modern-laptop-with-windows-8/</link>
		<comments>http://blog.botha.us/sarel/resetting-password-on-modern-laptop-with-windows-8/#comments</comments>
		<pubDate>Mon, 15 Jun 2015 18:07:10 +0000</pubDate>
		<dc:creator><![CDATA[sarel]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.botha.us/sarel/?p=121</guid>
		<description><![CDATA[I just had to reset the password on a modern Windows 8 laptop and learned the following things. First, to recogize the USB device I had to turn off Fast Boot mode in the BIOS. Then I had to turn off secure boot and choose CSM mode instead of UEFI so it would boot the [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I just had to reset the password on a modern Windows 8 laptop and learned the following things.</p>
<p>First, to recogize the USB device I had to turn off Fast Boot mode in the BIOS. Then I had to turn off secure boot and choose CSM mode instead of UEFI so it would boot the MBR partition on the USB drive.</p>
<p>In the past I would just make a USB drive or CD with NTPasswd on it. This didn&#8217;t work because the drive uses GPT and NTPasswd does not support it.</p>
<p>I found a neat trick to change your password. On the Windows login screen you can press SHIFT 5 times and it will show the dialog asking if you want to enable sticky keys. Apparently this program is sethc.exe. You can replace sethc.exe with cmd.exe. Then when you press SHIFT 5 times you will get the command prompt window running as administrator and you can do what you want. </p>
<p>So I need to get read-write access to the drive to copy cmd.exe to sethc.exe. This can be done with a Windows rescue disk. Just open command prompt from there. Or you can boot some kind of Linux which has GPT support and NTFS read-write support.</p>
<p>I found this neat Linux distro called sysresccd that fits the bill: <a href="http://www.sysresccd.org/Sysresccd-manual-en_How_to_install_SystemRescueCd_on_an_USB-stick">http://www.sysresccd.org/Sysresccd-manual-en_How_to_install_SystemRescueCd_on_an_USB-stick</a></p>
<p>I booted that, mounted the partition, made the change, unmounted and rebooted.</p>
<p>These are roughly the commands:</p>
<p><code><br />
# Verify it picked up the partitions:<br />
dmesg | grep sd</p>
<p>mkdir /mnt2</p>
<p># Need to look for the partition with the windows dir</p>
<p># Mount the first partition:<br />
mount /dev/sda1 /mnt2 --options=rw<br />
ls /mnt2<br />
umount /mnt2</p>
<p># Try the second partition:<br />
mount /dev/sda2 /mnt2 --options=rw<br />
ls /mnt2</p>
<p># found it<br />
cd /mnt2/windows/system32<br />
# Make a backup copy of sethc.exe<br />
cp sethc.exe ../../<br />
# Overwrite sethc.exe with cmd.exe<br />
cp cmd.exe sethc.exe<br />
cd /<br />
umount /mnt2<br />
reboot<br />
</code></p>
<p>Boot into Windows again and do the SHIFT x 5 times trick. The command prompt window opens. You can then run net user Administrator NEWPASSWORD and it changes the password. Then you can login with the new password.</p>
<p>You should then reboot your computer into Linux again and put back the right sethc.exe or you will leave a backdoor open on your computer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.botha.us/sarel/resetting-password-on-modern-laptop-with-windows-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomcat start/stop script</title>
		<link>http://blog.botha.us/sarel/tomcat-startstop-script/</link>
		<comments>http://blog.botha.us/sarel/tomcat-startstop-script/#comments</comments>
		<pubDate>Mon, 13 Aug 2012 15:13:45 +0000</pubDate>
		<dc:creator><![CDATA[sarel]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.botha.us/sarel/?p=101</guid>
		<description><![CDATA[You could just link to catalina.sh and get the basic stop/start functionality working but it has some drawbacks: Sometimes tomcat doesn&#8217;t stop gracefully and you have to reach for ps, grep and kill You have to sometimes pass in some configuration options to Tomcat to enable JMX, increase the max memory it can use, etc. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>You could just link to catalina.sh and get the basic stop/start functionality working but it has some drawbacks:</p>
<ul>
<li> Sometimes tomcat doesn&#8217;t stop gracefully and you have to reach for ps, grep and kill</li>
<li> You have to sometimes pass in some configuration options to Tomcat to enable JMX, increase the max memory it can use, etc.</li>
<li> The catalina.sh script doesn&#8217;t include the commands to make chkconfig and update-rc.d work.</li>
<li> It doesn&#8217;t let you run Tomcat as a different user.</li>
<li> The restart argument does not work </li>
</ul>
<p>I started with the script from Yoryos here and modified it to suit my needs a little better: <a href="http://blog.valotas.com/2011/05/tomcat-initd-script.html">http://blog.valotas.com/2011/05/tomcat-initd-script.html</a></p>
<p>This script allows you to keep the configuration separate so you don&#8217;t have to edit catalina.sh directly. It also handles killing Tomcat in case it doesn&#8217;t gracefully shut down.</p>
<p>This script should be put in /etc/init.d/tomcat</p>
<p>On Debian-based systems run this to register the script:<br />
<code>update-rc.d tomcat defaults</code></p>
<p>On RedHat-based OSes use this to register the script:<br />
<code>chkconfig --add tomcat</code></p>
<p><code>#!/bin/bash<br />
#<br />
# tomcat This shell script takes care of starting and stopping Tomcat<br />
# It also handles killing Tomcat in case it doesn't stop gracefully<br />
# It uses a PID file to determine the process ID so it should work with multiple Tomcat instances on one server<br />
#<br />
# chkconfig: - 80 20<br />
#<br />
### BEGIN INIT INFO<br />
# Provides: tomcat<br />
# Required-Start: $network $syslog<br />
# Required-Stop: $network $syslog<br />
# Default-Start: 2 3 4 5<br />
# Default-Stop: 0 1 6<br />
# Description: Tomcat service<br />
# Short-Description: start and stop tomcat<br />
### END INIT INFO</p>
<p>## Source function library.<br />
#. /etc/rc.d/init.d/functions</p>
<p># Begin configuration section</p>
<p>export JAVA_HOME=/opt/jdk1.6.0</p>
<p># These options are used when Tomcat is started<br />
export CATALINA_OPTS="-Xmx512m -XX:-UseGCOverheadLimit \<br />
-Dcom.sun.management.jmxremote=true \<br />
-Dcom.sun.management.jmxremote.port=511 \<br />
-Dcom.sun.management.jmxremote.authenticate=false \<br />
-Dcom.sun.management.jmxremote.ssl=false"</p>
<p>export LD_LIBRARY_PATH=/usr/local/apr/lib</p>
<p># Set this to the path where this Tomcat is installed<br />
TOMCAT_HOME=/opt/tomcat</p>
<p># Number of seconds to wait after nicely requesting stop<br />
SHUTDOWN_WAIT=10</p>
<p># This should be a different file for each tomcat<br />
CATALINA_PID=/var/run/tomcat.pid</p>
<p>RUNASUSER=root</p>
<p># End configuration section</p>
<p>export PATH=$JAVA_HOME/bin:$PATH<br />
export CATALINA_PID</p>
<p>start() {<br />
  pid=`cat $CATALINA_PID 2>/dev/null`<br />
  if [ -n "$pid" ]<br />
  then<br />
echo "Tomcat is already running (pid: $pid)"<br />
  else<br />
    # Start tomcat<br />
    echo "Starting tomcat"<br />
    touch $CATALINA_PID<br />
    chown $RUNASUSER $CATALINA_PID<br />
    /bin/su -p -s /bin/sh $RUNASUSER $TOMCAT_HOME/bin/catalina.sh start<br />
  fi</p>
<p>return 0<br />
}</p>
<p>stop() {<br />
  pid=`cat $CATALINA_PID 2>/dev/null`<br />
  if [ -n "$pid" ]<br />
  then<br />
    /bin/su -p -s /bin/sh $RUNASUSER $TOMCAT_HOME/bin/catalina.sh stop<br />
    echo -n "Stopping Tomcat"</p>
<p>    let kwait=$SHUTDOWN_WAIT<br />
    count=0;<br />
    until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]<br />
    do<br />
      echo -n ".";<br />
      sleep 1<br />
      let count=$count+1;<br />
    done</p>
<p>    echo ""</p>
<p>    if [ $count -gt $kwait ]; then<br />
      echo "process is still running after $SHUTDOWN_WAIT seconds, killing process"<br />
      kill $pid<br />
      sleep 3</p>
<p>      # if it's still running use kill -9<br />
      if [ `ps -p $pid | grep -c $pid` -gt '0' ]; then<br />
        echo "process is still running, using kill -9"<br />
        kill -9 $pid<br />
        sleep 3<br />
      fi</p>
<p>    fi</p>
<p>    if [ `ps -p $pid | grep -c $pid` -gt '0' ]; then<br />
      echo "process is still running, I give up"<br />
    else<br />
      # success, delete PID file<br />
      rm $CATALINA_PID<br />
    fi<br />
else<br />
echo "Tomcat is not running"<br />
  fi<br />
return 0<br />
}</p>
<p>case $1 in<br />
start)<br />
  start<br />
;;<br />
stop)<br />
  stop<br />
;;<br />
restart)<br />
  stop<br />
  start<br />
;;<br />
status)<br />
  pid=$(tomcat_pid)<br />
  if [ -n "$pid" ]<br />
  then<br />
echo "Tomcat is running with pid: $pid"<br />
  else<br />
echo "Tomcat is not running"<br />
  fi<br />
;;<br />
esac<br />
exit 0</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.botha.us/sarel/tomcat-startstop-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UW imapd error</title>
		<link>http://blog.botha.us/sarel/uw-imapd-error/</link>
		<comments>http://blog.botha.us/sarel/uw-imapd-error/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 18:48:54 +0000</pubDate>
		<dc:creator><![CDATA[sarel]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.botha.us/sarel/?p=98</guid>
		<description><![CDATA[I was getting the following error in my log file and I couldn&#8217;t connect to my imap server using Thunderbird. Mar 1 13:35:19 ltps imapd[12525]: imap service init from 192.168.1.42 Mar 1 13:35:19 ltps imapd[12525]: Unable to accept SSL connection, host=dave [192.168.1.42] Mar 1 13:35:19 ltps imapd[12525]: SSL error status: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number It [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I was getting the following error in my log file and I couldn&#8217;t connect to my imap server using Thunderbird.</p>
<p><code>Mar  1 13:35:19 ltps imapd[12525]: imap service init from 192.168.1.42<br />
Mar  1 13:35:19 ltps imapd[12525]: Unable to accept SSL connection, host=dave [192.168.1.42]<br />
Mar  1 13:35:19 ltps imapd[12525]: SSL error status: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number<br />
</code></p>
<p>It turned out being interference from avast anti virus on my desktop causing this. Turn off it&#8217;s IMAP checking to work around this.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.botha.us/sarel/uw-imapd-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Powershell to kill a program running on port X</title>
		<link>http://blog.botha.us/sarel/powershell-to-kill-a-program-running-on-port-x/</link>
		<comments>http://blog.botha.us/sarel/powershell-to-kill-a-program-running-on-port-x/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 17:06:48 +0000</pubDate>
		<dc:creator><![CDATA[sarel]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.botha.us/sarel/?p=93</guid>
		<description><![CDATA[Sometimes during development Tomcat will stop responding and won&#8217;t gracefully shutdown. I then have to figure out which java process is Tomcat and kill it. Usually the easiest way is to find out which process is using the port Tomcat is running on. Here is a powershell script that finds all processes running on port [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Sometimes during development Tomcat will stop responding and won&#8217;t gracefully shutdown. I then have to figure out which java process is Tomcat and kill it. Usually the easiest way is to find out which process is using the port Tomcat is running on.</p>
<p>Here is a powershell script that finds all processes running on port 80 and kills them. This assumes the process is listening on 0.0.0.0 which means all IP&#8217;s and network interfaces.</p>
<p><code><br />
netstat -ano | ? {$_ -like "*0.0.0.0:80 *"} |<br />
  % {<br />
    $_ -match "\d+$";<br />
    echo $matches[0];<br />
    taskkill /F /PID $matches[0]<br />
   }</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.botha.us/sarel/powershell-to-kill-a-program-running-on-port-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using nagios check_cluster for services</title>
		<link>http://blog.botha.us/sarel/using-nagios-check_cluster-for-services/</link>
		<comments>http://blog.botha.us/sarel/using-nagios-check_cluster-for-services/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 05:21:48 +0000</pubDate>
		<dc:creator><![CDATA[sarel]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.botha.us/sarel/?p=88</guid>
		<description><![CDATA[I could not figure out how to get this to work. I think it&#8217;s because I didn&#8217;t understand that the $ signs were being used to call a macro. I would like to document this in detail here for others in case you&#8217;re in the same boat. Here is the command I&#8217;m using. define command{ [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I could not figure out how to get this to work. I think it&#8217;s because I didn&#8217;t understand that the $ signs were being used to call a macro. I would like to document this in detail here for others in case you&#8217;re in the same boat.</p>
<p>Here is the command I&#8217;m using.</p>
<p><code>define command{<br />
        command_name        check_service_cluster<br />
        command_line        /usr/lib/nagios/plugins/check_cluster --service -c $ARG1$ -d "$ARG2$" -v<br />
}<br />
</code></p>
<p>When using this command ARG1 indicates the threshold for non-ok data points at which a critical alert is returned. It uses the special threshold syntax.<br />
An example:<br />
@2:2 This means if there are exactly 2 data points in non-ok state return critical</p>
<p>ARG2 should be a comma-separated list of service statuses. The number 0 = OK. The number 2 = CRITICAL. A macro like the following will return the status of a service:<br />
<code>$SERVICESTATEID:host1:service1$</code></p>
<p>The following are two macros for two services separated by a comma:<br />
<code>$SERVICESTATEID:host1:service1$,$SERVICESTATEID:host2:service1$</code></p>
<p>The following check_command argument will monitor two services. The @2:2 means it will fail if 2 services are in a non-OK state. The service name is service1 and it will look on host1 and host2.<br />
<code>check_service_cluster!@2:2!$SERVICESTATEID:host1:service1$,$SERVICESTATEID:host2:service1$<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.botha.us/sarel/using-nagios-check_cluster-for-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hacking ESPN Smart Remote and ARRU449 Windows Mobile based remotes</title>
		<link>http://blog.botha.us/sarel/hacking-espn-smart-remote-and-arru449-windows-mobile-based-remotes/</link>
		<comments>http://blog.botha.us/sarel/hacking-espn-smart-remote-and-arru449-windows-mobile-based-remotes/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 05:24:01 +0000</pubDate>
		<dc:creator><![CDATA[sarel]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.botha.us/sarel/?p=66</guid>
		<description><![CDATA[I would like to start hacking on these remotes. They are universal programmable remotes with Wi-Fi, a USB connector, a color screen, a built-in simple web browser and they run on Windows Mobile. One of the features I really liked on my ESPN Remote is the ability to view TV listings on the small screen, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I would like to start hacking on these remotes. They are universal programmable remotes with Wi-Fi, a USB connector, a color screen, a built-in simple web browser and they run on Windows Mobile.</p>
<p>One of the features I really liked on my ESPN Remote is the ability to view TV listings on the small screen, then click a button to tune to the channel. Unfortunately this service was recently discontinued.</p>
<p>Some of the things that I think can be accomplished:<br />
 &#8211; Re-create the TV listing service by redirecting requests to the click365 service and answering the queries with a local web server.<br />
 &#8211; Install other Windows Mobile programs on the remote.<br />
 &#8211; Make a web app to control everything in your house via home automation software like MisterHouse.<br />
 &#8211; Remotely control iTunes via Wi-Fi like the iPhone does.<br />
 &#8211; Backup all the configuration that has been done to make it work with all my devices.<br />
 &#8211; Share the programmed IR signals on the remote with other users so that it&#8217;s easier to program the remote to work with your devices. This can all be compiled in a database similar to the Logitech Harmony database.<br />
 &#8211; Control entertainment center devices remotely via the remote and maybe make things switch on/off on a schedule.</p>
<p>Does anybody know how to get into these devices and start hacking on them? What I know so far is as follows.</p>
<p>The remote is running the Windows CE Web Server on ports 80 and 443. I have no idea what any URL&#8217;s are that can be accessed though. If we can get to the file system on the remote we could maybe see what URL&#8217;s are valid.</p>
<p>Usually you can install ActiveSync or Windows Mobile Device Center and when you connect the device via USB to your PC it lets you browse the files on the device. While these remotes have a USB connector it does not connect with ActiveSync. There must be something disabled on the device causing this. Edit: <a href="http://www.tech-archive.net/Archive/WindowsCE/microsoft.public.windowsce.app.development/2006-08/msg00192.html">Looks like this explains how</a></p>
<p>If there is any interest by other people we could create a project on Google Code or SourceForge and start documenting our work.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.botha.us/sarel/hacking-espn-smart-remote-and-arru449-windows-mobile-based-remotes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PuTTY + Debian + Home/End</title>
		<link>http://blog.botha.us/sarel/putty-debian-homeend/</link>
		<comments>http://blog.botha.us/sarel/putty-debian-homeend/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 17:00:46 +0000</pubDate>
		<dc:creator><![CDATA[sarel]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.botha.us/sarel/?p=18</guid>
		<description><![CDATA[By default, the home and end keys do not work if you SSH using PuTTY to a Debian box. Here&#8217;s the easiest work-around I&#8217;ve found. In PuTTY set theÂ  Terminal-type string under Connection &#62; Data to &#8220;linux&#8221; instead of &#8220;xterm&#8221;. This also makes dark colors much brighter, which is great for editing files with comments; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>By default, the home and end keys do not work if you SSH using PuTTY to a Debian box.</p>
<p>Here&#8217;s the easiest work-around I&#8217;ve found. In PuTTY set theÂ  Terminal-type string under Connection &gt; Data to &#8220;linux&#8221; instead of &#8220;xterm&#8221;. This also makes dark colors much brighter, which is great for editing files with comments; usually the dark blue comments are too hardÂ  to read.</p>
<p>If you have many profiles already setup then doing the above can be a pain. To make this easier,Â  use PuTTY Session Manager. This program can export all your profiles to a reg file, then you can edit the file, do a search/replace (remember to make it case sensitive) and import the file back in. The program is here: http://puttysm.sourceforge.net/</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.botha.us/sarel/putty-debian-homeend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where I Work</title>
		<link>http://blog.botha.us/sarel/where-i-work/</link>
		<comments>http://blog.botha.us/sarel/where-i-work/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 01:59:56 +0000</pubDate>
		<dc:creator><![CDATA[sarel]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.botha.us/sarel/?p=17</guid>
		<description><![CDATA[I work here! DocuVantage]]></description>
				<content:encoded><![CDATA[<p>I work here!</p>
<p><a title="DocuVantage" href="http://www.docuvantage.com/">DocuVantage</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.botha.us/sarel/where-i-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
