<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1275442728448408829</id><updated>2011-11-04T05:58:41.709-07:00</updated><category term='moving'/><category term='virtualization'/><category term='go-lang'/><category term='perl'/><category term='64bit'/><category term='lvm'/><category term='hp-ux'/><category term='itanium'/><category term='rhel'/><category term='redhat'/><category term='bridging'/><category term='auditing'/><category term='job'/><category term='vlan'/><category term='first post'/><category term='css'/><category term='vehicross'/><category term='git'/><category term='nfs'/><category term='parisc'/><category term='desktop environments'/><category term='kvm'/><category term='backgrounds'/><category term='xen'/><category term='pdksh'/><category term='linux'/><category term='ksh'/><category term='suzuki'/><category term='centos'/><category term='shell scripting'/><category term='cpan'/><category term='security'/><category term='vmware'/><category term='programming'/><category term='bespoke'/><category term='itanic'/><category term='nagios'/><category term='configuration management'/><category term='networking'/><category term='c'/><category term='vstrom'/><category term='interview'/><category term='blogger'/><category term='hacks'/><category term='802.1q'/><category term='netapp'/><category term='html'/><category term='v-strom'/><category term='qemu'/><category term='snmp'/><title type='text'>tobert.org</title><subtitle type='html'>The random and rare writings of Al Tobey.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-3570101383103262420</id><published>2011-09-20T23:06:00.000-07:00</published><updated>2011-09-20T23:06:54.938-07:00</updated><title type='text'>Over-breeding &amp; Culling EC2 Instances for IO Performance</title><content type='html'>I've heard other people talk about this on Twitter or at conferences, but as far as I can remember, nobody has described the nuts and bolts of finding tolerable-performance ephemeral disks in EC2.&lt;br /&gt;&lt;br /&gt;I recently spun up a 12-node Cassandra cluster in EC2 and, since it's a database, I decided to do some basic tire-kicking and learned a few things along the way.&lt;br /&gt;&lt;br /&gt;Rule: always zero your ephemerals if you care about performance.&lt;br /&gt;&lt;br /&gt;Why: Amazon is likely using &lt;a href="http://en.wikipedia.org/wiki/Sparse_file"&gt;sparse files&lt;/a&gt; to back ephemerals (and probably EBS, I have no experience there). This makes perfect sense, because:&lt;ul&gt;&lt;li&gt;you get free thin provisioning, so unused disk doesn't go to waste&lt;/li&gt;&lt;li&gt;Xen supports it well&lt;/li&gt;&lt;li&gt;it's easy to manage lots &amp; lots of them&lt;/li&gt;&lt;li&gt;it's trivial to export over all common network block protocols (e.g. AoE, iSCSI)&lt;/ul&gt;&lt;br /&gt;Because there is an extra step of allocating a backing block for a sparse file for every block in your VM, performance will be all over the map while zeroing the disks.&lt;br /&gt;&lt;br /&gt;Script #1:&amp;nbsp; &lt;br /&gt;&lt;script src="https://gist.github.com/1231302.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;I usually launch my zeroing script with &lt;span style="font-family: monospace;"&gt;cl-run.pl --list burnin -s zero-drives.sh&lt;/span&gt;. The "burnin" list is just all the ec2 hostnames, one per line, in ~/.dsh/machines.burnin.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Culling round 1&lt;/b&gt;: Look at the raw throughput of all of the nodes and cull anything that looks abnormally low. For example, when building the aforementioned cluster, I kept getting really obviously bad instances in one of the us-east-1 AZ's.This is what I saw when using my &lt;a href="https://github.com/tobert/perl-ssh-tools/blob/master/cl-netstat.pl"&gt;cluster netstat&lt;/a&gt; tool for a batch of m1.xlarge's in us-east-1c.&lt;br/&gt;&lt;br/&gt;&lt;script src="https://gist.github.com/1215444.js"&gt; &lt;/script&gt;I immediately culled off everything doing under 10k IOPS for more than a minute. If you examine the per-disk stats with &lt;span style="font-family: monospace;"&gt;iostat -x 2&lt;/span&gt;, you'll usually see one disk with insanely high (&gt;1000ms) latency all the time. There are certainly false-negatives at this phase, but I don't really care since instances are cheap and time is not. I ended up starting around 30 instances in that one troublesome AZ to find 3 with sustainable IOPS in the most trivial of tests (dd).&lt;br/&gt;&lt;br/&gt;When I think I have enough obviously tolerable nodes for a race, I kick off another zero round. Once the load levels out a  little, I take a snapshot I like of the cl-netstat.pl output and process it in a hacky way to sort by IOPS and add which EC2 zone the instance is in and its instance ID so I can kill the losers without digging around.  Here's an example from a round of testing I did for a recent MySQL cluster deployment:&lt;br/&gt;&lt;br/&gt;&lt;script src="https://gist.github.com/1231333.js"&gt; &lt;/script&gt;&lt;br/&gt;I picked the top few instances from each AZ and terminated the rest. Job done.&lt;br/&gt;&lt;br/&gt;This is a pretty crude process in many ways. It's very manual, it requires a lot of human judgement, and most importantly, dd if=/dev/zero not a good measure of real-world performance. This process is just barely good enough to cull the worst offenders in EC2, which seem to be quite common in my recent experience.&lt;br/&gt;&lt;br/&gt;In the future, I will likely automate most of this burn-in process and add some real-world I/O generation, probably using real data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-3570101383103262420?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/3570101383103262420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=3570101383103262420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/3570101383103262420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/3570101383103262420'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2011/09/over-breeding-culling-ec2-instances-for.html' title='Over-breeding &amp; Culling EC2 Instances for IO Performance'/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-6371052086072842626</id><published>2011-07-21T00:39:00.000-07:00</published><updated>2011-09-20T23:13:25.064-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bespoke'/><category scheme='http://www.blogger.com/atom/ns#' term='go-lang'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='configuration management'/><title type='text'>New Experiment Language Choices</title><content type='html'>(edit: I'm still tinkering with the ideas and have started learning Go, but will probably end up doing this project in either python or bash)&lt;br/&gt;&lt;br/&gt;My evolving side project is a configuration management suite that:&lt;pre&gt;1.) uses as much of git as possible and sensible&lt;br /&gt;2.) lightweight&lt;br /&gt;3.) simple things must be very fast turnaround to/from thought&lt;-&gt;production&lt;br /&gt;4.) all configs (and binaries if you like) versioned bit-for-bit for all time&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I'll write more about the overall system design later; I've written a bit of an intro and will post it when I have code to present (here's what I have in mind for fs permissions: &lt;a href="https://gist.github.com/1096381"&gt;gist&lt;/a&gt;) I'm implementing some tools now that I've got the branching &amp; config strategy worked out. I could whip out a lot of it in Perl pretty handily, but I suspect it'll be a one-man show forever if I go that route. At work, almost everything is done in Ruby, which I still don't really like much. Plus two of the leading CFM tools are already in Ruby, so I feel like it's time for something different. So, here's what I'm considering and why:&lt;pre&gt;1) Go&lt;br /&gt;  +) generates regular binaries, no VM to maintain on nodes&lt;br /&gt;  +) good C compatibility, already has libgit2 bindings&lt;br /&gt;  +) garbage collected, first-class strings&lt;br /&gt;  +) (yes, +) DNA from C, Erlang, Plan9, and Inferno/Limbo&lt;br /&gt;     e.g.) lightweight processes, channels, goroutines&lt;br /&gt;  -) I'd have to learn from scratch&lt;br /&gt;  -) AFAIK nobody on my team knows/uses it (obscure)&lt;br /&gt;2) C&lt;br /&gt;  +) compiled, works literally everywhere, knows your mom intimately&lt;br /&gt;  +) good match with git, openssl/gnutls, and libgit2&lt;br /&gt;  +) igraph looks neat for smart path &amp; network&lt;br /&gt;  -) manual memory, thread, and process management :(&lt;br /&gt;  -) I'm rusty as the Titanic&lt;br /&gt;3) Perl &gt;=5.8&lt;br /&gt;  +) installed everywhere&lt;br /&gt;  +) I'm good/fast at it, prototype in a couple weeks&lt;br /&gt;  +) many git utilities are written in perl, good match&lt;br /&gt;  -) declining popularity, fractured community&lt;br /&gt;  -) modern libs require too much baggage (e.g. Moose)&lt;br /&gt;  -) XS is the devil, no usable libgit2 bindings&lt;br /&gt;4) Python&lt;br /&gt;  +) installed everywhere I care about&lt;br /&gt;  +) thriving community&lt;br /&gt;  +) I have some experience (though still much slower than perl)&lt;br /&gt;  +) libgit2 bindings exist&lt;br /&gt;  +) some of the git tools are already python&lt;br /&gt;  -) difficult to bundle with zero dependencies outside the git branch&lt;br /&gt;  -) v2.5 -&gt; v3.x transition is in progress, which to choose? (prob 2.7)&lt;br /&gt;5) Java&lt;br /&gt;  +) just kidding!&lt;br /&gt;6) Javascript/NodeJS&lt;br /&gt;  -) I'm not kidding&lt;br /&gt;  +) garbage collected, closures, functional style available, naturally async&lt;br /&gt;  +) growing popularity, modules I'd need are fairly mature (relative to node.js)&lt;br /&gt;  -) rapidly changing ecosystem/interfaces&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;To be honest, I'm really leaning towards Go right now but it'd add a month or so before I have something useful.&lt;br /&gt;&lt;br /&gt;Comments, suggestions? Don't hold back, you know I wouldn't ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-6371052086072842626?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/6371052086072842626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=6371052086072842626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/6371052086072842626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/6371052086072842626'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2011/07/new-experiment-language-choices.html' title='New Experiment Language Choices'/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-2114542707721717161</id><published>2010-12-23T13:42:00.001-08:00</published><updated>2010-12-23T13:47:20.118-08:00</updated><title type='text'>My Christmas Wish</title><content type='html'>I wrote this email to my (non-technical) family with the subject, "My Christmas Wish."&lt;br /&gt;&lt;br /&gt;Folks,&lt;br /&gt;&lt;br /&gt;In light of the most recent "Zero Day" security vulnerability in Internet Explorer, I am writing this to ask all of you who still use it to consider switching browsers.   IE is by far the most ubiquitous source of junk on Windows computers outside of unsafe downloads.   Other browsers do much more to protect you.&lt;br /&gt;&lt;br /&gt;So-called "Zero Day" exploits occur on a regular basis and leave you vulnerable to attack for weeks at a time.   For example, the Chinese attacks on Google relied on vulnerabilities in Internet Explorer to steal users' account information. Google now has a policy tightly restricting the use of Windows and IE to only employees who need it for testing purposes.&lt;br /&gt;&lt;br /&gt;You don't have to do much to pick up malware via websites.   There are myriad ways for attackers to deliver malicious code that you will never see, and often your virus scanners cannot detect either.&lt;br /&gt;&lt;br /&gt;http://isc.sans.edu/diary.html?storyid=10132&lt;br /&gt;http://www.microsoft.com/technet/security/advisory/2488013.mspx&lt;br /&gt;&lt;br /&gt;It's incredibly easy to avoid the whole mess.   Install another, faster and more secure browser.   Delete the IE icon from your desktop and quickstart bars, especially if others use your computer.   Set the other browser of your choice as the default.   Here's a list of modern, secure browsers, in my personal order of preference.&lt;br /&gt;&lt;br /&gt;http://www.google.com/chrome&lt;br /&gt;http://www.mozilla.com/en-US/firefox/&lt;br /&gt;http://www.opera.com/&lt;br /&gt;http://www.apple.com/safari/&lt;br /&gt;&lt;br /&gt;If you can't see yourself using another browser, at least use Chrome for your sensitive data and IE for everything else.  That way at least your bank accounts and health records will be slightly harder for attackers to steal.&lt;br /&gt;&lt;br /&gt;Lastly, if you haven't done it in a while, check for updates on the other programs you use regularly, especially instant messaging like Skype, AOL, MSN, and Yahoo!.  Many programs have an automatic update feature under the "Help" menu that will automatically do all the dirty work.&lt;br /&gt;&lt;br /&gt;-Al&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-2114542707721717161?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/2114542707721717161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=2114542707721717161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/2114542707721717161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/2114542707721717161'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2010/12/my-christmas-wish.html' title='My Christmas Wish'/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-8748345229593378057</id><published>2010-09-05T21:49:00.000-07:00</published><updated>2010-09-05T22:44:22.131-07:00</updated><title type='text'>Ride Report 2010-09-05</title><content type='html'>I recently started commuting to work on my bicycle.  I recently hit 230lbs., which I've always kept in my head as my maximum weight I'll let myself get to.   The weight problem leaves me with a conundrum.   I love eating and I hate exercising.   Fortunately, I've always enjoyed bicycling, so the answer was to start converting my &lt;a href="http://tobert.org/my-29er.html"&gt;2009 Marin Alpine Trail 29er&lt;/a&gt; to a commuter and combine exercise with my commute.  Riding a bicycle to work only takes me an extra 15 minutes if traffic is bad, giving me 1.5hrs of exercise every day with only a half hour added to my commute.  That's not mentioning the reduced road rage, gas, mileage on my car, and starting my day energized.&lt;br /&gt;&lt;br /&gt;I've ridden into work about 10 times now.  It's about 10 miles each way depending on my route, which I think is in the sweet spot of, "far enough to make it worth getting smelly and still under an hour commute."&lt;br /&gt;&lt;br /&gt;&lt;a href="http://maps.google.com/maps?f=d&amp;source=s_d&amp;saddr=Meridian+Ave&amp;daddr=37.300342,-121.9135947+to:37.3107,-121.92165+to:37.311608,-121.9232834+to:37.322052,-121.9238063+to:37.33122,-121.92076+to:37.3377005,-121.943437+to:37.36394,-121.96795+to:95054&amp;hl=en&amp;geocode=FWgROQIdlr-7-A%3BFXYoOQIdBr-7-ClTd2wuuzSOgDHBio701dsO9A%3BFexQOQIdjp-7-CmP_p0rS8uPgDF-DNswOZP5XA%3BFXhUOQIdLZm7-CkVioyMSsuPgDGT8ytqG8JCtg%3BFUR9OQIdIpe7-CkNEdecR8uPgDHxEGNKA-a24w%3BFRShOQIdCKO7-CmVRZNsasuPgDGoCIx3E1eUoA%3BFWS6OQIdc0q7-Ck1-hXjA8uPgDHUN8tQZo7U5Q%3BFeQgOgIdsuq6-Cm5cKfZPMqPgDFaCfMd44GpTQ%3BFUyoOgIdqvi6-CkTK0sevsmPgDG3IwGPFlVbjQ&amp;mra=dvme&amp;mrcr=0&amp;mrsp=5&amp;sz=14&amp;via=1,2,3,4,5,6,7&amp;dirflg=b&amp;sll=37.326762,-121.935368&amp;sspn=0.055557,0.132093&amp;ie=UTF8&amp;ll=37.333723,-121.936226&amp;spn=0.055552,0.132093&amp;t=h&amp;z=14&amp;lci=bike"&gt;Latest Work Route&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Since tomorrow is a holiday and I wanted to check out some panniers at REI, I decided to ride so I could keep my body guessing.  &lt;a href="http://maps.google.com/maps?f=d&amp;source=s_d&amp;saddr=meridian+avenue+at+hamilton&amp;daddr=Hamilton+Ave+to:Leigh+Ave+to:37.287916,-121.945324+to:400+El+Paseo+De+Saratoga,+San+Jose,+CA+95130+(REI+-+Recreational+Equipment+Inc.)+to:Unknown+road+to:Los+Gatos+Creek+Trail&amp;hl=en&amp;geocode=FWwROQIdAr-7-CnRLypMvTSOgDHTkP0okSSR2A%3BFS0ROQIdoaK7-A%3BFe4jOQIdkZu7-A%3B%3BFcr7OAId8Yy6-CHxPiCxtFKs_w%3BFS_sOAIdkle7-A%3BFZ17OAIdSgK7-A&amp;mra=dvme&amp;mrcr=0&amp;mrsp=3&amp;sz=14&amp;via=1,2,3,5&amp;dirflg=b&amp;sll=37.281292,-121.958199&amp;sspn=0.055591,0.132093&amp;ie=UTF8&amp;t=h&amp;z=14&amp;lci=bike"&gt;Route&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The ride went fine and I felt pretty good the whole time.  It was really nice to be able to wear my camelback (Costco version) and stay hydrated without dinking with a water bottle.   I picked up some new &lt;a href="http://www.rei.com/product/768219"&gt;grips&lt;/a&gt; and a pack of shot bloks.  I looked at the Ortlieb panniers which look very nice, but are way too expensive for my current level of commitment.   The laptop bag alone was something like $150.   I might go after one later after I've totally adapted to bicycle commuting, but I'm not spending $300 on bags until I'm sure I'll use them for a 1000+ miles.&lt;br /&gt;&lt;br /&gt;Defeated, I rode home and browsed around the web looking at what people are doing with custom mods.    There's some really creative stuff out there, most interestingly, using &lt;a href="http://www.instructables.com/id/Ammo-boxes-for-Panniers/step5/Load-them-up/"&gt;plastic ammo cans&lt;/a&gt;.   I drove over to a &lt;a href="http://www.scsurplus.com/"&gt;Stevens Creek Surplus&lt;/a&gt;, but all they had were the classic steel cans (though they had an awesome camping section).  On the way home I thought I'd stop at Home Depot and see if they had anything interesting.    &lt;a href="http://www.homedepot.com/webapp/wcs/stores/servlet/ProductDisplay?storeId=10051&amp;productId=202017995&amp;langId=-1&amp;catalogId=10053&amp;ci_sku=202017995"&gt;They did.&lt;/a&gt;  I bought two "Husky 16 in. Hang-Up Tool Bag", some velcro straps, and a two packs of&lt;a href="http://www.homedepot.com/h_d1/N-5yc1vZ1xgl/R-202017297/h_d2/ProductDisplay?langId=-1&amp;storeId=10051&amp;catalogId=10053"&gt; flat bungee cords&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Tomorrow, I'll figure out how to mount the bags to my satisfaction, or return them and go for the plain &lt;a href="http://www.mcmelectronics.com/product/22-11100&amp;CAWELAID=462137762"&gt;aluminum briefcase&lt;/a&gt; (can't find HD link).&lt;br /&gt;&lt;br /&gt;Now, I'm off to google some ideas for pannier hooks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-8748345229593378057?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/8748345229593378057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=8748345229593378057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/8748345229593378057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/8748345229593378057'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2010/09/ride-report-2010-09-05.html' title='Ride Report 2010-09-05'/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-8976904656947506212</id><published>2010-08-12T12:12:00.000-07:00</published><updated>2010-08-12T12:18:23.763-07:00</updated><title type='text'>Blocking SSH Attacks</title><content type='html'>I run this on almost any server that isn't behind another firewall blocking $SSH_PORT.   I got this from somewhere else, but it was a long time ago and I don't remember the source anymore.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;SSH_PORT=22  # I think ssh on !22 is silly, but to each their own&lt;br /&gt;TRUSTED_SUBNET_OR_HOST=mybox.homeip.com # or a subnet you trust&lt;br /&gt;&lt;br /&gt;iptables -A ssh_drop -j DROP -m comment --comment "SSH attack drop"&lt;br /&gt;iptables -A INPUT  -p tcp -m tcp -s $TRUSTED_SUBNET_OR_HOST --dport $SSH_PORT  -m state --state NEW -j ACCEPT&lt;br /&gt;iptables -A INPUT -p tcp -m state --state NEW --dport $SSH_PORT -m recent --name sshattack --set&lt;br /&gt;iptables -A INPUT -p tcp --dport $SSH_PORT -m state --state NEW -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j LOG --log-prefix 'SSH Attack DROP: '&lt;br /&gt;iptables -A INPUT -p tcp --dport $SSH_PORT -m state --state NEW -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j ssh_drop&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Basically, this counts connection attempts on port 22 and starts dropping attempts after the third one (obviously adjust --hitcount to taste).   It times out after 60 seconds, so I don't accidentally lock myself out.    I see a few attacks a day start then go away after the drop.  I've never seen one come back after the window reopens (unless it was myself trying to "attack").  It's also 0 maintenance unlike the userspace solutions.   A lot of people like tcp wrappers, but that still lets attackers hammer the port.   Using both works nicely.&lt;br /&gt;&lt;br /&gt;This and DenyHosts don't help with distributed attacks, which is why I'm moving towards key-only logins and maybe picking up some YubiKeys. (yubico.com)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-8976904656947506212?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/8976904656947506212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=8976904656947506212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/8976904656947506212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/8976904656947506212'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2010/08/blocking-ssh-attacks.html' title='Blocking SSH Attacks'/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-4573875330328865780</id><published>2008-04-06T11:50:00.000-07:00</published><updated>2008-04-07T11:52:34.290-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redhat'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='netapp'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='nfs'/><category scheme='http://www.blogger.com/atom/ns#' term='xen'/><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><category scheme='http://www.blogger.com/atom/ns#' term='kvm'/><title type='text'>Virtualization Madness</title><content type='html'>I now have all of my hardware for the virtualization project I've been working on and have been doing final testing and setup configuration lately.  I've had the awesome opportunity to really torture the VM setup on a test cluster in the lab.   I started out with testing storage solutions on a 10x10 (physical x virtual) cluster of Dell 1950's with 8GB of RAM and two Core 2 Duo's.   I still have the demo NetApp 3070 that proved out NFS storage for VM images, and now I have all of the upgrades in the 1950's to push them to 32GB of RAM and hardware RAID controllers.    I've learned quite a bit in the process of all of this testing and thought I'd share some tips here.&lt;br /&gt;&lt;br /&gt;Many of the VM's I'll be running in production will come from a P2V migration, but because my predecessors were smart enough to concentrate all of our custom content under a single mountpoint,   most of the systems can be migrated to new OS images (and thus upgrade ancient OS's in the process).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip #1&lt;/span&gt;: when building servers (physical or virtual), ignore the &lt;span style="font-size:85%;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard"&gt;FHS&lt;/a&gt;&lt;/span&gt; for your local content.  The common place these days is /srv, so put anything that does not come in a distribution package here. Backups are as easy as "&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;tar -czvf /someplace/`hostname -s`-srv.tar.gz /srv&lt;/span&gt;&lt;/span&gt;".  Migrations and cluster scaleouts similarly easy: "&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;rsync -ave ssh /srv/./ username@newbox:/srv&lt;/span&gt;&lt;/span&gt;".   When a package really wants you to conform to FHS, work around it with symlinks.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Edit:&lt;/span&gt; &lt;span style="font-style: italic;"&gt;it was pointed out to me that FHS actually recommends /srv.  To be honest, I haven't looked at it in years.    In any case, my point remains valid, since most distros interpret FHS in their own way and still put things like web content and database files under /var.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ok, so that wasn't so much about virtualization.   A somewhat little known fact is that almost all of the virtualization players out there, be it Xen, KVM, VMWare, or even Microsoft, is that the VM's themselves are not actually that hard to migrate between them.   You only have to figure it out once then, especially for Linux VM's, you can script it and do them in bulk.   Probably the two most valuable tools for this are kpartx and qemu-img.    Xen doesn't seem to install qemu-img with its Qemu stuff, but it's well-worth keeping around on your dom0's.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip #2&lt;/span&gt;: learn to use kpartx and qemu-img, even if you're using LVM or individual LUN's for your VM's.    qemu-img can read and write raw, vmdisk, qcow2, and a few other formats and is pretty deft at enabling &lt;span style="font-size:85%;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Sparse_file"&gt;sparse file&lt;/a&gt;&lt;/span&gt; support, which is pretty nifty.   For instance, if you download a VMWare appliance and want to run it under Xen, it's trivial to convert to a raw image with "&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;qemu-img convert vmappliance.img -O raw vmappliance-raw.img&lt;/span&gt;&lt;/span&gt;".    kpartx is nice because it will map out partitions within an image or LVM volume using device mapper.    So once that image is created, do "&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;kpartx -va vmappliance-raw.img&lt;/span&gt;&lt;/span&gt;" then you can mount the partitions without messing around with weird offset options to losetup.&lt;br /&gt;&lt;br /&gt;One of the problems I've run into quite a lot over the last couple years' of playing with Xen &amp;amp; co. is that most initramfs scripts output far too fragile and stupid environments.     With the availability of busybox and gobs of RAM these days, there is absolutely no reason I should have to screw around for hours rebooting a box because these filesystems are not smart enough to drop into a debug shell when things go wrong.     I have published a simplistic script that I occasionally use to build initrd's at &lt;span style="font-size:85%;"&gt;&lt;a href="http://tobert.org/unix/index.html"&gt;http://tobert.org/unix/index.html&lt;/a&gt;&lt;/span&gt;.   But often, for support reasons, it's not practical to run a custom generation script.   With the 2.6 Linux kernel, it's actually way easier to edit these buggers than it was back in the day, since now they're simply compressed cpio archives.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip #3&lt;/span&gt;: learn how to hack initrd's and get those years of your life back.   Here's how to tear it apart: &lt;pre style="font-family: courier new; font-size: 85%;"&gt;mkdir /tmp/initrd&lt;br /&gt;cd /tmp/initrd&lt;br /&gt;gunzip -c /boot/initrd-`uname -r`.img |cpio -ivdm&lt;/pre&gt;The first thing to look at is the "init" script.   For instance, when CLVM locking is stopping you from getting to single-user, simply crack that file open and comment out all the LVM initialization code.    It's mostly a simple shell script.   Another trick is to copy busybox into the bin directory, symlink lash, then add a "/bin/lash -i" to the init script right before root gets mounted.    To put everything together again, you have to use the "newc" cpio format, so the command is (from the top of the initrd):&lt;br /&gt;&lt;pre style="font-family: courier new; font-size: 85%;"&gt;find . |cpio -oH newc |gzip -c &gt; /boot/initrd-`uname -r`.img&lt;/pre&gt; To save yourself a lot of frustration, I highly recommend playing around with initramfs hacking in VM's first, since the hack/reboot/fail/reboot/hack/reboot cycle is so much faster.&lt;br /&gt;&lt;br /&gt;Xen is pretty neat and it's nice how it's integrated with EL5 so I can just use yum to keep up to date.   While I'm deploying Xen for my production stuff in the coming weeks, I'm watching closely for KVM to reach a level of maturity where I can start migrating over to it.   I expect this to happen this year, but I won't go anywhere near it for production until it starts surviving my torture tests (another post, another day).  For some more eloquent writing about why KVM can be better, check out &lt;span style="font-size:85%;"&gt;&lt;a href="http://udrepper.livejournal.com/"&gt;Ulrich Drepper's LiveJournal&lt;/a&gt;&lt;/span&gt;, specifically &lt;span style="font-size:85%;"&gt;&lt;a href="http://udrepper.livejournal.com/15795.html"&gt;here&lt;/a&gt;&lt;/span&gt; and &lt;span style="font-size:85%;"&gt;&lt;a href="http://udrepper.livejournal.com/17577.html"&gt;here&lt;/a&gt;&lt;/span&gt;.   So, what can you do to keep your VM's easy to migrate when something better comes along?   Tip #1 takes you a long ways, since even if you have to reinstall the OS, it's a pretty trivial operation (especially if you use &lt;span style="font-size:85%;"&gt;&lt;a href="http://cobbler.et.redhat.com/"&gt;Cobbler&lt;/a&gt;&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip #4&lt;/span&gt;: don't tie your VM's too tightly to one solution.    Obviously, the first step is to use &lt;span style="font-size:85%;"&gt;&lt;a href="http://libvirt.org/"&gt;libvirt&lt;/a&gt;&lt;/span&gt; rather than XenAPI.   Once I figured out all of the bits &amp;amp; pieces, it only took about an hour - mostly waiting for the damned computers - to get all my test VM's converted from Xen to KVM paravirt.    kpartx was invaluable since it let me mount the VM filesystems from the host.   All of my VM's are on NetApp NFS, so a simple shell loop made quick work of mounting all 100 filesystems in my test cluster.&lt;pre style="font-family: courier new; font-size: 85%;"&gt;cd /net/vm-disks&lt;br /&gt;for vmdisk in *.img&lt;br /&gt;do&lt;br /&gt; mkdir -p /mnt/$vmdisk&lt;br /&gt; # run kpartx and grab partition #1 all at once&lt;br /&gt; DEVICE=`kpartx -v -a /net/vm-disks/$vmdisk |head -n 1 \&lt;br /&gt;          |awk '{print $3}'`&lt;br /&gt; mount /dev/mapper/$DEV /mnt/$vmdisk&lt;br /&gt;done&lt;/pre&gt;Once they're all mounted, it's pretty easy to loop through all of them and make a change, such as copy in a new /etc/modprobe.conf or an updated initramfs with virtio network/block drivers.  I'm especially excited about KVM virtio-net with NFS root, since virtio-net is shaping up to be quite a bit faster than xennet.&lt;pre style="font-family: courier new; font-size: 85%;"&gt;# install a normal kernel&lt;br /&gt;cd /mnt&lt;br /&gt;for vmdisk in *.img&lt;br /&gt;do&lt;br /&gt; chroot /mnt/$vmdisk yum -y install kernel&lt;br /&gt;done&lt;br /&gt;# and so on ...&lt;/pre&gt;You might even get away with some of these tricks on Windows VM's using ntfstools and ntfs-3g.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip #5&lt;/span&gt;: when searching for best practices and tuning information, there is a lot of excellent documentation available for us Xen and KVM users in the form of VMWare documentation.  For example, I've had really good luck with reading NetApp's docs for NetApp + VMWare (the block alignment and Oracle RAC on NFS docs are particularly good).    When vendors say "we really don't do much with Xen," I ask them for VMWare whitepapers instead.    Most of the concepts are the same regardless of the hypervisor, so learn both sets of terminology and make the best of all the great documentation out there.&lt;br /&gt;&lt;br /&gt;As always, remember to make backups ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-4573875330328865780?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/4573875330328865780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=4573875330328865780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/4573875330328865780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/4573875330328865780'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2008/04/virtualization-madness.html' title='Virtualization Madness'/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-525425854696554222</id><published>2007-09-07T08:18:00.001-07:00</published><updated>2007-09-07T13:52:08.760-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redhat'/><category scheme='http://www.blogger.com/atom/ns#' term='vlan'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='802.1q'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='rhel'/><category scheme='http://www.blogger.com/atom/ns#' term='xen'/><category scheme='http://www.blogger.com/atom/ns#' term='bridging'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Xen Networking</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;I've been working on evaluating Xen for all the reasons most companies look into virtualization.      One of the most confusing parts of Xen to learn is the way it does networking.   This is because the Xen team has devised a default configuration that is quite flexible, but also takes some time to get used to.   I'm not even going to talk about that, because I think there's  a better way.&lt;br /&gt;&lt;br /&gt;This is a description of how to set up networking for Xen on CentOS 5.0 using 802.1q VLAN trunking with a bridge on dom0 for each VLAN.   In my setup, eth0 is dedicated to dom0 tasks like live migration, iSCSI, and console access.    eth1 is dedicated as a VLAN trunk.   NO VLAN interfaces are configured with addresses in dom0, which should help reduce security implications.&lt;br /&gt;&lt;br /&gt;Files:&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;/etc/sysconfig/network-scripts/ifcfg-eth0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  DEVICE=eth0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BOOTPROTO=static&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BROADCAST=192.168.1.255&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;HWADDR=00:19:D1:4D:CD:D1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;IPADDR=192.168.1.25&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;NETMASK=255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;NETWORK=192.168.1.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ONBOOT=yes&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/etc/sysconfig/network-scripts/ifcfg-eth1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DEVICE=eth1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;HWADDR=00:19:D1:4D:CD:D2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ONBOOT=yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# note, no address configured&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/etc/sysconfig/network-scripts/ifcfg-eth1.4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DEVICE=eth1.4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BOOTPROTO=static&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ONBOOT=yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;VLAN=yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BRIDGE=br4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# again, no address configured&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;/etc/sysconfig/network-scripts/ifcfg-br4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DEVICE=br4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;TYPE=Bridge&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BOOTPROTO=static&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ONBOOT=yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DELAY=0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;STP=off&lt;/span&gt;&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The files above only demonstrate the standard way to configure 802.1q VLAN's and bridges under modern Redhat-derivative distributions like RHEL, CentOS, and Fedora.  The nice part is, we're almost done.    Only a small change is necessary in Xen, so that it no longer brings up xenbr0.  I don't want to pay for the overhead of networking through a bridge for my iSCSI, even if it is a very small cost.&lt;br /&gt;&lt;br /&gt;Modify &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;/etc/xen/xend-config.sxp&lt;/span&gt;&lt;/span&gt; and change "&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;(network-script ...)&lt;/span&gt;&lt;/span&gt;" to "&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;(network-script /bin/true)&lt;/span&gt;&lt;/span&gt;".    Comment the "&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;(vif-script ...)&lt;/span&gt;&lt;/span&gt;" line(s) out completely.   You don't need them anymore.&lt;br /&gt;&lt;br /&gt;Reboot dom0.&lt;br /&gt;&lt;br /&gt;When the box comes back up, log in and look around at your networking configuration.  Use "&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;ifconfig&lt;/span&gt;&lt;/span&gt;" or "&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;ip link show&lt;/span&gt;&lt;/span&gt;", "&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;brctl&lt;/span&gt;&lt;/span&gt;", and "&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;cat /proc/net/vlan/config&lt;/span&gt;&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;Modify your VM configurations to point at the correct bridges.   Something like the following should work fine.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;pre&gt;    vif = [ 'mac=00:16:3e:01:fb:fe, bridge=br4' ]&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;xend will still create the point-to-point (vif) interfaces and connect them to the bridge for you.   It doesn't need the helper scripts because the bridges are already all set up and ready to have interfaces bound to them.&lt;br /&gt;&lt;br /&gt;This is currently a bit outside the beaten path for Xen netw0rking, so you get to keep all the pieces if it breaks things, has an affair with your refrigerator, or any other such sideeffects.    If you have questions, leave comments on this post and I'll try to answer.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-525425854696554222?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/525425854696554222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=525425854696554222' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/525425854696554222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/525425854696554222'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2007/09/xen-networking.html' title='Xen Networking'/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-9191207155100378425</id><published>2007-05-19T20:30:00.000-07:00</published><updated>2010-02-01T21:38:39.040-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='moving'/><category scheme='http://www.blogger.com/atom/ns#' term='vstrom'/><category scheme='http://www.blogger.com/atom/ns#' term='vehicross'/><category scheme='http://www.blogger.com/atom/ns#' term='v-strom'/><category scheme='http://www.blogger.com/atom/ns#' term='cpan'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='suzuki'/><category scheme='http://www.blogger.com/atom/ns#' term='nagios'/><title type='text'>Moving sucks.</title><content type='html'>Well, I'm all moved in to the apartment in San Diego.      Almost, that is.    My belongings are in the space, but as it goes, it's all still in boxes and it's a daunting task to go through and organize everything.   Most importantly, though, I'm missing my wife and pets.   In both senses of "missing."&lt;br /&gt;&lt;br /&gt;Life the last month has been interesting.    My Vehicross blew up.   I'm in the process of figuring out what to do with it right now and will probably sell it.    It did provide me an excuse to buy a new motorcycle, so I got a brand-new &lt;a href="http://www.suzukicycles.com/Products/DL650K7/Default.aspx"&gt;Suzuki V-Strom 650&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;(a.k.a. the "Wee-Strom").    I enjoyed riding my previous bike, a 1981 Kawasaki 440LTD, but this bike is an absolute dream as far as upgrades go!     So, it is really helping fight off the depression that comes with losing a beloved vehicle.&lt;br /&gt;&lt;br /&gt;My job is awesome and I'm learning a ton about how to work on a massive scale and how the MMO game industry works.     Linux and Perl still shine as the best hammer any guy could have a toolbox full of.    I'm blown away by how cool and accessible everybody is at work.    I'm so used to the extremely conservative atmosphere, that I still have a hard time adjusting to the relaxed environment.&lt;br /&gt;&lt;br /&gt;I'm spending some time reimplementing some tools similar to what I had at my old job because they really did make life better.    One is a nice wrapper around CGI::Application and some of its plugins (like Plugin::TT and Plugin::AutoRunmode) to make writing one-off apps very fast and efficient.    I looked at Catalyst &amp;amp; co. but they're just too darned much infrastructure for the kinds of apps I'm writing.     I also couldn't get a handle on what the future is for Catalyst.   It looks like Maypole is pretty much rolled into Catalyst (I could be wrong, so don't quote me).    I didn't see anything else compelling out there as far as Perl goes.    Django looked good, but I still have a hard time reaching for Python.   It's not my usual language bigotry - it's common sense this time.    I'm so busy already that taking time to learn another language isn't in the cards right now.     I know these things have 20-minute tutorials, but I also have to consider the fact that all the other sysadmins I know, know Perl.      Very few know Python or any other language for that matter.&lt;br /&gt;&lt;br /&gt;In other Perl-related news, I'm looking for somebody to take over maintenance on Nagios::Object on CPAN.    I really enjoyed getting it out there, but it's tough keeping up with the updates to Nagios these days since I don't have any installations that I work on.      Just drop a mail to tobert@gmail.com and we'll talk about it.   There is a queue of updates that I need to get out but haven't had the time to get them all wrapped up and tested so I can make a release.   I guess I'll just have to throw it together and put it out there so people can beat on it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-9191207155100378425?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/9191207155100378425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=9191207155100378425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/9191207155100378425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/9191207155100378425'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2007/05/moving-sucks-can-i-have-amen.html' title='Moving sucks.'/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-6291886152892822302</id><published>2007-04-04T07:18:00.000-07:00</published><updated>2007-04-04T07:23:38.837-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>New Job, New City</title><content type='html'>I've been putting off shutting down tobert.org because I've been really busy with another project: finding a new job.   I applied and interviewed at four well-known technical companies on the west coast and accepted an offer from Sony Online Entertainment on April 2, 2007.&lt;br /&gt;&lt;br /&gt;It was a weird experience for me, having mostly applied for standard corporate jobs in West Michigan in the past.   Actually, I've never had multiple offers before which made the decision process difficult.     Any one of these companies would be awesome to work for.   All of the people were extremely smart and passionate.     I spent the entire weekend driving my wife, family, and my friends crazy talking incessantly about what to do.&lt;br /&gt;&lt;br /&gt;What it came down to was my gut reaction towards the companies and the cities they were in.   A lot of people might think I'm full of it when I say it, but money was not the object.     I didn't take the highest paying job even after rolling in cost of living differences.&lt;br /&gt;&lt;br /&gt;I ended up asking myself some "soft" questions:&lt;br /&gt;- abstract the job from the company and its reputation; do I still like it?&lt;br /&gt;- would I choose the city regardless of job and income?   Would Krissy (my wife)?&lt;br /&gt;- what does the professional and community theatre community look like for Krissy?&lt;br /&gt;- do I like the physical environment (desk/workstation/lighting/dress code/etc.)?&lt;br /&gt;- do I feel comfortable with the political environment?&lt;br /&gt;- is there opportunity to make things better?   Is it cleanup or creation?&lt;br /&gt;- what career options are available in the next 5 years?&lt;br /&gt;&lt;br /&gt;Anyways, I'm not going to mention the names of the other three companies.    I don't want anybody to think they're not awesome companies to work for, because that would be untrue.    I would work at any one of them and it has been both a burden and an honor to choose between them.&lt;br /&gt;&lt;br /&gt;In case you're somebody looking for tips on interviewing, here's the most important and non-obvious-to-me lesson I learned.    Think really hard about whether or not to reveal the names and offers from other companies to your recruiters.     It may mean better offers, it might not.     It can also cause some other side effects that I found less than pleasant, so in the future, I'm going to keep my big mouth shut.     Somebody warned me and they were right, so if you ever read this, you're welcome to your "I told you so."&lt;br /&gt;&lt;br /&gt;Lastly, I have to say goodbye to six years at Priority Health.    They accepted my resignation with dignity and warm wishes, which I truly appreciate.    I will miss my friends there and wish them all the best.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-6291886152892822302?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/6291886152892822302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=6291886152892822302' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/6291886152892822302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/6291886152892822302'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2007/04/new-job-new-city.html' title='New Job, New City'/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-4069618319635996578</id><published>2007-02-26T16:57:00.000-08:00</published><updated>2007-02-26T18:38:05.780-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='first post'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>First Post!</title><content type='html'>Hi, my name is Al Tobey.    For now, go to &lt;a href="http://www.tobert.org"&gt;http://www.tobert.org&lt;/a&gt; to learn the grossly-out-of-date details.&lt;br /&gt;&lt;br /&gt;I'm investigating whether or not I want to move &lt;a href="http://www.tobert.org"&gt;http://www.tobert.org&lt;/a&gt; to Blogger.    I'm doing it to save time/money and to take advantage of integration between the various Google tools, where it exists.   I've also often considered posting more often, which I avoid because my current setup is still a PITA.&lt;br /&gt;&lt;br /&gt;The main snag I'm working on right now is how to post code examples.   So far, it looks like nobody is really doing it well.    Most of the "solutions" I've found involve stuff like &lt;span style="font-family: monospace;"&gt;sed 's/ /\&amp;amp;nbsp;/g'&lt;/span&gt;, which isn't very elegant when HTML has tags specifically for this kind of thing.&lt;br /&gt;&lt;br /&gt;Previously, I defaulted to using the &amp;lt;pre&amp;gt; tag for code examples.   So far, I've tried &amp;lt;blockquote&amp;gt; and &amp;lt;p style="white-space: pre;"&amp;gt; (which I learned about at &lt;a href="http://www.htmldog.com/ptg/archives/000077.php"&gt;http://www.htmldog.com/ptg/archives/000077.php&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Anyways, I'm going to keep editing this post adding copies of the below code until it works.&lt;br /&gt;&lt;br /&gt;Using &amp;lt;pre&amp;gt;:&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/ksh&lt;br /&gt;&lt;br /&gt;for file in *.html&lt;br /&gt;do&lt;br /&gt;    # this should be indented by 4 spaces&lt;br /&gt;    sed 's/ /\&amp;amp;nbsp;/g' &lt; "$file" &gt; "$file.new"&lt;br /&gt;    mv "$file.new" "$file"&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Problem solved:&lt;/strong&gt;:   It appears that &amp;lt;pre&amp;gt; is ignored in the preview you get in the edit posts view, but not on the published page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-4069618319635996578?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/4069618319635996578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=4069618319635996578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/4069618319635996578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/4069618319635996578'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2007/02/hi-my-name-is-al-tobey.html' title='First Post!'/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-7825359361182120944</id><published>2005-10-12T19:30:00.000-07:00</published><updated>2007-02-26T18:34:22.052-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='64bit'/><category scheme='http://www.blogger.com/atom/ns#' term='parisc'/><category scheme='http://www.blogger.com/atom/ns#' term='hp-ux'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='itanium'/><title type='text'>64-bit perl on HP-UX (PARISC or Itanium)</title><content type='html'>Here's something that took me a few hours to get dialed in.    This is all set for linking DBD::Oracle and DBD::Sybase to their respective 64-bit client libraries without hassle.   I'm assuming the HP ANSI C compiler is installed.   I never even tried with gcc due to some custom extensions that require the HP compiler.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;CC=/opt/ansic/bin/cc \&lt;br /&gt;CXX=/opt/aCC/bin/aCC \&lt;br /&gt;CFLAGS="+DD64 +Z -I/opt/perl-5.8/local/include" \&lt;br /&gt;CXXFLAGS=$CFLAGS \&lt;br /&gt;LDFLAGS="-L/opt/perl-5.8/local/lib -L/usr/lib/hpux64" \&lt;br /&gt;PATH=/opt/ansic/bin:/usr/ccs/bin:/opt/perl-5.8/local/bin:/opt/perl-5.8/bin:/usr/bin:/usr/local/bin:/bin:/sbin \&lt;br /&gt;PERL=/opt/perl-5.8/bin/perl \ &lt;br /&gt;MAKE=/usr/local/bin/gmake \&lt;br /&gt;./Configure -der \&lt;br /&gt;            -A prepend:libswanted='cl pthread ' \&lt;br /&gt;            -Dprefix=/opt/perl-5.8 \&lt;br /&gt;            -Dinstallprefix=/opt/perl-5.8 \&lt;br /&gt;            -Duselargefiles \&lt;br /&gt;            -Dusethreads \&lt;br /&gt;            -Duse64bitall \&lt;br /&gt;            -Dyacc='/usr/local/bin/bison -y' \&lt;br /&gt;            -Uusemallocwrap \&lt;br /&gt;            -Dcf_by="Al Tobey" \&lt;br /&gt;            -Dperladmin='tobert@gmail.com' \&lt;br /&gt;            -Dcf_email='tobert@gmail.com'&lt;br /&gt;&lt;br /&gt;make&lt;br /&gt;make test&lt;br /&gt;make install&lt;br /&gt;&lt;br /&gt;(cd /usr/include; /opt/perl-5.8/bin/h2ph -r -l .)&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-7825359361182120944?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/7825359361182120944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=7825359361182120944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/7825359361182120944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/7825359361182120944'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2007/02/64-bit-perl-on-hp-ux-parisc-or-itanium.html' title='64-bit perl on HP-UX (PARISC or Itanium)'/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-8855250999216277348</id><published>2005-09-20T16:00:00.000-07:00</published><updated>2007-02-26T18:25:15.504-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='itanic'/><category scheme='http://www.blogger.com/atom/ns#' term='ksh'/><category scheme='http://www.blogger.com/atom/ns#' term='pdksh'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='hp-ux'/><category scheme='http://www.blogger.com/atom/ns#' term='itanium'/><category scheme='http://www.blogger.com/atom/ns#' term='auditing'/><title type='text'></title><content type='html'>pdksh 5.2.14 on HP-UX 11.23 Itanium: If you grab the source for pdksh and try to compile it on Itanium HP-UX, it will tend to dump core with SIGBUS. SIGBUS is a signal sent to processes when they access unaligned memory, usually in C unions or structs. pdksh has a union in it that ends up unaligned on Itanium, which is very particular about such things. HP-UX is also fussy.&lt;br /&gt;&lt;br /&gt;Go into the source tree and open up "alloc.c" in your favorite editor. Search for "union Cell", which is the union declaration that is causing the trouble. Change the last member "double djunk; /* alignement */" to "long double djunk; /* alignemnt */." On Itanic, long double is 128 bits and double is 64 bits. Pushing the union out to 128 bits makes it align right all the time, even though it does eat up a bit more memory now.&lt;br /&gt;&lt;br /&gt;I also have a patch at work that logs all commands run by root to syslog with the username of the owner of the terminal device.   It's a fancy way to avoid typing "sudo" in front of everything while still logging every command for auditing purposes.    Unfortunately, I probably can't post that patch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-8855250999216277348?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/8855250999216277348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=8855250999216277348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/8855250999216277348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/8855250999216277348'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2005/09/pdksh-5.html' title=''/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-8822776456579545627</id><published>2004-06-30T18:00:00.000-07:00</published><updated>2007-02-26T18:50:30.850-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='desktop environments'/><category scheme='http://www.blogger.com/atom/ns#' term='hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='backgrounds'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><title type='text'>root-tail on nautilus/kde/xfdesktop</title><content type='html'>&lt;span class="boldunder"&gt;&lt;/span&gt;I hacked &lt;a href="http://www.goof.com/pcg/marc/root-tail.html"&gt;root-tail&lt;/a&gt; to work with Nautilus, KDE, and hopefully XFCE4's xfdesktop.  I took the toon_root.c file from &lt;a href="http://xpenguins.seul.org/"&gt;xpenguins&lt;/a&gt; and :r'd it into root-tail.c.  A few modifications later and I had a working root-tail for nautilus.  &lt;br /&gt;&lt;br /&gt;Download the tarball: &lt;a href="http://tobert.googlepages.com/root-tail-xpenguins.tar.gz"&gt;root-tail-xpenguins.tar.gz&lt;/a&gt; or just &lt;a href="http://tobert.googlepages.com/root-tail.c"&gt;root-tail.c&lt;/a&gt;. Here it is in HTML: &lt;a href="http://tobert.googlepages.com/root-tail.c.html"&gt;root-tail.c.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tobert.googlepages.com/screenshot-gnome-root-tail.jpg"&gt;Screenshot (40k)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-8822776456579545627?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/8822776456579545627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=8822776456579545627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/8822776456579545627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/8822776456579545627'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2004/06/i-hacked-root-tail-to-work-with.html' title='root-tail on nautilus/kde/xfdesktop'/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-1994120701899671186</id><published>2004-06-30T12:00:00.000-07:00</published><updated>2007-02-26T18:13:37.773-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='snmp'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='nagios'/><title type='text'></title><content type='html'>&lt;span class="boldunder"&gt;&lt;/span&gt;I wrote a couple SNMP plugins for Nagios to check disk space and running processes. They are now in the contrib directory in the &lt;a href="http://nagiosplug.sourceforge.net/"&gt;Nagios Plugins&lt;/a&gt; package.&lt;br /&gt;They both should work on Windows 2000 (and up) and Novell. HP-UX, unfortunately, does not ship with the Host-Resource MIB by default, so I'm using the Net-SNMP daemon at work. It's a little flakey, but gets the job done. &lt;a href="http://www.snmpresearch.com/"&gt;SNMP Research&lt;/a&gt; provides an extended SNMP daemon for HP-UX and other operating systems that includes the host resource MIB.&lt;br /&gt;&lt;br /&gt;I'm also author and maintainer of the &lt;a href="http://search.cpan.org/%7Etobeya/Nagios-Object/"&gt;Nagios::Object&lt;/a&gt; and &lt;a href="http://search.cpan.org/%7Etobeya/Nagios-Cmd/"&gt;Nagios::Cmd&lt;/a&gt; modules on &lt;a href="http://search.cpan.org/"&gt;CPAN&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-1994120701899671186?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/1994120701899671186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/1994120701899671186'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2004/06/i-wrote-couple-snmp-plugins-for-nagios.html' title=''/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-1275442728448408829.post-7128078639260432826</id><published>2003-12-02T09:00:00.000-08:00</published><updated>2007-02-26T18:21:36.556-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redhat'/><category scheme='http://www.blogger.com/atom/ns#' term='shell scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='lvm'/><title type='text'></title><content type='html'>Here is a drop-in replacement for Rajeev Kumar's bootprofile, written in (bourne|korn|posix) shell. Everything required [on my rh9/rawhide laptop] is in /bin or /sbin. It's nice when you like to put everything on separate LVM volumes like I do. Here it is: &lt;a href="http://tobert.googlepages.com/bootprofile.sh"&gt;bootprofile.sh&lt;/a&gt;. View now: &lt;a href="http://tobert.googlepages.com/bootprofile.sh.txt"&gt;bootprofile.sh.txt&lt;/a&gt;. Last update: December 02, 2003.&lt;br /&gt;&lt;a href="http://tobert.googlepages.com/bootprofile-sc.jpg"&gt;Screenshot (46k)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1275442728448408829-7128078639260432826?l=albertptobey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albertptobey.blogspot.com/feeds/7128078639260432826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1275442728448408829&amp;postID=7128078639260432826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/7128078639260432826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1275442728448408829/posts/default/7128078639260432826'/><link rel='alternate' type='text/html' href='http://albertptobey.blogspot.com/2007/02/here-is-drop-in-replacement-for-rajeev.html' title=''/><author><name>Albert P. Tobey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
