<?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>Inner Technical</title>
	<atom:link href="http://www.innertechnical.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.innertechnical.com</link>
	<description>Information Technology Labs and Consulting</description>
	<lastBuildDate>Tue, 21 Jul 2009 19:53:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Thanks</title>
		<link>http://www.innertechnical.com/2009/07/17/thanks/</link>
		<comments>http://www.innertechnical.com/2009/07/17/thanks/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 17:31:25 +0000</pubDate>
		<dc:creator>InnerTechnical.com</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://www.innertechnical.com/2009/07/17/thanks/</guid>
		<description><![CDATA[Thank you for contacting Innertechnical.com IT engineers! Someone will get back to you shortly!
]]></description>
			<content:encoded><![CDATA[<p>Thank you for contacting Innertechnical.com IT engineers! Someone will get back to you shortly!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.innertechnical.com/2009/07/17/thanks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Combined Intelligence &#8211; Taking on Google takes more than just a few crufty brain pans!</title>
		<link>http://www.innertechnical.com/2009/02/25/combined-intelligence-taking-on-google-takes-more-than-just-a-few-crufty-brain-pans/</link>
		<comments>http://www.innertechnical.com/2009/02/25/combined-intelligence-taking-on-google-takes-more-than-just-a-few-crufty-brain-pans/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 00:44:53 +0000</pubDate>
		<dc:creator>InnerTechnical.com</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[What's New]]></category>
		<category><![CDATA[about]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[ation]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[building]]></category>
		<category><![CDATA[Clustered]]></category>
		<category><![CDATA[Clusters]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[computers]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[drive]]></category>
		<category><![CDATA[elk cloner]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[engineers]]></category>
		<category><![CDATA[equipment]]></category>
		<category><![CDATA[Expert]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[googol]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[Installations]]></category>
		<category><![CDATA[line]]></category>
		<category><![CDATA[ming]]></category>
		<category><![CDATA[Mr. Skrenta]]></category>
		<category><![CDATA[name]]></category>
		<category><![CDATA[nology]]></category>
		<category><![CDATA[paging]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[spreading]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[virii]]></category>
		<category><![CDATA[virus]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[words]]></category>

		<guid isPermaLink="false">http://www.innertechnical.com/?p=253</guid>
		<description><![CDATA[[rant]
Sometimes I like to do a little reading on the web. In many cases it is a quick and easy way to kill a few minutes, and I don&#8217;t have to keep track of a hardbound book. I was inspired to write this article by what I read, hoping perhaps you will enjoy this reading [...]]]></description>
			<content:encoded><![CDATA[<p>[rant]</p>
<p>Sometimes I like to do a little reading on the web. In many cases it is a quick and easy way to kill a few minutes, and I don&#8217;t have to keep track of a hardbound book. I was inspired to write this article by what I read, hoping perhaps you will enjoy this reading as well. Anyway, I&#8217;m reading through the web in one window, and tailing apache logs in another. Suddenly I notice some systems displaying tar-pit like messages:</p>
<p>TCP: Treason uncloaked! Peer 38.108.180.95:31794/80 shrinks window 344798477:344803373. Repaired.<br />
TCP: Treason uncloaked! Peer 38.108.180.95:31794/80 shrinks window 344798477:344803373. Repaired.</p>
<p>This is typically a mis-configured interface, or perhaps a mis-behaving switch. However, in totally clean cluster environments like the one I was looking at, I usually give this some follow through as I should not be getting window scale corruption. A quick look at the ns records refers me to &#8220;name = h-180-95.scoutjet.com&#8221;. Curious about what they are doing, I opened up the browser and read the little spider page.</p>
<p><a href="http://www.scoutjet.com" target="_blank">http://www.scoutjet.com</a></p>
<p>I decided to take a closer look, after all its every day that some foreign cracker will spoof IP addresses of idiotic tech companies just to get double desert. A quick look and what do you know!? The offending IP is not spoofed, and does in fact reside within their netblock:</p>
<p>%rwhois V-1.5:0010b0:00 rwhois.cogentco.com<br />
38.108.180.95<br />
network:ID:NET-266CB40018<br />
network:Network-Name:NET-266CB40018<br />
network:IP-Network:38.108.180.0/24<br />
network:Postal-Code:94065<br />
network:State:CA<br />
network:City:Redwood City<br />
network:Street-Address:100 Marine Parkway<br />
network:Org-Name:Blekko<br />
network:Tech-Contact:ZC108-ARIN<br />
network:Updated:2008-09-17 10:42:07<br />
network:Updated-by:John Knowles</p>
<p>First thing that crossed my mind was why does such an innocent looking spider page come up while investigating a potential TCP datagram corruption situation?</p>
<p>So, reading on a little I see these fellows want to take on Google! This altered my thinking rather quickly. If you are going to take on Google saying you are building a search engine that will outperform theirs (and say that Google is &#8220;going down&#8221;), you should probably at least have a very public debut of your web search, some rallied public support, and perhaps a few hard metrics! Otherwise, it gives the tech savvy reader much the same impression I got: &#8220;This sounds like a bunch of geeks who hatched some plan at a pot party, and are now scouring the web for attention&#8221;.</p>
<p>Moving forward, I see I was most likely correct: <a href="http://www.techcrunch.com/2008/01/02/the-next-google-search-challenger-blekko/" target="_blank">http://www.techcrunch.com/2008/01/02/the-next-google-search-challenger-blekko/</a></p>
<p>Now, I normally won&#8217;t rag on people, especially not publicly, but here&#8217;s the part where I start getting annoyed with society today. At what point do people become so naive that they will launch a publicly printed article based on so much freeze dried crap? The part that really stuck in my craw was this -&gt; <a href="http://www.crunchbase.com/person/rich-skrenta" target="_self">http://www.crunchbase.com/person/rich-skrenta</a> {}</p>
<p>I&#8217;m sorry Rich, been involved with computers since the early 1970&#8217;s, and despite the clarity of your ego you did NOT invent the first &#8220;self-spreading&#8221; virus. The FIRST ever computer virus was named Creeper, and it was created back in the early 1970s by a fellow named Bob Thomas. At the time the Internet didn&#8217;t exist as we know it today, it was referred to as ARPA-NET which was one of the many extra-nets used by the medical, military, and scientific communities to rapidly share everything from medical prescriptions to scientific data sets. Though Bob&#8217;s virus was done as a test, and only affected VAX type computers, it none-the-less was created while Rich was still just a wee tot.</p>
<p>The first &#8220;wild&#8221; Trojan was called &#8220;Animal&#8221; (named for the pervasive way it would copy to any connected equipment, including disk drives) came out shortly thereafter in the mid 70&#8217;s.</p>
<p>Now credit where credit is due, Mr. Skrenta did create the Elk Cloner virus as he claimed in 1982, however lets reveal the truth behind the myth of this particular virus (of which I still have a copy on a library of intentionally infected disks, even though I don&#8217;t have a living Apple II to run it on). Creating a boot virus for the Apple II is hardly something I&#8217;d try to stake a claim to fame on&#8230;</p>
<p>A virus is nothing more than a malicious computer program which typically harbors some ability to copy itself to other components of the system. So, creating a simple computer virus? Not a daunting task. Its (once again) QUITE simply a MALICIOUS COMPUTER PROGRAM. Considering people have been programming with computer languages since Bell Labs in the 1950&#8217;s, this hardly seems like a feat.</p>
<p>That being said Elk Cloner was not really so much of a feat at all. In fact, other similar mal-ware was created, just never unleashed on the public (which seems a lot like a high school prank). The Apple II was widely known by experts of the time to be very susceptible to intrusion, particularly with respects to the disk drives. Since Apple II was reliant on floppy disks to run it seemed like a no brainer that copying malicious data on the source disks would certainly allow for operating system corruption on subsequent systems that booted from that same floppy.</p>
<p>Secondarily, the Apple II was also widely known for its lack of boundaries with boot strapping. A &#8220;Boot strap&#8221; simply refers to a small set of functions coded into the disk startup that allow user driven executable code to be launched into initial memory on a system. While the straps typically contain only logical volume data to be used in sizing up the geometry metrics of the installed hard disk, and launching the disk&#8217;s start-up programming, the Apple II boot routines were widely known to be easily extensible through a lack of byte counts on the strap. In English, this type of malicious coding will not work on any computer that&#8217;s less than 25 years old, and really just knowing you can modify the boot sector or write to unallocated memory of the boot areas is more than half the battle.</p>
<p>To prove my case, my good friend Donald Judd and I wrote a simple virus while we were at Arizona Tech that was intended as &#8220;proof of concept&#8221; that Windows operating systems of the day lacked any sanity when it came to intrusion of their operating environment. The really cool part, is we wrote it using nothing more than Debug.exe (a system included debugging/memory editing utility), and did it in less than 10 lines! In fact the entire virus was only 8 bytes in size. For those of you who are familiar with the environment, here&#8217;s the concept:</p>
<p><a href="http://www.innertechnical.com/wp-content/uploads/2009/02/tloop1.png"><img class="aligncenter size-full wp-image-254" title="tloop1" src="http://www.innertechnical.com/wp-content/uploads/2009/02/tloop1.png" alt="tloop1 Combined Intelligence   Taking on Google takes more than just a few crufty brain pans!" width="432" height="223" /></a></p>
<p>Simple put: Read the A register in memory. Move the AX register to value 0, call interrupt 19 (hard reboot), read the difference between the registers (8 bytes), write the file.</p>
<p>Now, this is just proof of concept stuff. Interrupt 19 was a hardware interrupt which signaled the system to restart (regardless of circumstances). While this code could not copy itself to a boot sector, it does demonstrate that writing a malicious computer program is simply that: Writing a malicious program. In fact interrupt 19 went away when the inception of software based interrupts within Windows in the late 90&#8217;s, and running it on a modern system will result in nothing more than a &#8220;protected memory&#8221; error (if anything at all&#8230;you&#8217;d have to run it from %comspec% to get the error):</p>
<p><a href="http://www.innertechnical.com/wp-content/uploads/2009/02/tloop2.png"><img class="aligncenter size-full wp-image-255" title="tloop2" src="http://www.innertechnical.com/wp-content/uploads/2009/02/tloop2.png" alt="tloop2 Combined Intelligence   Taking on Google takes more than just a few crufty brain pans!" width="410" height="150" /></a></p>
<p>In other words lots of people out there started exploiting Microsoft&#8217;s inability to control protected memory in a sane way, and MS learned from it. Anyway, the point is this code was eventually discovered and exploited by the people who wrote virii like &#8220;Melissa&#8221; and &#8220;Love&#8221;. In fact we experimented creating DOS boot type virii which would do non-destructive things like cascade ASCII smiley faces at you while your computer boots.</p>
<p>This article seems a lot like a rant, and well, I guess it is. After reading self edited wiki entries about Mr. Rich I decided it was high time that someone stepped up, and told the rest of the world that are NOT computer savvy, DON&#8217;T BE IMPRESSED with tomfoolery! Computing is a combined intelligence, and not one single stand alone person in the world possesses the knowledge to completely rebuild a modern computer in the event all the technology somehow went away. In other words, if there was a global holocaust, and all the computers and supporting archives were destroyed, there&#8217;s not a SINGLE person in the world that could recreate what we think of as a computer <span style="text-decoration: line-through;"><em><strong>by themselves</strong></em></span>! Computing is a COMBINED INTELLIGENCE, and as such, there will always be someone smarter out there.</p>
<p>Don&#8217;t let someone take fame from a high school prank that isn&#8217;t really all that original, and use it to rally esteem which would cause one to think such a person can take on Google. If you think I&#8217;m kidding, look at what Google represents. The literal definition of the math phrase the search engine took their name from is:</p>
<blockquote><p>&#8220;A googol is the large number 10100, that is, the digit 1 followed by one hundred zeros (in decimal representation). The term was coined in 1938 by Milton Sirotta (1929–1980), nephew of American mathematician Edward Kasner.&#8221;</p></blockquote>
<p>To take them on you&#8217;ll need a lot more than a few geeks with a funny paper bag on their head, or pictures of some geek brainstorming session coupled with someone who self-proclaims to the world they are superior because they created a malicious computer program. You&#8217;ll need someone smarter than them. Smarter than me, perhaps even smarter than <strong>Kevin David Mitnick</strong>. You&#8217;ll need Steven Hawkings on acid! You&#8217;ll need&#8230;.a googleplex of brains. In short, you&#8217;ll need COMBINED INTELLIGENCE!</p>
<p>[/rant]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.innertechnical.com/2009/02/25/combined-intelligence-taking-on-google-takes-more-than-just-a-few-crufty-brain-pans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enabling WebDav for CDN [Building Coda file system support] using CentOS 5.2 Linux</title>
		<link>http://www.innertechnical.com/2008/11/26/enabling-webdav-for-cdn-building-coda-file-system-support-using-centos-52-linux/</link>
		<comments>http://www.innertechnical.com/2008/11/26/enabling-webdav-for-cdn-building-coda-file-system-support-using-centos-52-linux/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 22:35:29 +0000</pubDate>
		<dc:creator>InnerTechnical.com</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Open Source Projects]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[5.2]]></category>
		<category><![CDATA[about]]></category>
		<category><![CDATA[advanced]]></category>
		<category><![CDATA[BitGravity]]></category>
		<category><![CDATA[building]]></category>
		<category><![CDATA[cdn]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[coda]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[direction]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[Installations]]></category>
		<category><![CDATA[line]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[networks]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[Webdav]]></category>

		<guid isPermaLink="false">http://www.innertechnical.com/?p=234</guid>
		<description><![CDATA[Many people have asked me about setting up WebDav to directly address a CDN repository as a /local/path directory. This requires Coda file system (Advanced NFS) support. This particular tutorial is directed at people who wish to use WebDav support for a CDN such as BitGravity (as in this example) on a Linux system. The [...]]]></description>
			<content:encoded><![CDATA[<p>Many people have asked me about setting up WebDav to directly address a CDN repository as a /local/path directory. This requires Coda file system (Advanced NFS) support. This particular tutorial is directed at people who wish to use WebDav support for a CDN such as BitGravity (as in this example) on a Linux system. The particular flavor of Linux used in this tutorial is CentOS 5.2, so if you are using a different form of Linux the procedure is similar but will vary from distro to distro.</p>
<p>Install the Necessary Packages:</p>
<p>To access the necessary packages in Yum, the RPM repository needs to be up to date. I used the following commands to clean up Yum:</p>
<p>rpm -e yum-plugin-fastestmirror<br />
yum clean all<br />
yum install yum-metadata-parser yum-updatesd</p>
<p>yum install yum-plugin-fastestmirror</p>
<p>Once added, run the following installations:</p>
<p>yum install davfs2<br />
yum install dkms<br />
yum install dkms-fuse<br />
yum install fuse<br />
yum install fuse-davfs2</p>
<p>Verify that the Coda File System is Supported in the kernel:</p>
<p>For the WebDAV share to mount correctly the module for the Coda file system needs to be supported by the kernel. To test if it is supported run the following command command:</p>
<p>dmesg | grep -i coda</p>
<p>If the system returns an output, then everything should be fine, and the configuration of WebDAV can continue. However, if it responds with nothing then the kernel does not support coda. To overcome this obstacle the kernel source tree will need to be built so that the necessary coda files can be extracted.</p>
<p>Build the Kernel Source Tree and Add Coda Support</p>
<p>By building the kernel source tree the necessary files for coda file system support can be manually compiled, and then copied into the current kernel&#8217;s library. In this way you don&#8217;t have to rebuild your running kernel.</p>
<p>During the most of the build procedure it is critical that it be performed as a non-root user to maintain the necessary permissions.</p>
<p>&gt;&gt; As root user or su -  &lt;&lt;</p>
<p>yum install kernel-devel<br />
yum install kernel-headers<br />
yum install rpm-build<br />
yum install redhat-rpm-config<br />
yum install unifdef</p>
<p>&gt;&gt; Exit su &#8211; (or sudo to a non-root user) and continue with the following steps! &lt;&lt;</p>
<p>After installing the packages log into the non-root user and navigate to ~ (the $HOME directory), and create the directory for the source:</p>
<p>mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}<br />
echo &#8216;%_topdir %(echo $HOME)/rpmbuild&#8217; &gt; .rpmmacros</p>
<p>Type &#8220;uname -ar&#8221; to display the kernel version and then install the respective kernel source. For example:</p>
<p>rpm -i http://mirror.centos.org/centos/5/updates/SRPMS/kernel-2.6.18-92.1.18.el5.src.rpm 2&gt; /dev/null</p>
<p>Now spec the kernel module version for this build with:</p>
<p>rpmbuild -bp &#8211;target=`uname -m` kernel-2.6.spec 2&gt; prep-err.log | tee prep-out.log</p>
<p>After installing the kernel source tree navigate to the install location and start the build process:</p>
<p>cd ~/rpmbuild/BUILD/kernel-2.6.18/2.6.18.x86_64/<br />
make oldconfig</p>
<p>Accept the default values [especially if you aren't sure].</p>
<p>make menuconfig</p>
<p>Browse the source tree menus to &#8216;File Systems&#8217; &#8211;&gt; &#8216;Network File Systems&#8217; &#8211;&gt; &#8216;Coda File System&#8217;. Type &#8220;m&#8221; for the value, which specifies modular support for coda.</p>
<p>Continue the build process with these commands:</p>
<p>make prepare<br />
make modules_prepare<br />
make M=fs/coda</p>
<p>With the build steps completed the fruits of labor can be plucked from the kernel source tree:<br />
&gt;&gt; As the root user, or su &#8211; &lt;&lt;</p>
<p>cp ~/rpmbuild/BUILD/kernel-2.6.18/2.6.18.x86_64/fs/coda/coda.ko /lib/modules/2.6.18-53.1.6.el5/updates/</p>
<p>And at last, coda module installation can be initiated:</p>
<p>depmod -a</p>
<p>modprobe coda</p>
<p>Check that the module started correctly with :</p>
<p>lsmod | grep coda</p>
<p>Now we want to be sure the Coda module starts at boot time so add this line to /etc/modules.conf</p>
<p>probe coda</p>
<p>Configure WebDAV</p>
<p>Once all packages are installed navigate to /etc/davfs2 and edit two configuration files. The configuration for BitGravity&#8217;s WebDAV will be used as an example.</p>
<p>By default all the options are commented out on /etc/davfs2/davfs2.conf. For WebDAV to work properly for Deca&#8217;s setup the following lines need to be un-commented, and edited as such:</p>
<p># General Options</p>
<p># &#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>dav_user        davfs2            # system wide config file only<br />
dav_group     users             # system wide config file only</p>
<p>kernel_fs     coda</p>
<p># WebDAV Related Options # &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>use_locks 0</p>
<p># Debugging Options # &#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>debug most           # possible values: config, kernel, cache, http, xml,<br />
#      httpauth, locks, ssl, httpbody, secrets, most</p>
<p>And add the following line to the Credential Line section of the secrets file:<br />
[Adjust as per your own particular CDN. This line was for BitGravity but check with your CDN provider to be sure what your credentials are before proceeding.]</p>
<p>http://webdav.bitgravity.com/   userid@yourdomain.com  password</p>
<p>Next, make a directory for the WebDAV share to mount:</p>
<p>mkdir /davtest</p>
<p>Create dav2fs user:</p>
<p>useradd dav2fs [make sure you choose nologin, and no shell]</p>
<p>Check /etc/passwd to be sure the user dav2fs has no permissions on the system [/sbin/nologin should be the shell interpreter]:</p>
<p>davfs2:x:101:102:davfs2:/var/cache/davfs2:/sbin/nologin</p>
<p>Give the new user ownership of the WebDAV mount</p>
<p>chown -R dav2fs.users /davtest</p>
<p>The final file to edit is /etc/fstab, in which you will add a line like this:</p>
<p>http://webdav.bitgravity.com/       /davtest     davfs   uid=dav2fs,gid=users,dir_mode=755    0 0</p>
<p>To initiate the mount run:</p>
<p>mount -a</p>
<p>Test that you have everything correct with:</p>
<p>touch /davtest/test.txt<br />
ls -l /davtest/test.txt</p>
<p>You can manually mount the share for troubleshooting purposes with:</p>
<p>mount.davfs -o dir_mode=755,uid=dav2fs,gid=users http://webdav.bitgravity.com/ /davtest</p>
<p>If there is a problem check /var/log/messages!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.innertechnical.com/2008/11/26/enabling-webdav-for-cdn-building-coda-file-system-support-using-centos-52-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Perl -e from command line</title>
		<link>http://www.innertechnical.com/2008/09/25/using-perl-e-from-command-line/</link>
		<comments>http://www.innertechnical.com/2008/09/25/using-perl-e-from-command-line/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 13:47:19 +0000</pubDate>
		<dc:creator>InnerTechnical.com</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[admin]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[default variable]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[interpreter]]></category>
		<category><![CDATA[line]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[perl -e]]></category>
		<category><![CDATA[pipe command]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[redirection]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[syntax]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[words]]></category>

		<guid isPermaLink="false">http://www.innertechnical.com/?p=179</guid>
		<description><![CDATA[replacing every instance of a word in text files. At times like this you can get a lot of help from Perl. PERL, or "Practicle Extraction and Reporting Language", is well suited to help us in cases like this.]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.innertechnical.com/wp-content/uploads/2008/09/perl.jpg"><img class="aligncenter size-full wp-image-224" title="perl" src="http://www.innertechnical.com/wp-content/uploads/2008/09/perl.jpg" alt="perl Using Perl  e from command line" width="256" height="314" /></a></p>
<p>Often times in systems administration you will have to perform tasks which can seem extremely tedious. An example of this is replacing every instance of a word in text files. At times like this you can get a lot of help from Perl, or &#8220;Practical Extraction and Reporting Language&#8221;. Perl is well suited to help us in cases like this.</p>
<p>One possible way to handle the problem would be to copy the file from the server, and use some form of text editor to replace every instance of a word, and then save the modified file back to the server. There&#8217;s an easier way. Perl -e from command line!</p>
<p>The -e switch tells Perl to execute anything between two &#8216; marks. For example:</p>
<p><a href="http://www.innertechnical.com/wp-content/uploads/2008/09/perl1.gif"><img class="aligncenter size-full wp-image-213" title="perl1" src="http://www.innertechnical.com/wp-content/uploads/2008/09/perl1.gif" alt="perl1 Using Perl  e from command line" width="500" height="37" /></a></p>
<p>Using Perl&#8217;s substitution operator in combination with this can be a very useful tool! For example, lets say you have a text file that you wish to replace every instance of the word &#8220;cat&#8221; with the word &#8220;dog&#8221;. Using Perl -e from command line with the substitution operator is one possible way to do this rapidly.</p>
<p>For example, in Perl to substitute cat with dog in the current line of text, you would use the following code:</p>
<p>s/cat/dog/gi, $_;</p>
<p>This says &#8220;Substitute the word dog for the word cat in every line of text we process&#8221;. The /delimits the search, and terminates it. The positional will be switched at run time, so three / marks are used. One to begin the match, one to indicate the end of the first match word, and the beginning of the replacement word, and then a third / mark terminates the search string. The &#8220;g&#8221; and &#8220;i&#8221; switches used just after the search string terminator tell Perl to &#8220;replace this word regardless of position in the line (g=global)&#8221;, and to &#8220;ignore case so that upper and lower case words (or a combination thereof) will be replaced as well&#8221;. Remember that when doing case sensitive replace operations, the previous case of the word will be destroyed in favor of the new word. For example, both &#8220;CaT&#8221; and &#8220;cAt&#8221; would be replaced with &#8220;dog&#8221; in the above example.</p>
<p>Here is a live example for you. Lets say we wish to replace all instances of the word cat with the word dog in a textual file:</p>
<p><a href="http://www.innertechnical.com/wp-content/uploads/2008/09/perl2.gif"><img class="aligncenter size-full wp-image-214" title="perl2" src="http://www.innertechnical.com/wp-content/uploads/2008/09/perl2.gif" alt="perl2 Using Perl  e from command line" width="500" height="114" /></a></p>
<p>Now we&#8217;ll use Perl -e from command line to replace cat with dog:</p>
<p><a href="http://www.innertechnical.com/wp-content/uploads/2008/09/perl3.gif"><img class="aligncenter size-full wp-image-215" title="perl3" src="http://www.innertechnical.com/wp-content/uploads/2008/09/perl3.gif" alt="perl3 Using Perl  e from command line" width="500" height="90" /></a></p>
<p>The command I used was:</p>
<p>cat animal.txt | perl -e &#8216;while(&lt;&gt;) {s/cat/dog/gi, $_; print;}&#8217;</p>
<p>Notice everything in the scripted section of the command line is encompassed between two &#8216; marks. What the while(&lt;&gt;) { statement does is tells Perl &#8220;while processing input from STDIN do&#8230;.&#8221;. In the command the $_ variable is a &#8220;default variable&#8221; telling Perl to perform the operation on the current line of text being processed. Since we are always using the default, we can eliminate that variable and let the Perl interpreter do the work. The syntax in the next example will demonstrate.</p>
<p>To replace instances of the word in a file this method can by used with &#8220;file redirection&#8221; to create a new file. For example to replace all instances of the word cat with dog, and create a new &#8220;dog file&#8221; you would use</p>
<p>cat animal.txt | perl -e &#8216;while(&lt;&gt;) { s/cat/dog/gi; print;}&#8217; &gt; dog.txt</p>
<p>Be careful using data redirection! You can clobber yourself, so check your syntax carefully!</p>
<p>&gt; will OVERWRITE</p>
<p>&gt;&gt; will APPEND</p>
<p>Perl can be used in many such ways as a powerful tool for systems administrators. Perl from the command line brings all of the capabilities of perl to filtering and processing data from the command line. Check back soon for more tutorials regarding using Perl from command line, including database interaction!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.innertechnical.com/2008/09/25/using-perl-e-from-command-line/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux and WiFi</title>
		<link>http://www.innertechnical.com/2008/09/17/linux-and-wifi/</link>
		<comments>http://www.innertechnical.com/2008/09/17/linux-and-wifi/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 16:55:51 +0000</pubDate>
		<dc:creator>InnerTechnical.com</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Open Source Projects]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[Linksys]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mandriva]]></category>
		<category><![CDATA[NDISWrapper]]></category>
		<category><![CDATA[USB]]></category>
		<category><![CDATA[USB core]]></category>
		<category><![CDATA[wireless]]></category>
		<category><![CDATA[wireless networking]]></category>
		<category><![CDATA[WUSB300N]]></category>

		<guid isPermaLink="false">http://www.innertechnical.com/?p=208</guid>
		<description><![CDATA[Configuring a wireless networking card under Linux can sometimes be a hassle. Most hardware vendors are not yet advanced enough to offer multi-platform drivers, and the need for wireless networking in Linux has grown substantially as the OS gains favor in the home user environment.]]></description>
			<content:encoded><![CDATA[<p>Configuring a wireless networking card under Linux can sometimes be a hassle. Most hardware vendors are not yet advanced enough to offer multi-platform drivers, and the need for wireless networking in Linux has grown substantially as the OS gains favor in the home user environment.</p>
<p>While many distributions of Linux support wireless networking cards, as well as extended USB support, some installations can be a little counter-intuitive when it comes to getting the hardware installed and working. For this reason a good recommendation is Mandriva Linux (2008.1 Spring / One). Mandriva has done even more than before to expand their already robust hardware support, and a Linksys USB N type wireless network adapter installed with little or no trouble at all.</p>
<p>It is important to point out that Mandriva configured the wireless card through the USB core, and NOT through NDISWrapper. This is important because it is a native driver base, and not an emulator. The one caveat to the installation was getting the network connection manager to see the previously installed adapter. There are two easy ways to accomplish this.</p>
<p>Plug in the Linksys N card to the USB port.</p>
<p>Insert your Linksys driver disk in the cdrom, and mount it, or note if it is auto-mounted in /media.</p>
<p>If you are running a desktop, such as KDE or Gnome, then you will go through the &#8220;System&#8221;&#8230;&#8221;Applications&#8221; menu to &#8220;Configure your computer&#8221; (Control panel). From there, you will click on &#8220;Add new network connection&#8221;, and select &#8220;Wireless&#8221; as the type. When prompted for the driver, point the wizard to the Linksys factory Windows XP driver. In this case, the path was /media/WUSB300N/Drivers/XP/*.inf</p>
<p>At this point if your system as correctly installed initially, it should recognize the USB core driven devices such as the Linksys N card, and <em><strong>should</strong></em> prompt you with the message &#8220;The device you are attempting to configure is already configured using the USB core. Do you really want to use NDISWrapper?&#8221;</p>
<p>Click NO/Cancel</p>
<p>At this point a &#8220;service network restart&#8221; from a terminal (command line), or starting the control panel &#8220;Configure network connections&#8221; applet should allow you to see the working adapter. If it did not immediately refresh, you might consider a reboot if you are a novice, so that the system should init the wireless WLAN0 interface on start-up. If you are an experienced user you should be able to simply refresh the networks list in the wireless control interface in the &#8220;Start Bar&#8221; icons.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.innertechnical.com/2008/09/17/linux-and-wifi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Installation Slow to Copy Files</title>
		<link>http://www.innertechnical.com/2008/08/11/windows-installation-slow-to-copy-files/</link>
		<comments>http://www.innertechnical.com/2008/08/11/windows-installation-slow-to-copy-files/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 20:02:02 +0000</pubDate>
		<dc:creator>InnerTechnical.com</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[computers]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[Microsoft Experts]]></category>
		<category><![CDATA[set up computer]]></category>
		<category><![CDATA[set up windows]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[slow XP setup]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Techie]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[windows setup]]></category>
		<category><![CDATA[windows XP]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[xp setup]]></category>

		<guid isPermaLink="false">http://www.innertechnical.com/?p=199</guid>
		<description><![CDATA[Symptoms:
A common problem with windows installations is the setup program being very slow to copy files. In the case this article is based around, the windows installer on Windows XP Professional would go through the fdisk and format stages, only to extremely slow when it started the &#8220;Copying Files&#8230;&#8221; sequence. Even if left alone for [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>Symptoms:</strong></p></blockquote>
<p>A common problem with windows installations is the setup program being very slow to copy files. In the case this article is based around, the windows installer on Windows XP Professional would go through the fdisk and format stages, only to <strong><em>extremely slow</em></strong> when it started the &#8220;Copying Files&#8230;&#8221; sequence. Even if left alone for hours at a time progress is extremely slow and rarely moves more than one percent at a time.</p>
<blockquote><p><strong>The problem:</strong></p></blockquote>
<p>During setup the default mode for the installer is to quick format the disks with the NTFS file system.</p>
<blockquote><p><strong>The Solution:</strong></p></blockquote>
<p>Repeat the boot up process and start the windows installer again. When you reach the target partition installation dialog, make sure your format <em><strong>without</strong></em> the &#8220;Quick&#8221; option enabled. This will force the format to check for bad disk inodes and mark them in the allocation table as unusable. After this step your windows installation should copy files smoothly&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.innertechnical.com/2008/08/11/windows-installation-slow-to-copy-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
