tag:blogger.com,1999:blog-8733743911345932572024-03-10T14:57:52.131-04:00John WesorickJohn Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.comBlogger22125tag:blogger.com,1999:blog-873374391134593257.post-50318644406065013902014-09-16T12:14:00.001-04:002021-10-21T21:46:45.087-04:00Homemade Munchkin Hero-MetersEver wanted a nice, compact way to keep track of your level, combat strength and sex in Munchkin? Well now you can. Over the last few weeks I've been tweaking a design I've made to do just that. Print off your own and try them out!<br />
<div>
<a name='more'></a>Here's what I came up with:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXoyIlfjF9BMo-rlRI8t3LuFsG-9Bz5lLW_D75P178UEaeuSRIbeItixccByamS8dbUyD3vHcGNkXQZ0rgWcGPh79o9RHhWyrJj6wniZqmCw8An4vGPsXua5b4SV7ml1pWGu5pxrArUA/s1600/Hero-meter_original_assembled.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXoyIlfjF9BMo-rlRI8t3LuFsG-9Bz5lLW_D75P178UEaeuSRIbeItixccByamS8dbUyD3vHcGNkXQZ0rgWcGPh79o9RHhWyrJj6wniZqmCw8An4vGPsXua5b4SV7ml1pWGu5pxrArUA/s1600/Hero-meter_original_assembled.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
It was obviously influenced by the official <a href="http://www.worldofmunchkin.com/kill-o-meter/">Munchkin Kill-O-Meter</a>, but I think it has some nice improvements:</div>
<div>
<ul>
<li>It has the same dimensions as the cards. This makes it easy to store. If you have some way to store your cards, this will fit with them well.</li>
<li>It has a separate dial for level. Now you don't need to use dice, bottle-caps, a board or whatever you were using before to track your level (although you obviously still can).</li>
<li>They are reversible. Each Hero-Meter has male on one side, and female on the other. Makes it easy to remember if you changed sexes or if you just want to use a meter with your appropriate sex.</li>
<li>They're free! Sort of. You still have to pay for the cardstock, fasteners, glue and ink/toner for your printer.</li>
</ul>
</div>
<div>
<br /></div>
<div>
Originally, I was going to just make the base fantasy-style themed ones. Then I figured I should make ones themed for the few sets my friends and I owned. After getting into the groove, I figured I might as well just make a different set for every Munchkin! Then I had trouble finding quality scans for graphics I needed for the rest and gave up.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIWE2kHlbq9DrJPNnH8iASOORIbKSA09uS1TlHvPDZsdL0mEdk2uwN99yzEjfZpGatCNWWIkVhuF4VMqdbn78VrfESEJ6-OPn_WVMhq0hXKdbUL7mqB6PGUwAkNCD6JjA4M3KR9C7s0g/s1600/hero-meter+examples+1.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIWE2kHlbq9DrJPNnH8iASOORIbKSA09uS1TlHvPDZsdL0mEdk2uwN99yzEjfZpGatCNWWIkVhuF4VMqdbn78VrfESEJ6-OPn_WVMhq0hXKdbUL7mqB6PGUwAkNCD6JjA4M3KR9C7s0g/s1600/hero-meter+examples+1.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Star Munchkin, Munchkin Adventure Time and Munchkin Zombies</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD-ZR4DlFi5nBC-PUq2ZqNyhLVHSG4Xot4uojULo1aFXmkoejbIO_0Gt-lO27VZYKUW7Ti6rNTGFZdRNSAktogqw9XSiH76ENWQvyuNS_Yz_N5gqZk0xNJiQsc-SPGXlqgYzkl5g1x9Q/s1600/monster-meter+examples.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD-ZR4DlFi5nBC-PUq2ZqNyhLVHSG4Xot4uojULo1aFXmkoejbIO_0Gt-lO27VZYKUW7Ti6rNTGFZdRNSAktogqw9XSiH76ENWQvyuNS_Yz_N5gqZk0xNJiQsc-SPGXlqgYzkl5g1x9Q/s1600/monster-meter+examples.jpg" width="272" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Cthulhu Monster-Meters. The bottom one used brads. Looks good from this side, but the other side doesn't look as nice as using the eyelets and washers.</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
<br /></div>
<div>
How to make them:</div>
<div>
<br /></div>
<div>
Tools Needed:</div>
<div>
<ul>
<li>scissors</li>
<li>cardstock paper</li>
<li>glue - I used Elmer's Woodmax glue, but that's probably overkill. It just happened to be what I had around. Glue sticks did not work for me though. Too imprecise.</li>
<li>sharp knife - Preferably some sort of hobby knife, but I ended up using a small pocket knife. It just needs to be able to cut through cardstock with some precision.</li>
<li>bottle cap</li>
<li>Q-Tips. The <a href="http://www.amazon.com/Q-Tips-Cotton-Swabs-Precision-Count/dp/B005XIM6J2">pointy precision ones</a> work best. </li>
<li>Kleenex/Paper Towel, etc. - You just need something to wipe glue off</li>
</ul>
<div>
There are two ways to fasten the dials so that they spin. Brads or eyelets with washers. For the economical, just use brads. I went the more polished and probably more durable way of using eyelets with washers. This requires a special tool. After doing it both ways, I kind of wish I wouldn't have spent the money on the tool, as the brads work pretty well. They do look a lot nicer using the eyelets with washers though.</div>
</div>
<div>
<ul>
<li><a href="http://www.amazon.com/Eyelet-Outlet-Round-Brads-Black/dp/B00DV8XQD6">4mm brads</a></li>
<li>1 finishing nail, or thumbtack - Just something to poke a hole through a few layers of cardstock.</li>
</ul>
</div>
<div>
or</div>
<div>
<ul>
<li><a href="http://www.amazon.com/We-Memory-Keepers-Eyelet-Handle/dp/B001EWPYXG">Crop-a-dile Tool</a></li>
<li><a href="http://www.amazon.com/Eyelet-Washer-Black-60-Pieces/dp/B00CEL2ATC">Eyelets and Washers</a> - I found these cheaper at a craft store, but this is what you are looking for.</li>
</ul>
</div>
<div>
Basic Steps:</div>
<div>
<ol>
<li>Find and download the set you want. Each PDF comes with 8 Hero-Meters for players (each with a different color) and 4 Monster-Meters for monsters.</li>
<li>Print them on cardstock.</li>
<li>Cut out all the dials.</li>
<li>Glue all the dials together. For each of the combat strength dials, glue a left and right dial together, so one side is left, and one side is right. The level dials obviosuly just glue together. Be very careful gluing. You really just need a very thin coating. I would fill the bottom of a bottle-cap with glue, and then paint it on with a Q-Tip.</li>
<li>Once you have a dial glued down, take a Kleenex, fold it in half and press hard on the edge of the dial, going around it and pulling towards the outer edge. This is just to make sure we get any excess glue out.</li>
<li>Press really hard around the edge to make sure they stick well.</li>
<li>Cut out the outer edges of the Hero-Meter. Do not cut out the parts that say cut yet! It is much easier if you cut the parts that say cut out later, and they match up better then too.</li>
<li>Fold the Hero-Meter along the bold fold lines, with all flaps going on the inside of the Hero-Meter. To get nice crisp folds, I've found it helpful to score the lines with the back of a knife. Press just enough to make an indentation and the fold will want to follow the line.</li>
<li>Now with the Hero-Meter folded, cut out the visible parts that say cut. This will ensure all cuts are lined up on both sides of the Hero-Meter. Use a hobby knife to cut out the centers of the dial viewing windows for the combat strength dials. All the other cuts can be made with scissors.</li>
</ol>
<div>
Adding the dials:</div>
<div>
If you use the brads or eyelets and washers will determine how you attach the dials to the Hero-Meter. </div>
<div>
<br /></div>
<div>
Brads:</div>
<div>
<ol>
<li>Punch a hole in each of the dials with your nail/thumbtack on the red dot. Do the same to the folded Hero-Meter. </li>
<li>Line up the holes on the level meter dial with the hole you made in the Hero-Meter for the dial and push the brad through. </li>
<li>On the back, separate the brad halves and push them down to lock it into place.</li>
<li>Do the same for the combat dials, making sure that the dials are underneath all of the glue flaps, and that you have the correct side facing up.</li>
</ol>
<div>
Eyelets and Washers:</div>
</div>
</div>
<div>
<ol>
<li>The Crop-A-Dile has two hole punches on it, besides for the eyelet fastener. Use the larger of the two hole punches, and punch a hole with the red dot in the center on all the dials, and the folded hero meter. </li>
<li>Line up the holes on the level meter dial with the hole you made in the Hero-Meter for the dial and push the eyelet through. </li>
<li>Place the washer on the opposite side of the eyelet and press down with the Crop-A-Dile. Be VERY careful not to push too hard. Look at the distance between the paper and the eyelet when pressing. You want to leave like 1mm of space between them, otherwise your dials won't turn. Try this out once or twice on some scrap paper to see what I mean.</li>
<li>Do the same for the combat dials, making sure that the dials are underneath all of the glue flaps, and that you have the correct side facing up.</li>
</ol>
<div>
Gluing:</div>
</div>
<div>
<ol>
<li>Simply place a very thin coating of glue on each glue flap with a Q-Tip. You want the coating very very thin and as close to the outer edge as possible, otherwise you will end up gluing your dials in place. That's no bueno. This is where it's really helpful to have those pointy precision Q-Tips. The flaps are designed to be a little larger than necessary so you can focus the glue on the outer edge to avoid gluing your dials in place.</li>
<li>Once you have everything glued down, take a Kleenex, fold it in half and press hard on each glued edge, pulling towards the outer edge. This is just to make sure we get any excess glue out.</li>
<li>Press really hard on each edge to make sure they stick well.</li>
<li>If after like 30 minutes you see any edges where it raised up a bit, just spot check them with a tiny dab of glue.</li>
</ol>
<div>
That's it, you should have a fully functional Hero-Meter now!</div>
</div>
<div>
<br /></div>
<div>
I found it was easiest to do it assembly line style (by myself :-( ) and cut out a bunch of dials, glue them, then cut a bunch of Hero-Meters, and then assemble.</div>
<div>
<br /></div>
<div>
I have also included my source files used to create the Hero-Meters, in case you want to make more or tweak the ones I have. I used <a href="http://www.gimp.org/">Gimp</a> to make them, so you'll need that if you want to tweak them. The PDFs are what most people will want, and include 8 Hero-Meters and 4 Monster-Meters, themed to each set. If you own any of the sets I'm missing, it would be great if you could help me by sending me decent scans (or just photos taken with your phone) of any pieces I need, and I'll make meters for them.</div>
<div>
<br /></div>
<div>
Original - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zMm9ucTFEeUlJejg/view?usp=sharing&resourcekey=0-JbTdDXi4yho7aYgk9BWePA">source</a> - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zZFZrVWF6bTVmVGs/view?usp=sharing&resourcekey=0-D7qpMjWfY-V3vDeoj_RfPg">PDF</a></div>
<div>
Star Munchkin - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zcDNCN0o2M3VMUk0/view?usp=sharing&resourcekey=0-D7A80sr8yNbR5TqhjTTyOw">source</a> - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zYjFXMy1HaXhaY28/view?usp=sharing&resourcekey=0-3hdTK2-RElDc7D-yp7SG3w">PDF</a></div>
<div>
Munchkin Fu - I need decent quality scans of a woman, the treasure back and an enemy from this set</div>
<div>
Munchkin Bites - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zWkN6WDZiUnpnOVU/view?usp=sharing&resourcekey=0-pV3A5nffXqX_kJCeo11v9w">source</a> - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zekhjcWJJU1JSc28/view?usp=sharing&resourcekey=0-LjTXiRlYOVcMSUQeQj1bzw">PDF</a></div>
<div>
Super Munchkin - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zclFhUWVhX3F6TE0/view?usp=sharing&resourcekey=0-KtJfewUQtkgqpI7A2JZ7-A">source</a> - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zNmtvbDZHal95RmM/view?usp=sharing&resourcekey=0-wT5YCnR1MPZwVUw_9hmY7w">PDF</a></div>
<div>
Munchkin Impossible - I need decent quality scans of the treasure back and an enemy from this set</div>
<div>
Munchkin Cthulhu - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zOWtKUnN4aDVUc1E/view?usp=sharing&resourcekey=0-mvRkdD0ljRQ_IO2moNfBHw">source</a> - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zWllSTVlXNFNHRGs/view?usp=sharing&resourcekey=0-EXCgQtBNqGIiBOjcvqEdFw">PDF</a><br />
The Good, The Bad, and the Munchkin - I need decent quality scans of the treasure back and an enemy from this set</div>
<div>
Munchkin Booty - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zcnZpY2JwcTVab0E/view?usp=sharing&resourcekey=0-1dv7zpq-RPoklQHte4NkFQ">source</a> - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zem1BT2p3Z3V1alU/view?usp=sharing&resourcekey=0-8fv4PFRoTwwtxzsTRKGQbA">PDF</a></div>
<div>
Munchkin Zombies - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zRzBwLTh3aE5wUWc/view?usp=sharing&resourcekey=0--q6DQ1NbhYHfwoHFPiZUCg">source</a> - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zb21SQWk2OEg4TEk/view?usp=sharing&resourcekey=0-xerMAHCToiYpySQqqp7v9g">PDF</a></div>
<div>
Munchkin Axe Cop - I need decent quality scans of a woman, the treasure back and an enemy from this set</div>
<div>
Munchkin Conan - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zSmNPbVJQMDA4SDg/view?usp=sharing&resourcekey=0-bbeXpqVBzN1APkb72g4dHQ">source</a> - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zUzJwZjdPcmJLODQ/view?usp=sharing&resourcekey=0-kohCpTRF-mUVqZZBEkjDiw">PDF</a></div>
<div>
Munchkin Apocalypse - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zcHRWaG5OczlTOG8/view?usp=sharing&resourcekey=0-TU9oqq5NQoxXuradvq8VgQ">source</a> - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zdE1pSk1iVVE2c2s/view?usp=sharing&resourcekey=0-1vdNE-XXsfOo82QBvCtnBg">PDF</a> </div>
<div>
Munchkin Legends - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zVEJ1NGp1VFdEVlk/view?usp=sharing&resourcekey=0-G8UlbFvzyKztzfPNquoRWw">source</a> - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zQ25UUGhucVZEd0k/view?usp=sharing&resourcekey=0-69Cli_04QgQGVW99cnDcRg">PDF</a></div>
<div>
Munchkin Pathfinder - I didn't really think this is themed differently enough from the original to warrant it's own Hero-Meter. I've never played it either, so I don't really know.</div>
<div>
Munchkin Adventure Time - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zYUJxaFM0YUVCNGM/view?usp=sharing&resourcekey=0-oSJtChQaib1D0TZQSQ8YFg">source</a> - <a href="https://drive.google.com/file/d/0B-I1EmXgEE-zdnU2QkluR19sVEk/view?usp=sharing&resourcekey=0-4F_AW34-VHLLo3P5OdQ4qQ">PDF</a></div>
<div>
<br /></div>
<div>
If you found these useful, leave me a comment and let me know!</div>
<div>
<br /></div>
<div>
Munchkin is a trademark of Steve Jackson Games, and its rules and art are copyrighted by Steve Jackson Games. All rights are reserved by Steve Jackson Games. This game aid is the original creation of John Wesorick and is released for free distribution, and not for resale, under the permissions granted in the <a href="http://www.sjgames.com/general/online_policy.html">Steve Jackson Games Online Policy</a>.</div>
<div>
<br /></div>
<div>
<br /></div>
John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com22tag:blogger.com,1999:blog-873374391134593257.post-51450963820449198522013-06-19T15:39:00.000-04:002013-06-19T15:39:39.828-04:00Creating Shortcuts With Different Icons for Multiple rdesktop ConnectionsWe use rdesktop to run those few programs that we can't run on Linux on a Windows Remote Desktop Server. I like to make launchers for these, so they seem more like real applications for users. Unfortunately, when you have several rdesktop (or Wine, Java, etc.) applications, and assign an icon to them, it will choose only one icon to display in the launcher in Unity/Ubuntu. This is how you fix that.<br />
<a name='more'></a><br />
<br />
First, we need to create an icon. It just needs to be a 48x48 pixel .png file. Do that however you feel comfortable, and save it to /usr/share/icons. Make sure it has the correct permissions:<br />
<br />
<code><span style="color: #b6d7a8;">sudo chmod 644 /usr/share/icons/internetexplorer.png</span></code><br />
<br />
Now, lets create a launcher for each separate application. Create the launcher in /usr/bin. Mine looks something like this:<br />
<br />
<code><span style="color: #b6d7a8;">#!/bin/bash<br />MONITORSIZE=$(($(($(xrandr -q | grep -w Screen | cut -d ' ' -f 8)/$(xrandr | grep -c " connected ")))-70))x$(($(xrandr -q | grep -w Screen | tr -d ',' | cut -d ' ' -f 10)-55))<br />RDSSERVER=MYSERVER<br />RDSPASSWORD=MYPASSWORD<br />RDSUSER=MYUSER<br /><br />rdesktop -u $RDSUSER -s "C:\internetexplorer.bat" -p $RDSPASSWORD -T "InternetExplorer" -g $MONITORSIZE -a 16 $RDSSERVER &<br />xdotool search --sync --name "InternetExplorer" set_window --classname "internetexplorer" --class "internetexplorer" windowunmap<br />sleep .5<br />xdotool search --name "InternetExplorer" windowmap --sync</span></code><br />
<br />
Make sure we got the right permissions again:<br />
<br />
<code><span style="color: #b6d7a8;">sudo chmod 755 /usr/bin/internetexplorer</span></code><br />
<br />
All that jazz for the $MONITORSIZE just uses xrandr to automatically figure out the dimensions of the monitor, so rdesktop will start in Windowed full screen. It works with multiple monitors too! If you were doing this for a Wine, Java, etc. program, you wouldn't need any of that. Also, replace the rdesktop line with whatever you would actually need. The juicy part of what we need is right below that, the xdotool stuff. Speaking of which, you should probably install that, it isn't installed by default:<br />
<br />
<code><span style="color: #b6d7a8;">sudo apt-get install xdotool</span></code><br />
<!--more--><br />
<!--more-->Unity figures out which icon to display based on a few things. Normally, it will just call an application, and it will know to keep the icon for that application. Since we are using a launcher, it will just display a question mark, instead of whatever icon we choose. This is because it doesn't know about the program we called, just the one that IT called. Now, to get around this, you can specify that the program called will not be the program to keep the icon for. You can also tell it the window class name so all windows with that class name will share an icon. Unfortunately, the class names are generic, and we really want to specify the icon based on the window name, or title (which we are specifying with the -t option when calling rdesktop from our script). That's what we are doing with xdotool. We first search for the window we want, based on title, then we set it's class to something unique and remove the window from the window manager, wait and add it back to the window manager. The reason for removing and then re-adding it is so that Unity will see the new window with our custom window class, and give it the correct icon. You may have to adjust the sleep there. It is needed otherwise the window gets redrawn too quickly, and loses the window decorations (i.e. resize, maximize, title, etc.).<br />
<br />
Okay, you still following me? Now, all we have to do is create our .desktop file. This is very easy. You can do this with a simple GUI by using this command:<br />
<br />
<code><span style="color: #b6d7a8;">sudo gnome-desktop-item-edit /usr/share/applications --create-new</span></code><br />
<br />
But that presupposes you havegnome-desktop-item-edit installed, and it is really easy to do it manually. Create a .desktop file in /usr/share/applications like this:<br />
<br />
<code><span style="color: #b6d7a8;">[Desktop Entry]<br />Name=Internet Explorer<br />Comment=Remote desktop version of Internet Explorer for sites that do not support other browsers/OSes.<br />Exec=/usr/bin/internetexplorer<br />Icon=/usr/share/icons/internetexplorer.png<br />Terminal=false<br />Type=Application<br />Categories=Internet;</span></code><br />
<br />
That all is fairly well documented, and if you only have one application that needs the custom icon, you can just add <code><span style="color: #b6d7a8;">StartupNotify=True</span></code> to the end of that.<br />
<br />
Again, let's make sure we got the right permissions:<br />
<br />
<code><span style="color: #b6d7a8;">sudo chmod 644 /usr/share/applications/internetexplorer.desktop</span></code><br />
<br />
That's it. If you were following along, you should now be able to repeat the process for your next program, and enjoy being able to open both of them with different icons.<br />
<!--more-->John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com1tag:blogger.com,1999:blog-873374391134593257.post-9147599202769492092012-05-23T16:53:00.001-04:002012-05-23T16:54:09.283-04:00Simple Linux Server BackupsIf there is one thing I like to do it is to make my job as easy as possible. I've developed an easy method for backing up Linux servers and just thought I'd share it to help with any new Linux admins. <br />
<br />
<a name='more'></a>We all know that backing up your data is one of the most important jobs for any admin. With Linux, we can also easily backup our configurations for our servers, since all configs are just files.<br />
<br />
What I do is create a folder under /var/, called server_backup:<br />
<div style="color: #b6d7a8;">
<code>sudo mkdir /var/server_backup</code></div>
<br />
Whenever I edit a config or have any data that should be backed up, I make a symlink to it in /var/server_backup, recreating the full path from root, starting at /var/server_backup. For example, if I had a Samba server, I would want to back up the config, as well as the files themselves, which we are going to assume I placed in /srv/files. Now, to add these to my backup, I would simply do this:<br />
<br />
<div style="color: #b6d7a8;">
<code>sudo mkdir -p /var/server_backup/etc/samba</code></div>
<div style="color: #b6d7a8;">
<code>sudo ln -s /etc/samba/smb.conf /var/server_backup/etc/samba/</code></div>
<div style="color: #b6d7a8;">
<code>sudo mkdir -p /var/server_backup/srv</code></div>
<div style="color: #b6d7a8;">
<code>sudo ln -s /srv/files /var/server_backup/srv/</code></div>
<br />
If you have files that only exist as backups (i.e. SQL dumps, etc), just dump them right into /var/server_backup/backup. You can even create a server_info.txt file under /var/server_backup that contains any important information for that server.<br />
<br />
Now we have all the important config/data/etc for that server in one neat folder. This has an added benefit of being an easy way to navigate to anything important on that server. i.e. "where was the config that strange package located?"<br />
<br />
To backup the server, all we have to do now is create a simple cron job to rsync it to our backup. For this example, I will just be backing it up to an external hard drive, but in real life, it would be best to back it up to one central backup server, which would have some sort of removable media that it backs up all servers to.<br />
<br />
<div style="color: #b6d7a8;">
<code>sudo crontab -e</code></div>
<br />
add the following line (changing to your needs):<br />
<div style="color: #b6d7a8;">
<code>0 30 * * * rsync -avLE --delete /var/server-backup /media/backup</code></div>
<br />
That will run the rsync every night at 12:30 am. Easy, right?John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com0tag:blogger.com,1999:blog-873374391134593257.post-41578752092776152732012-03-13T12:31:00.000-04:002012-03-13T12:31:02.525-04:00Running fsck on a Truecrypt VolumeWe use an external hard drive encrypted with Truecrypt for backups, and I always forget how to run fsck on it, so I'm just going to document it here. It is actually really simple to do from a Linux terminal.<br />
<a name='more'></a><br />
Since Truecrypt mounts volumes when it decrypts them, it can be a little confusing how to run an fsck (file system check) on them, since you shouldn't run fsck on a mounted filesystem. The solution is to not mount it when you decrypt it, by passing the "--filesystem=none" argument. So if you normally use this command to decrypt the volume:<br />
<div style="color: #b6d7a8;">
<code>sudo truecrypt -p secretpassword -k "" --protect-hidden=no /path/to/disk /media/secretspystuff</code></div>
<br />
You would instead use this command to decrypt it without mounting:<br />
<div style="color: #b6d7a8;">
<code>sudo truecrypt -p secretpassword -k "" --protect-hidden=no /path/to/disk --filesystem=none</code></div>
<br />
To see where the raw volume is, simply run:<br />
<div style="color: #b6d7a8;">
<code>truecrypt -l</code></div>
<br />
And you will get output similar to this:<br />
<div style="color: #b6d7a8;">
<code>1: /path/to/disk /dev/mapper/truecrypt1</code></div>
<br />
Now you can run fsck on that how you normally would:<br />
<div style="color: #b6d7a8;">
<code>sudo fsck -f /dev/mapper/truecrypt1</code></div>
<br />
Once you are done, you can dismount it with:<br />
<span style="color: #b6d7a8;"><code>sudo truecrypt -d /path/to/disk</code></span><br />
<br />
or this (which will dismount ALL truecrypt drives):<br />
<span style="color: #b6d7a8;"><code> sudo truecrypt -d</code></span> <br />
<br />
Easy peasy.John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com5tag:blogger.com,1999:blog-873374391134593257.post-45330962863870013682012-02-27T12:50:00.002-05:002012-02-27T13:08:41.944-05:00Error When Promoting DRBD PrimaryI was having some issues today setting up DRBD on some new SANs. When I would try and promote one of the SANs to primary using this command:<br />
<div style="color: #b6d7a8;">
<code>sudo drbdadm -f primary r0</code></div>
<br />
I would get this error:<br />
<div style="color: #b6d7a8;">
<code>0: State change failed: (-2) Need access to UpToDate data<br />Command 'drbdsetup 0 primary' terminated with exit code 17</code></div>
<a name='more'></a><br />
Checking the status reveals:<br />
<div style="color: #b6d7a8;">
<code>cat /proc/drbd</code></div>
<div style="color: #b6d7a8;">
<code>version: 8.3.11 (api:88/proto:86-96)<br />srcversion: DA5A13F16DE6553FC7CE9B2<br /> 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----<br /> ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:1953460984</code></div>
<br />
The reason for this is because neither server can tell if it has the correct data, so we need to invalidate one of them, so the other one thinks it is up-to-date. This is pretty simple. On the secondary server, simple use this command (replacing r0 with your resource):<br />
<div style="color: #b6d7a8;">
<code>sudo drbdadm invalidate r0</code></div>
<br />
That's it. You can now successfully set your primary server with:<br />
<div style="color: #b6d7a8;">
<code>sudo drbdadm -f primary r0</code></div>
<br />
Now check your status:<br />
<div style="color: #b6d7a8;">
<code>cat /proc/drbd</code></div>
<br />
and you should see something similar to:<br />
<div style="color: #b6d7a8;">
<code>version: 8.3.11 (api:88/proto:86-96)<br />srcversion: DA5A13F16DE6553FC7CE9B2<br /> 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----<br /> ns:1818624 nr:0 dw:0 dr:1819288 al:0 bm:110 lo:0 pe:48 ua:0 ap:0 ep:1 wo:f oos:1951645432<br /> [>....................] sync'ed: 0.1% (1905900/1907676)Mfinish: 16:47:51 speed: 32,260 (30,772) K/sec</code></div>
<br />
Huzzah, success!John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com23tag:blogger.com,1999:blog-873374391134593257.post-87907125495298842082012-02-01T10:30:00.002-05:002012-02-01T10:31:13.114-05:00Getting Shutdown/Reboot to Work in KVM/QEMUI was having trouble getting shutdown/reboot in virt-manager to work with KVM/QEMU. I had to do a Force Off, which is basically like pulling the plug. It's actually pretty easy to fix.<br />
<br />
<a name='more'></a><br />
<br />
All I had to do for an Ubuntu Server guest was install the acpid daemon.<br />
<div style="color: #b6d7a8;">
<code>sudo apt-get install acpid</code></div>
<br />
That's all. This was tested on Ubuntu Server 10.10 (Maverick Meerkat) & Ubuntu Server 11.10 (Oneiric Ocelot), but I'm guessing it would work for all other modern flavors of Ubuntu. If you have fixes for other guest OS's, please leave them in the comments.John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com1tag:blogger.com,1999:blog-873374391134593257.post-16930930457471651202012-01-31T15:25:00.002-05:002012-01-31T15:25:12.163-05:00Setting Up a Bridged Network Interface for KVM in Ubuntu<span style="font-family: Times, 'Times New Roman', serif;">The process for setting up a network bridge for KVM in Ubuntu is actually fairly simple. For the purposes of this demo, we will assume that you already have KVM/QEMU installed from the Ubuntu Repos and that you are not using Network Manager. If you are using Network Manager, you must disable it prior to following these instructions. I am using Ubuntu Server 11.10 (Oneiric Ocelot), but this should work for 10.04 (Lucid Lynx), 10.10 (Maverick Meerkat) and 11.04 (Natty Narwhal).</span><br />
<br />
<a name='more'></a><span style="font-family: Times, 'Times New Roman', serif;">Bridged mode is really important if you plan on using your VMs for any sort of server. In NAT mode they will not be able to communicate with any other machines on your local network. Bridged mode makes it so your VMs share the physical interface of your KVM host.</span><br />
<span style="font-family: Times, 'Times New Roman', serif;"><br /></span><br />
<span style="font-family: Times, 'Times New Roman', serif;">First, we need to install some software:</span><br />
<span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"><code>sudo apt-get install libcap2-bin bridge-utils</code></span><br />
<span style="font-family: Times, 'Times New Roman', serif;"><br /></span><br />
<span style="font-family: Times, 'Times New Roman', serif;">From (<a href="https://help.ubuntu.com/community/KVM/Networking">https://help.ubuntu.com/community/KVM/Networking</a>):</span><br />
<span style="font-family: Times, 'Times New Roman', serif;"><br /></span><br />
<span style="font-family: Times, 'Times New Roman', serif;">Give qemu the inheritable CAP_NET_ADMIN capability, for 64-bit:</span><br />
<span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"><code>sudo setcap cap_net_admin=ei /usr/bin/qemu-system-x86_64</code></span><br />
<span style="font-family: Times, 'Times New Roman', serif;"><br /></span><br />
<span style="font-family: Times, 'Times New Roman', serif;">or for 32-bit:</span><br />
<span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"><code>sudo setcap cap_net_admin=ei /usr/bin/qemu</code></span><br />
<span style="font-family: Times, 'Times New Roman', serif;"><br /></span><br />
<span style="font-family: Times, 'Times New Roman', serif;">We will now edit /etc/network/interfaces to add the bridge. Assuming your current config looks like this:</span><br />
<span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"><code>auto lo</code></span><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;">iface lo inet loopback</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"><br /></span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;">auto eth0</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;">iface eth0 inet static</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> address 192.168.0.10</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> network 192.168.0.0</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> netmask 255.255.255.0</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> broadcast 192.168.0.255</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> gateway 192.168.0.1</span></code><br />
<span style="font-family: Times, 'Times New Roman', serif;"><br /></span><br />
<span style="font-family: Times, 'Times New Roman', serif;">Change it to look like this:</span><br />
<span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"><code>auto lo</code></span><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;">iface lo inet loopback</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"><br /></span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;">auto eth0</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;">iface eth0 inet manual</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"><br /></span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;">auto br0</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;">iface br0 inet static</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> address 192.168.0.10</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> network 192.168.0.0</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> netmask 255.255.255.0</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> broadcast 192.168.0.255</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> gateway 192.168.0.1</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> bridge_ports eth0</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> bridge_stp off</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> bridge_fd 0</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> bridge_maxwait 0</span></code><br />
<span style="font-family: Times, 'Times New Roman', serif;"><br /></span><br />
<span style="font-family: Times, 'Times New Roman', serif;">If you are using DHCP, you would want it to look something like this:</span><br />
<span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"><code>auto lo</code></span><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;">iface lo inet loopback</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"><br /></span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;">auto eth0</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;">iface eth0 inet manual</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"><br /></span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;">auto br0</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;">iface br0 inet dhcp</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> bridge_ports eth0</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> bridge_stp off</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> bridge_fd 0</span></code><br />
<code><span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"> bridge_maxwait 0</span></code><br />
<span style="font-family: Times, 'Times New Roman', serif;"><br /></span><br />
<span style="font-family: Times, 'Times New Roman', serif;">Now we just need to restart networking:</span><br />
<span style="color: #b6d7a8; font-family: Times, 'Times New Roman', serif;"><code>sudo /etc/init.d/networking restart</code></span><br />
<span style="font-family: Times, 'Times New Roman', serif;"><br /></span><br />
<span style="font-family: Times, 'Times New Roman', serif;">That's it. You can now start using your new bridge with your VMs. All you have to do is select the bridge created in the VM settings in virt-manager.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgZwqIiwF1GpljZ5zxUuducz8xnxRuUbRkqSSVWgl-mKj1qw0TBABdWku3lkPD81wlb88NaSo78N6NhWYNOHT1aD2RbTsD7NbhjLqfFDGsUCXBdZCsQIZAGJHcx-qXxzYwR4Dbr4yymg/s1600/Screenshot+-+Virt-Manager+Network+Settings.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Times, 'Times New Roman', serif;"><img border="0" height="163" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgZwqIiwF1GpljZ5zxUuducz8xnxRuUbRkqSSVWgl-mKj1qw0TBABdWku3lkPD81wlb88NaSo78N6NhWYNOHT1aD2RbTsD7NbhjLqfFDGsUCXBdZCsQIZAGJHcx-qXxzYwR4Dbr4yymg/s320/Screenshot+-+Virt-Manager+Network+Settings.png" width="320" /></span></a></div>
<span style="font-family: Times, 'Times New Roman', serif;"><br /></span><br />
<span style="font-family: Times, 'Times New Roman', serif;"><br /></span><br />
<span style="font-family: Times, 'Times New Roman', serif;"><br /></span><br />
<br />John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com4tag:blogger.com,1999:blog-873374391134593257.post-1124577011515578632011-12-06T17:33:00.001-05:002012-02-01T10:31:51.046-05:00check_esx3 error "Permission to perform this operation was denied"<div style="font-family: Times,"Times New Roman",serif;">
Today I was setting up VMware vSphere Hypervisor (ESXi 5.0) on a new server. Since I'm on the Kool-aid, the first thing I do when setting up a server is getting some kind of Nagios monitoring going. For several years, on ESXi servers, I have been using <a href="http://www.op5.org/community/plugin-inventory/op5-projects/check-esx-plugin">op5's check_esx3 plugin</a>. Today was the first time I had set up an ESXi 5.0 server though, and when I first ran it after creating my Nagios user in ESXi I got the following error:</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>Permission to perform this operation was denied</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
</div>
<a name='more'></a><br />
<div style="font-family: Times,"Times New Roman",serif;">
The weird thing was that when I would run the check as root, it would work fine. I figured it must be a permissions issue, but my Nagios user was already a member of the root group. On to the fun. So after a lot of Googling, syslog reading and whatnot I figured out what the issue was. The authentication for handling the VMware vSphere SDK for Perl (which is what allows the check_esx3 plugin to work) is done in a file called /etc/vmware/hostd/authorization.xml. It looks like this:</div>
<div style="font-family: Times,"Times New Roman",serif;">
<span style="color: #b6d7a8;"><code><ConfigRoot><br /> <ACEData id="10"><br /> <ACEDataEntity>ha-folder-root</ACEDataEntity><br /> <ACEDataId>10</ACEDataId><br /> <ACEDataIsGroup>false</ACEDataIsGroup><br /> <ACEDataPropagate>true</ACEDataPropagate><br /> <ACEDataRoleId>-1</ACEDataRoleId><br /> <ACEDataUser>root</ACEDataUser><br /> </ACEData><br /> <NextAceId>11</NextAceId><br /></ConfigRoot></code></span></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
The quick among you may have noticed that when it authenticates, it expects root to be a user, and not a group. Well, we want it to authenticate with the root group, so we can use non-root users. You'll need to enable either SSH or console access to edit it. Just use:</div>
<div style="font-family: Times,"Times New Roman",serif;">
vi /etc/vmware/hostd/authorization.xml</div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
Change this line:</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code><ACEDataIsGroup>false</ACEDataIsGroup></code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
to this:</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code><ACEDataIsGroup>true</ACEDataIsGroup></code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
and save. From the DCUI (Direct Console User Interface), you know, the regular yellow and grey interface on the ESXi server, just restart the Management Agents (Troubleshooting Options -> Restart Management Agents). I think you can also restart the management agents with these two commands, but it isn't "supported", so don't say I didn't warn you.</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>/sbin/services.sh restart</code></div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>/etc/init.d/sfcbd-watchdog restart</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
As always, if you found this helpful, drop me a comment. They make me feel all fuzzy.</div>John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com2tag:blogger.com,1999:blog-873374391134593257.post-59309882880933715412011-11-08T16:49:00.002-05:002012-02-01T10:32:53.046-05:00Installing MongoDB with Replication on Ubuntu<div style="font-family: Times,"Times New Roman",serif;">
Here I describe how to install MongoDB on Ubuntu, with replication. I am using a replica set with 3 nodes (2 DB servers, and 1 arbiter).</div>
<div style="font-family: Times,"Times New Roman",serif;">
</div>
<a name='more'></a><span style="font-family: Times,"Times New Roman",serif;">This is incredibly easy, but I figured I'd put it here in case someone else finds it useful. We are going to set up MongoDB on 3 servers for our replica set. 2 of these will actually have databases, and the third one will just be an arbiter. The DB servers will have full replication between them, the arbiter just votes on the server(s) it can see, and makes it so we don't have two servers fighting to be primary. The arbiter doesn't have to do much, so you can just toss it on any server you have in your rack. I am using Ubuntu 11.10 (Oneiric Ocelot) for my DB nodes and Ubuntu 10.04 (Lucid Lynx) for my arbiter, but these instructions should be good for any releases in between (10.10 - Maverick Meerkat, 11.04 - Natty Narwhal)</span><br />
<div style="font-family: Times,"Times New Roman",serif;">
</div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
These first steps must be done on all three servers which I will refer to as dbserver1, dbserver2 and arbserver.</div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
First we will need to add the repos. The versions of MongoDB in the official Ubuntu repos are too old to be useful. Lets create our .list file:</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>sudo nano /etc/apt/sources.list.d/mongodb.list</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
Now put this one line our new .list file:</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
We now need to add 10 Gen's GPG key:</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
Now, we can install:</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>sudo apt-get update</code></div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>sudo apt-get install mongodb-10gen</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
We now need to edit /etc/mongodb.conf on each server, to add our replica set info.</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>sudo nano /etc/mongodb.conf</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
Add these lines to turn on REST (so we can see the status of our replica set, amongst other things) anywhere in the config.</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code># enable rest</code></div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>rest = true</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
At the bottom of the config, we need to uncomment the replSet option and define our replica set name(use whatever you want), like so:</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>replSet = myset</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
Restart the MongoDB service on each server.</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>sudo service mongodb restart</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
Now on dbserver1, we will set up the actual set, like so:</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>$ mongo --host 127.0.0.1<br />> rs.initiate()<br />{<br /> "info2" : "no configuration explicitly specified -- making one",</code></div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code> "me" : "dbserver1:27017",<br /> "info" : "Config now saved locally. Should come online in about a minute.",<br /> "ok" : 1<br />}<br />> rs.add("dbserver2")<br />{ "ok" : 1 }</code></div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>PRIMARY> rs.addArb("arbserver")<br />{ "down" : [ "arbserver:27017" ], "ok" : 1 }</code></div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>> exit</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
And that's it. You can check the status on the replica set from a web browser, http://dbserver1:28017/_replSet<br />
<br />
You can also set one server with a higher priority, so it will always be primary when all servers are up (another server will become primary if it is down). To do that simply connect to your primary server again (dbserver1).<br />
<div style="color: #b6d7a8;">
<code>mongo --host 127.0.0.1</code></div>
<br />
Now we will double-check the id:<br />
<span style="color: #b6d7a8;"><code>PRIMARY> rs.conf()</code></span><code><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;">{</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> "_id" : "rdset",</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> "version" : 4,</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> "members" : [</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> {</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> "_id" : 0,</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> "host" : "dbserver1:27017",</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> "priority" : 2</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> },</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> {</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> "_id" : 1,</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> "host" : "dbserver2:27017"</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> },</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> {</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> "_id" : 2,</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> "host" : "arbserver:27017",</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> "arbiterOnly" : true</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> }</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;"> ]</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;">}</span></code></div>
<div style="font-family: Times,"Times New Roman",serif;">
Now use that ID in the following command:<br />
<div style="color: #b6d7a8;">
<code>PRIMARY> cfg.members[0].priority = 2<br />2<br />PRIMARY> rs.reconfig(cfg)<br />{ "ok" : 1 }</code><br />
<code>PRIMARY> exit</code><code><br /></code></div>
<br />
Now you can check the status again by going to http://dbserver1:28017/_replSet. After setting up a new priority, my arbiter was having issues connecting. I think you may just have to wait a few minutes for it to come back up, because after ~5-10 minutes, it showed as connected again. If not, you may have to restart the service on the server that is not connecting:<br />
<span style="color: #b6d7a8;"><code>sudo service mongodb restart</code></span></div>John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com2tag:blogger.com,1999:blog-873374391134593257.post-56801566859703529282011-11-03T17:52:00.000-04:002012-02-01T10:33:29.358-05:00Issues Installing x2go<div style="font-family: Times,"Times New Roman",serif;">
I was having issues today after installing x2go. Here is was I did to fix them.</div>
<a name='more'></a><div style="font-family: Times,"Times New Roman",serif;">
My first issue happened trying to install the x2gognomebindings. This is the error I was getting:</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>Setting up x2gognomebindings (2.0.1.3-0~47~oneiric1) ...<br />Settings menu not found in /etc/xdg/menus at /usr/sbin/update-gnome-menu-x2go li<br />ne 43.<br />dpkg: error processing x2gognomebindings (--configure):<br /> subprocess installed post-installation script returned error exit status 2<br />Errors were encountered while processing:<br /> x2gognomebindings<br />E: Sub-process /usr/bin/dpkg returned an error code (1)</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
This would happen every time I tried anything with apt. What I did to fix it was simple.</div>
<div style="font-family: Times,"Times New Roman",serif;">
<span style="color: #b6d7a8;"><code>sudo cp /etc/xdg/menus/gnome-settings-x2go.menu /etc/xdg/menus/gnome-settings.menu</code></span></div>
<div style="font-family: Times,"Times New Roman",serif;">
<code><span style="color: #b6d7a8;">sudo apt-get install x2gognomebindings</span></code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
My second issue happened when I tried to connect to x2go for the first time. I was getting this error:</div>
<div style="font-family: Times,"Times New Roman",serif;">
<img alt="" src="data:image/png;base64,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" /></div>
<br />
<br />
<div style="font-family: Times,"Times New Roman",serif;">
</div>
Repeated here for the bots: <br />
<div style="color: #b6d7a8;">
<code>Authentification Failed</code></div>
<div style="color: #b6d7a8;">
<code> The host key for this server was not found but an othertype of key exists.An Attacker might change the default server key toconfuse your client into thinking the key does not exist</code></div>
<br />
This will happen if you SSH into the server before installing x2go. SSH by default likes ecdsa keys, and x2go doesn't. On the server, edit the ssh config:<br />
<br />
<div style="color: #b6d7a8;">
<code>sudo nano /etc/ssh/sshd_config</code></div>
<br />
Then comment out this line with a #:<br />
<br />
<span style="color: #b6d7a8;"><code>HostKey /etc/ssh/ssh_host_ecdsa_key</code></span><br />
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
Now restart ssh:</div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>sudo service ssh restart</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
On your client you need to remove your old key. I just removed all of them.</div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code>rm .ssh/known_hosts</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<span style="font-family: Times,"Times New Roman",serif;">Hopefully someone will find this useful. :-)</span>John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com20tag:blogger.com,1999:blog-873374391134593257.post-76373470053915498862011-11-01T12:54:00.004-04:002012-02-01T10:34:31.663-05:00Installing PyLucene on Ubuntu 11.10 (Oneiric Ocelot)<div style="font-family: Times,"Times New Roman",serif;">
I recently needed to install <a href="http://lucene.apache.org/pylucene/">PyLucene</a> for our developers on a server running Ubuntu 11.10 (Oneiric Ocelot). Unfortunately the version in the repos was much too old, so I had to build it from source. Below I will describe what I did, in the hopes it will help someone else.</div>
<div style="font-family: Times,"Times New Roman",serif;">
<br />
<a name='more'></a><br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
First, we need to install Java<br />
<span style="color: #b6d7a8;"><code>sudo apt-get install openjdk-6-jre openjdk-6-jdk ant</code></span><br />
<br />
Download the source<br />
<a href="http://apache.cyberuse.com//lucene/pylucene/">http://apache.cyberuse.com//lucene/pylucene/</a></div>
<div style="font-family: Times,"Times New Roman",serif;">
Extract source<br />
<span style="color: #b6d7a8;"><code>tar zxvf pylucene-x.x.x-x-src.tar.gz</code></span><br />
<br />
Try to compile jcc (it will probably fail)<br />
<span style="color: #b6d7a8;"><code>cd pylucene-x.x.x-x/jcc</code></span><code><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;">sudo python setup.py build</span></code></div>
<div style="font-family: Times,"Times New Roman",serif;">
It will fail and give you a command to add a patch to setuptools, like this:<br />
<span style="color: #b6d7a8;"><code>sudo patch -d /usr/lib/python2.7/dist-packages -Nup0 < /home/johnw/personal/pylucene-3.4.0-1/jcc/jcc/patches/patch.43.0.6c11</code></span></div>
<div style="font-family: Times,"Times New Roman",serif;">
After running that, try again<br />
<span style="color: #b6d7a8;"><code>sudo python setup.py build</code></span><br />
<br />
cd to the root of the archive<br />
<span style="color: #b6d7a8;"><code>cd ..</code></span></div>
<div style="font-family: Times,"Times New Roman",serif;">
</div>
<div style="font-family: Times,"Times New Roman",serif;">
</div>
<div style="font-family: Times,"Times New Roman",serif;">
</div>
<div style="font-family: Times,"Times New Roman",serif;">
</div>
<div style="font-family: Times,"Times New Roman",serif;">
</div>
<div style="font-family: Times,"Times New Roman",serif;">
</div>
<div style="font-family: Times,"Times New Roman",serif;">
</div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
Run these commands<br />
<span style="color: #b6d7a8;"><code>pushd jcc</code></span><code><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;">python setup.py build</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;">sudo python setup.py install</span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;">popd</span></code><br />
<br />
Edit the Makefile to match your enviroment (i.e. I had to uncomment these lines)<br />
<span style="color: #b6d7a8;"><code># Linux (Ubuntu 8.10 64-bit, Python 2.5.2, OpenJDK 1.6, setuptools 0.6c9) </code></span><code><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;">#PREFIX_PYTHON=/usr </span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;">#ANT=ant </span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;">#PYTHON=$(PREFIX_PYTHON)/bin/python </span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;">#JCC=$(PYTHON) -m jcc --shared </span><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;">#NUM_FILES=3</span></code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
to look like this:</div>
<div style="color: #b6d7a8; font-family: Times,"Times New Roman",serif;">
<code># Linux (Ubuntu 8.10 64-bit, Python 2.5.2, OpenJDK 1.6, setuptools 0.6c9) <br />
PREFIX_PYTHON=/usr <br />
ANT=ant <br />
PYTHON=$(PREFIX_PYTHON)/bin/python <br />
JCC=$(PYTHON) -m jcc --shared <br />
NUM_FILES=3</code></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br />
Install it<br />
<span style="color: #b6d7a8;"><code>sudo make</code></span><code><br style="color: #b6d7a8;" /><span style="color: #b6d7a8;">sudo make install</span></code><br />
<br />
Now we will run tests to make sure it installed correctly<br />
<span style="color: #b6d7a8;"><code>sudo make test</code></span></div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
If all tests complete okay, then you are all set. Enjoy!</div>
<div style="font-family: Times,"Times New Roman",serif;">
</div>
<div style="font-family: Times,"Times New Roman",serif;">
If you feel this helped you, please leave a comment.</div>John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com6tag:blogger.com,1999:blog-873374391134593257.post-29525316199517703962011-10-04T17:43:00.001-04:002015-06-15T13:50:45.540-04:00Nagios Plugin - check_rss<div style="font-family: Times,"Times New Roman",serif;">
As IT moves towards the cloud there are certain things we can't monitor effectively with Nagios, so I made a plugin to check RSS feeds. Many cloud services offer an RSS feed with their status. check_rss allows you to parse these feeds either looking for certain keywords that exist (or don't) or the date of the last post.</div>
<a name='more'></a><div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
check_rss requires the feedparser and argparse python libraries. For Ubuntu you can install with</div>
<div style="color: #93c47d; font-family: Times,"Times New Roman",serif;">
<code>sudo apt-get install python-feedparser python-argparse</code></div>
<div style="color: #93c47d; font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
usage: check_rss [-h] -H RSSFEED [-c CRITICALIF] [-C CRITICALNOT] [-w WARNINGIF] [-W WARNINGNOT] [-t] [-p] [-v VERBOSITY]</div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
optional arguments:</div>
<div style="font-family: Times,"Times New Roman",serif;">
-h, --help - show this help message and exit</div>
<div style="font-family: Times,"Times New Roman",serif;">
-H RSSFEED - URL of RSS feed to monitor</div>
<div style="font-family: Times,"Times New Roman",serif;">
-c CRITICALIF, --criticalif CRITICALIF - Comma separated, quoted list of strings that will result in critical condition if PRESENT</div>
<div style="font-family: Times,"Times New Roman",serif;">
-C CRITICALNOT, --criticalnot CRITICALNOT - Comma separated, quoted list of strings that will result in critical condition if MISSING</div>
<div style="font-family: Times,"Times New Roman",serif;">
-w WARNINGIF, --warningif WARNINGIF - Comma separated, quoted list of strings that will result in warning condition if PRESENT</div>
<div style="font-family: Times,"Times New Roman",serif;">
-W WARNINGNOT, --warningnot WARNINGNOT - Comma separated, quoted list of strings that will result in warning condition if MISSING<br />
-T HOURS, --hours HOURS - Hours since last post. Will return critical if less than designated amount.</div>
<div style="font-family: Times,"Times New Roman",serif;">
-t, --titleonly - Search the titles only. The default is to search for strings matching in either the title or description</div>
<div style="font-family: Times,"Times New Roman",serif;">
-p, --perfdata - If used will keep very basic performance data (0 if OK, 1 if WARNING, 2 if CRITICAL, 3 if UNKNOWN)</div>
<div style="font-family: Times,"Times New Roman",serif;">
-v VERBOSITY, --verbosity VERBOSITY - Verbosity level. 0 = Only the title is returned. 1 = Title and link are returned. 2 = Title, link and description are returned (Default)</div>
<div style="font-family: Times,"Times New Roman",serif;">
<br /></div>
<div style="font-family: Times,"Times New Roman",serif;">
If you do not specify any warning or critical conditions, it will</div>
<div style="font-family: Times,"Times New Roman",serif;">
always return OK. This will only check the newest feed entry.<br />
<br />
Changelog:<br />
2015-06-15 - v0.35 - Fixed issue where having multiple missing strings would require them all to be missing to raise an error. <br />
2011-11-02 - v 0.3 - Added check by time, fixed verbosity bug and changed data separators to semi-colons to not mess up performance data.</div>
<script src="http://pastebin.com/embed_js.php?i=6XWDV23C">
</script>John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com17tag:blogger.com,1999:blog-873374391134593257.post-64972489659592613862011-08-22T17:57:00.000-04:002012-02-01T10:36:09.706-05:00Login/Boot Scripts for Ubuntu/GnomeI couldn't find any good information on writing logon/boot scripts for Ubuntu/Gnome, so here you go.<br />
<br />
<a name='more'></a><br />
Boot script location (runs before GDM login screen):<br />
<div style="color: #b6d7a8;">
<code>/etc/rc.local</code></div>
<br />
Boot scripts run as root. Just change that file to your liking.<br />
<br />
Login script location (runs after GDM login):<br />
<div style="color: #b6d7a8;">
<code>/etc/gdm/Default</code></div>
<br />
There isn't a default login script, so you have to create it yourself, and make it executable (sudo chmod +x /etc/gdm/Default) and remember to put #!/bin/bash at the start (or whatever you want to use for the environment). Login scripts run as root.<br />
<br />John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com0tag:blogger.com,1999:blog-873374391134593257.post-62667624691040797002011-04-27T09:17:00.001-04:002012-02-01T10:37:11.098-05:00Tiny Borders in Ubuntu**Update** - This also works in 11.04 (Natty Narwhal)<br />
<br />
Maybe I'm a little late to the party, but I figured I would post a fix to the really annoying fact that the default Ubuntu theme (Ambiance) in 10.10 (Maverick Meerkat) has super tiny (1 pixel) borders, which makes resizing nigh impossible.<br />
<br />
<a name='more'></a>All you have to do is open up a terminal and type the following:<br />
<br />
<div style="color: #b6d7a8;">
<code>gksudo gedit /usr/share/themes/Ambiance/metacity-1/metacity-theme-1.xml</code></div>
<br />
Now change the following values under frame_geometry_normal to 3 (or whatever you prefer)<br />
<br />
<br />
<div style="color: #b6d7a8;">
<code><distance name="left_width" value="1"></distance></code></div>
<div style="color: #b6d7a8;">
<code><distance name="right_width" value="1"></distance></code></div>
<div style="color: #b6d7a8;">
<code><distance name="bottom_height" value="1"></distance></code></div>
<br />
<br />
Save and close the file. Now Open System->Preferences->Appearance and double-click on the Ambiance theme to refresh it. Play around with the values to find what works best for you. Enjoy your new easily resized windows! Note, this is explained in the <a href="https://bugs.launchpad.net/ubuntu/+source/metacity/+bug/160311">Launchpad bug report</a>. I'm just posting it here in hopes that it may be easier to find for those struggling. Let me know if you found this useful.John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com0tag:blogger.com,1999:blog-873374391134593257.post-56113219842078788232011-03-08T10:10:00.002-05:002011-03-08T10:13:30.884-05:00Nagios Check - check_temp_weathergoose<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">I wrote a check for Nagios to check (and convert to Fahrenheit) the temperature for a Weathergoose environmental monitor.</span><br />
<br />
<a name='more'></a><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> This is a simple check that checks the temperature (and converts it to Fahrenheit) for Weathergoose environmental monitors. I would guess this would work fine with other <a href="http://www.itwatchdogs.com/">IT Watchdogs</a> environmental monitors, i.e. Supergoose, Microgoose, Minigoose.</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">Usage: check_temp_weathergoose.sh -H <hostaddress> [-f] -w <warning> -c <critical></critical></warning></hostaddress></span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">-H - The IP address of the Weathergoose</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">-C - SNMP Community</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">-f - Convert output to Fahrenheit</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">-w - Warning Range</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">-c - Critical Range</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><span class="Apple-style-span" style="-webkit-text-size-adjust: none; color: #181818; font-family: courier; font-size: 13px; line-height: 22px; white-space: pre;"><script src="http://pastebin.com/embed_js.php?i=SuL66eJv">
</script></span></span>John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com6tag:blogger.com,1999:blog-873374391134593257.post-72409463513987265042011-03-08T09:21:00.001-05:002011-03-08T09:30:25.329-05:00Nagios Check - check_users (Windows)<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> I wrote a check for Nagios to tell you the number of users logged in to a machine, as well as the last person logged in.</span><br />
<br />
<a name='more'></a><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> This check will check both the number of users logged in to a Windows system, as well as the last logged in user. It can return critical if the last logged in user does not match the one defined. It can also return warning/critical if the number of users logged in is not within range. You can also just use it for informational purposes, if warnings/criticals are not defined. It is very useful for servers that must have someone logged in.</span><br />
<br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> You must copy the check_users.exe file to the NSClient++ script folder. Then you must add the following line to the NRPE Handlers section of your NSC.ini file in the NSClient++ folder:</span><br />
<br />
<span class="Apple-style-span" style="color: #b6d7a8; font-family: Georgia, 'Times New Roman', serif;"><code>check_users=scripts\check_users.exe $ARG1$</code></span><br />
<br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> The arguments for the check are as follows:</span><br />
<br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">check_users.exe [-l] [-u username] [-n] [-w warning] [-c critical]</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">-l Displays the last logged in user. You can define a critical return with the -u option, which will check if the defined user was NOT the last logged in user. If username is not defined, status will always be ok.</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">-n Displays the number of users currently logged in to the server. You can set warning or critical ranges with -w and -c respectively. You must set both a warning and a critical for the check to return a status other than OK.</span><br />
<br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">Some sample checks would look like:</span><br />
<br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> This will check to see if there if at least one user logged in and return critical status if no one is logged in:</span><br />
<span class="Apple-style-span" style="color: #b6d7a8; font-family: Georgia, 'Times New Roman', serif;"><code>check_nrpe -H $HOSTADDRESS$ -c check_users -a "-n -w 1 -c 1"</code></span><br />
<br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> This will check to see if the user admin on domain mydomain was the last one logged in and return a critical status if someone else was:</span><br />
<span class="Apple-style-span" style="color: #b6d7a8; font-family: Georgia, 'Times New Roman', serif;"><code>check_nrpe -H $HOSTADDRESS$ -c check_users -a "-l -u mydomainadmin"</code></span><br />
<br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> This check will be for informational purposes and will just return the last user logged in (status will always be OK):</span><br />
<span class="Apple-style-span" style="color: #b6d7a8; font-family: Georgia, 'Times New Roman', serif;"><code>check_nrpe -H $HOSTADDRESS$ -c check_users -a "-l"</code></span><br />
<br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> Tested on Windows Server 2003/2008, and Windows XP.</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><a href="http://happypcgr.com/johnsblog/programs/check_users.exe">Download check_users.exe</a></span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">Source code (written in AutoIT):</span><br />
<span class="Apple-style-span" style="-webkit-text-size-adjust: none; color: #181818; font-size: 13px; line-height: 22px; white-space: pre;"><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><script src="http://pastebin.com/embed_js.php?i=jtEWDiCH">
</script></span></span>John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com3tag:blogger.com,1999:blog-873374391134593257.post-11446791063965371652011-03-04T20:01:00.001-05:002011-03-11T19:18:03.248-05:00AutoDVDEncoder<div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;"></span></div><div class="MsoNormal"></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;"> I wrote a script to help me encode DVDs to </span><span class="Apple-style-span" style="font-family: Georgia, serif;"> </span><span class="Apple-style-span" style="font-family: Georgia, serif;">to high quality Xvid videos in a Matroska container, with multiple AC3 audio streams (if the film is foreign), subtitles and chapters. The script was written in bash for GNU/Linux.</span><br />
<a name='more'></a><br />
<span class="Apple-style-span" style="font-family: Georgia, serif;"> Here is the story behind the script, in case you are interested. Skip forward to the next paragraph if you just want <a href="http://thedailywtf.com/Articles/plz-email-me-teh-codez.aspx">teh codez</a>. If you don't know me, I have an HTPC that I set up (<a href="http://xbmc.org/">XBMC</a> FTW) and I've spent a lot of time ripping my DVD collection to video files. Before I was using Xvid .avi's for compatibility reasons. I recently decided to switch to using Matroska (.mkv) files for the added benefits of having multiple audio tracks, subtitles and chapters in one file. My original script to do this involved a lot of manual changes for each DVD I wanted to encode (it was basically just the actual mencoder line from this new script, copied for each DVD I wanted to encode). This worked fine, but was tedious. I'd have to look up the title for each movie, see if English was supported if it was a foreign film, etc. Now that I decided to package everything in MKVs, it created more steps to my process and I decided to rethink my script. A little while later, this is what I came up with.</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;"><br />
</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;"> This script was written to simplify encoding DVDs to high quality Xvid videos in a Matroska container, with multiple AC3 audio streams (if the film is foreign), subtitles and chapters. It can also encode all of the titles on a DVD over a certain length, in case you are encoding a DVD containing TV shows, or want to encode special features, etc. The script was written in bash for GNU/Linux. If you use Windows or Mac, too bad. In it’s simplest form it can be used like this:</span><br />
<span class="Apple-style-span" style="font-family: Georgia, serif;"><br />
</span></div><div class="MsoNormal"><span class="Apple-style-span" style="color: #b6d7a8; font-family: Georgia, serif;"><code>AutoDVDEncoder.sh BestDVDEver</code></span><br />
<span class="Apple-style-span" style="font-family: Georgia, serif;"><code><br />
</code></span></div><div class="MsoNormal"></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;">Before using it, you will need to change a few settings in the script. These are:</span></div><div class="MsoNormal"></div><ul><li><span class="Apple-style-span" style="font-family: Georgia, serif;">dvdpath - This is the path to the folder where your DVDs reside. This is not the folder that actually contains the DVD(s). i.e. /home/bob/DVDs not /home/bob/DVDs/SuperAwesomeDVD</span></li>
<li><span class="Apple-style-span" style="font-family: Georgia, serif;">moviepath - This is the path to the folder where you want the finished movies to go.</span></li>
<li><span class="Apple-style-span" style="font-family: Georgia, serif;">defaultlanguage - This is the default language. It uses the <a href="http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes">ISO 639-1 format</a>. </span></li>
<li><span class="Apple-style-span" style="font-family: Georgia, serif;">cores - Specify the number of cores your processor has.</span></li>
<li><span class="Apple-style-span" style="font-family: Georgia, serif;">assumedlongesttitle - Specify the default title to use when the title cannot be determined.</span></li>
</ul><br />
<div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;"> The only required argument is the name of a singular DVD. You can also batch encode several DVDs like so:</span><br />
<span class="Apple-style-span" style="font-family: Georgia, serif;"><br />
</span></div><div class="MsoNormal"><span class="Apple-style-span" style="color: #b6d7a8; font-family: Georgia, serif;"><code>AutoDVDEncoder.sh LameDVD "Octogenarian Paintball" TheLastChair</code></span><br />
<span class="Apple-style-span" style="font-family: Georgia, serif;"><code><br />
</code></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;">It will then try to automatically detect the longest track, crop settings, and use your default language to encode the movies. You can also specify the language of the DVD, if it is foreign with the -l argument, like so:</span><br />
<span class="Apple-style-span" style="font-family: Georgia, serif;"><br />
</span></div><div class="MsoNormal"><span class="Apple-style-span" style="color: #b6d7a8; font-family: Georgia, serif;"><code>AutoDVDEncoder.sh "An Island of Crazy" -l ja "OMG Ponies" "It's Effing Cold - A Documentary" -l ru</code></span><br />
<span class="Apple-style-span" style="font-family: Georgia, serif;"><code><br />
</code></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;">When you leave out the -l argument for a movie, it will default to the language set in the script. Language codes</span><span class="Apple-style-span" style="font-family: Georgia, serif;"> </span><span class="Apple-style-span" style="font-family: Georgia, serif;">use the</span><span class="Apple-style-span" style="font-family: Georgia, serif;"> </span><span class="Apple-style-span" style="font-family: Georgia, serif;"><a href="http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes">ISO 639-1 format</a></span><span class="Apple-style-span" style="font-family: Georgia, serif;">. </span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;">There are also a total of four ways to specify the title.</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;">1.) Let the script detect it for you. The script will automatically try to find the longest title and use that as the title to rip. The main title isn't always the longest, and it can't always detect the titles, so I made optoions for other ways.</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;">2.) Set it using the -t argument.</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;">3.) Set the title to default to when it can't be found automatically in the script.</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;">4.) Set the title to default to when it can't be found automatically with the -a argument (this overrides the default set in the script).</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;"><br />
</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;">An example of these would be:</span><br />
<span class="Apple-style-span" style="font-family: Georgia, serif;"><br />
</span></div><div class="MsoNormal"><span class="Apple-style-span" style="color: #b6d7a8; font-family: Georgia, serif;"><code>AutoDVDEncoder.sh -a 1 "Extreme Basket Weaving" "The Guy Who Did Something" -t 6</code></span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;"><br />
</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;">In the above example if the main title for "Extreme Basket Weaving" wasn't found, it would default to 1. The title for "The Guy Who Did Something" would be set at 6.</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;"><br />
</span></div><div class="MsoNormal"><span class="Apple-style-span" style="font-family: Georgia, serif;"> I'll try to make a list of dependencies later, but you will at least need libdvdcss, mencoder, mplayer, xvid, mkvtoolnix and lsdvd. Use at your own risk, there is very little error checking and I'm not responsible if you break anything. Anywho, here you go:</span><br />
<span class="Apple-style-span" style="font-family: Georgia, serif;"><br />
</span></div><script src="http://pastebin.com/embed_js.php?i=WXeyfwSp">
</script>John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com0tag:blogger.com,1999:blog-873374391134593257.post-80062439887170289302010-05-15T20:48:00.001-04:002011-03-08T09:27:15.709-05:00Compaq Evo N610 on Ubuntu 10.04 (Lucid Lynx)<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"></span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"></span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> I upgraded to Ubuntu 10.04 (Lucid Lynx) on launch day. I quickly noticed that my laptop (Compaq Evo N610c) was running very hot. I mean never having children, melting flesh hot. I had a spare laptop cooler so I started using that for a little while. It would then start to slow the computer down drastically. Not content with leaving well enough alone, I found out the issue.</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"></span><br />
<a name='more'></a><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> I noticed that the heat was coming from where I figured the graphics card was. I turned off all the compiz desktop effects to see if it would help. It didn't. I tried using the ATI non-free drivers to see if it would help. It didn't. They long stopped supporting this video card (ATI Radeon Mobility M7 7500).</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> After removing the non-free drivers, I figured I would take a stab at hacking the xorg.conf file, but found none. Apparently they have stopped using it for the most part and hope that X knows what its doing. In my case it didn't. After researching a while, I found that you can still make your own xorg.conf, and place it in /etc/X11/ like normal and it will use that. I found the following xorg.conf file on a forum that someone else had made (sorry for not giving proper props, I don't remember where I found it) for an ATI Radeon Mobility M7 7500.</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><script src="http://pastebin.com/embed_js.php?i=Hi60L9Pw">
</script></span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">I believe the only part that actually made a difference was the line</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="color: #b6d7a8; font-family: Georgia, 'Times New Roman', serif;"><code>Option "AccelMethod" "EXA"</code></span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">At any rate, to hopefully fix this for you too, if you have a ATI Radeon Mobility M7 7500, all you have to do is fire up a terminal and type:</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="color: #b6d7a8; font-family: Georgia, 'Times New Roman', serif;"><code>gksudo gedit /etc/X11/xorg.conf</code></span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">if you are using Kubuntu, then you would use:</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="color: #b6d7a8; font-family: Georgia, 'Times New Roman', serif;"><code>kdesudo kate /etc/X11/xorg.conf</code></span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">I'm sure this would work with other distros, just change the command accordingly.</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> Once your text editor pops up, simply copy and paste the xorg.conf from above, and reboot your computer. Then be all happy with a much more responsive and cool system. I now run all sorts of Compiz desktop effects with no slowdown and haven't noticed my laptop running any hotter than normal. Note, this fix is for a Compaq Evo N610, with ATI Radeon Mobility M7 7500 graphics card. This may or may not work on other older ATI's, but I really have no idea. If this helped you out, please comment and let me know.</span><br />
<br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> </span>John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com0tag:blogger.com,1999:blog-873374391134593257.post-37749632558144010712009-08-15T07:51:00.002-04:002011-03-07T13:04:55.046-05:00Geek-A-Thon<span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"></span><br />
<div class="blog_entry_description"><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblSummary" style="font-family: Georgia, 'Times New Roman', serif;"></span></span><br />
<span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblSummary" style="font-family: Georgia, 'Times New Roman', serif;"> On August 15 a bunch of geek volunteers in Grand Rapids tried to make a difference by setting up laptops to give away to underprivileged folks in the area. I was one of those geeks.</span></span></div><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;">Okay, so I suck at this whole blogging thing. Here I am writing my blog almost a month after the fact. Anywho, <a href="http://ellohay.org/">Ellohay!</a>, a non-profit group in West Michigan dedicated to bringing technology education to the masses had an event August 15 to set up laptops for those that are less fortunate. The goal was to set up 100 laptops to be given away.<br />
<br />
</span></span><br />
<a name='more'></a><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;"><br />
I got there shortly after it had started, not really knowing what to expect. There were about 20 or so people gathered around laptops and milling about, eating the provided munchies (of which there was an excellent assortment). After signing in, I was given a raffle ticket, and a zip lock bag containing a USB drive with a customized Ellohay install of Ubuntu, instructions on the install, and an Ellohay! t-shirt and sticker. I got to keep the t-shirt and sticker, which was a nice touch! I then grabbed a laptop and got to installing. <br />
The install went really smooth (as Ubuntu installs usually do) except they accidentally left the last part off the instructions. The Ellohay! volunteers walking about were helpful and told us what to do though. After I had finished (it took a total of ~20 minutes), I went to grab another laptop, but they had all already been handed out. I don't know the exact number they had, but I think they had trouble getting the 100 donated laptops they were hoping for.<br />
With nothing else to do I milled about, and talked to John and Pat, that I knew from our Linux group, <a href="http://wmlug.org/">West Michigan Linux Users Group (wmlug.org)</a>. Ellohay then began a raffle at the top of every hour. They had neat prizes, mostly from <a href="http://makezine.com/">Make:</a> an awesome magazine for people with a DIY attitude, as I think they sponsored it quite heavily. They also had 4 Xbox 360s networked running Halo 3. I jumped on there for a little while, although Halo isn't really my bag. I'm more of a Call of Duty kind of guy myself. After getting pwned a few times I noticed they had a classic NES set up with the light gun and everything so I took a few minutes to hone my avian hunting skills. <br />
I noticed they were accepting applications for more full time volunteers to help teach people to use computers. I signed up, as I think I'm a fairly good teacher. I've taught Japanese to my friends and also taught my gramma to use her computer. After a while I bought another t-shirt and sticker, donated some money and left, being that there wasn't any more help I could provide and Kara had wanted me to help do some packing with her. All in all it was a really fun time and I plan on donating more money to the cause! Hopefully they will accept my volunteer application.</span></span>John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com1tag:blogger.com,1999:blog-873374391134593257.post-82922338306202123102009-07-08T15:15:00.004-04:002011-03-07T13:05:07.653-05:00VMware ESXi Configuration File Encoding Error<div class="separator" style="clear: both; text-align: center;"></div><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"></span><br />
<div class="blog_entry_description"><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblSummary" style="font-family: Georgia, 'Times New Roman', serif;"> Today I had an error while trying to start up a VM on VMware ESXi 4.0 in the vSphere client after moving it from an ESXi 3.5 server with the VMware converter. This is how I fixed it. I put it here in the hopes it will help someone else.</span></span><br />
<a name='more'></a></div><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;">First off, here is the error:<br />
</span></span><br />
<div align="center"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzWeAo9VIRIcmdmBFzcF4Wy8rtMZNUdGmS_GcPr8KoyE24lWZouF_YdGv3bmLPC3jlAySlFJUaFceGlfGhoYWY2EN8APGYUE-cp4H2bbpgP5MKiOhUqSl3EEceXnb8Mib-ATCUdStusQ/s1600/vmware_error.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><img border="0" height="86" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzWeAo9VIRIcmdmBFzcF4Wy8rtMZNUdGmS_GcPr8KoyE24lWZouF_YdGv3bmLPC3jlAySlFJUaFceGlfGhoYWY2EN8APGYUE-cp4H2bbpgP5MKiOhUqSl3EEceXnb8Mib-ATCUdStusQ/s400/vmware_error.jpg" width="400" /></span></a></div><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;"></span></span></div><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;"> File "/vmfs/volumes/xxxxx/ServerName/ServerName.vmx" line 63: File already has an encoding "UTF-8". Cannot open configuration file /vmfs/volumes/xxxxx/ServerName/ServerName.vmx.<br />
Now apparently the reason for this error is the way in which this VM was created. My VM started his life in VMware Server on my computer while I was testing. I then moved it to an ESXi 3.5 server after I figured it was ready. Now I am moving it to an ESXi 4.0 server. Sometime along the way, the config file had gotten two different encodings set for it, which causes it to panic. Anyway, lets get to fixing this. Don't worry its not too hard.<br />
In a nutshell, all you have to do is download the offending file, delete the offending line and upload it back to where you found it. If you want a more detailed explanation, keep reading.<br />
</span></span><br />
<ul><li><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;">In the vSphere client, select the ESXi server (Not your VM!) and click the 'Configuration' tab on the right. </span></span></li>
<span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;">
<li>On the left, under 'Hardware', select 'Storage'. This should show your datastores to the right.</li>
</span></span></ul><div class="separator" style="clear: both; text-align: center;"><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5LdkS0z78wSJjqTa5HS18KWOVPKTgkN36dZ0vd-NiI8F1WOlfKRPTRIPd7B0RqnvOXeqXa06rwYV2LdPjREnZhTyKFkHpkhMoUooVYO83swmPpJzZAgvQfdytVZ2piSuMpZ6ASjmQkw/s1600/vsphere_client.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5LdkS0z78wSJjqTa5HS18KWOVPKTgkN36dZ0vd-NiI8F1WOlfKRPTRIPd7B0RqnvOXeqXa06rwYV2LdPjREnZhTyKFkHpkhMoUooVYO83swmPpJzZAgvQfdytVZ2piSuMpZ6ASjmQkw/s1600/vsphere_client.jpg" /></a></span></span></div><div align="center"><div style="text-align: -webkit-auto;"><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span></span></div></div><ul><li><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;">Right-click on the datastore on the right that contains your VM and select 'Browse Datastore...'. This will bring up the Datastore Browser. </span></span></li>
<span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;">
<li>Double-click on the ServerName (where ServerName is the name of your server) folder. </li>
<li>Right-click on ServerName.vmx and select 'Download...'. Save it to some temporary spot on your computer. </li>
</span></span></ul><div align="center"><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span></span><br />
<div class="separator" style="clear: both; text-align: center;"><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj64rPIB5CBNcom5jG46He2FIJkVLp907SIJkdz6Qdu3hFxQlNZNfpNNrwNlup5tPV3yW8i-Z3pHZ6_9GiIM0jjvan27jZEUFoGPnmI7AHZzxa5ov6hAS3FF-q5lJDh-S7SAmsitiAsBg/s1600/datastore_browser.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj64rPIB5CBNcom5jG46He2FIJkVLp907SIJkdz6Qdu3hFxQlNZNfpNNrwNlup5tPV3yW8i-Z3pHZ6_9GiIM0jjvan27jZEUFoGPnmI7AHZzxa5ov6hAS3FF-q5lJDh-S7SAmsitiAsBg/s1600/datastore_browser.jpg" /></a></span></span></div><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span></span></div><ul><li><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;">Open this file in your favorite text editor (I use <a href="http://www.scintilla.org/SciTE.html">SciTE</a>. It's awesome, free and multi-platform) that supports Linux text files. (Linux and Windows use different newline characters) </span></span></li>
<span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;">
<li>Find the offending line and delete it. It should be something along the lines of: .encoding = "windows-1252" </li>
<li>Save the file. </li>
<li>Back at the Datastore Browser, click on the button that looks like a stack of coins with an up arrow and select 'Upload File...'. </li>
<li>Upload the file you made changes and enjoy a fully functional VM again. </li>
</span></span></ul><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;"> If this helped you out at all, please leave me a comment and let me know.</span></span>John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com3tag:blogger.com,1999:blog-873374391134593257.post-81606847329428186292009-02-09T19:02:00.003-05:002011-03-07T13:24:19.280-05:00I'm Engaged!<span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"></span><br />
<div class="blog_entry_description"><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblSummary" style="font-family: Georgia, 'Times New Roman', serif;"> The story of my engagement night. :-)</span></span><br />
<a name='more'></a></div><span class="DNNAlignleft" id="dnn_ctr781_ContentPane" width="100%"><span id="dnn_ctr781_MainView_ViewEntry_lblEntry" style="font-family: Georgia, 'Times New Roman', serif;"> When we were planning our family trip to Walt Disney World last year, Kara really wanted to eat at a 5-star restaurant. I had told her that it would most likely cost over $100 a plate. I'm not sure if she didn't believe me or what, but once it came time to make our reservations I showed her the menu prices for the one 5-star restaurant in the Orlando area, Victoria & Albert's, which is at the Grand Floridian Resort in Walt Disney World. It cost $125 + $65 for the wine pairing with each course. Kara quickly figured that it would not be in her Disney budget to go to Victoria & Albert's. A week later I decided to pony up and make reservations for us without telling her. I thought it may be a good time to propose. I had it in my head that I was going to pop the question while I was in Disney when we started planning the vacation, but didn't have the details planned yet. Along the course of the months that followed I nan-chalantly asked Kara what dress she would have worn had we gone to the 5-star restaurant. I noted her response and a week before we left, I stole it from her wardrobe. <br />
I met with my mom and sister at my mom's house with dress in hand and we put it on a sewing mannequin my mom has. After hugging it and cuddling with it I figured it was pretty close to Kara's dimensions. We picked out jewelry to match the dress, but we were all a little worried that the dress may be a little snug. A few days later my sister and I went to Deb and I bought a backup dress. It looked better than the one she wanted to bring anyway.<br />
Once we had my suit, my shoes, her dress, some shoes we picked out for her and the jewelry all together we put it all in a garment bag and gave it to my brother to pack in the car before we left. He put it in before he picked Kara up, so she just figured it was his bag.<br />
On Wednesday, January 28th we were at the Animal Kingdom. Right after breakfast my mom wasn't feeling well, so she went back to the hotel, after trading cameras with me, so I would have her really nice camera for 'the big moment'. She went back to the hotel room and laid out all our clothes and jewelry and washed and ironed my shirt. Around three, I told Kara we needed to head back to our resort to see the Villians & Animals show, which I had made up. I told her it was a show with animals that do stunts with people dressed up as Disney villians. Imagine Jafar with trained tigers or something. I told her we needed to leave pretty early, because the parade at the Animal Kingdom would start soon and block our exit. I then said we could take a nap in the hotel room while we waited for the show to start. She sounded very relieved as she was getting pretty tired after being in Disney for 5 days.<br />
Once I opened the door to our room, Kara saw all our clothes laid out and said, "This isn't our room." I then told her there was no Villians & Animals show and that I was taking her to Victoria & Albert's for her Christmas gift. She was very excited and kind of in shock. <br />
<a href="javascript:void(0);/*1245092974639*/"><img align="right" alt="Waiting for the bus" border="0" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/waiting_for_the_bus.jpg" /></a> After we got all gussied up, we took the bus to the Magic Kingdom, and then the monorail to the Grand Floridian Resort, where Victoria & Albert's is. We had a little trouble with the transportation and ended up being ~15 minutes late. We were pretty worried that they wouldn't let us eat, but they never said anything about it. We were both pretty nervous at first, because neither of us had ever eaten at such a nice restaurant.<br />
The restaurant was much smaller than I had imagined and very dimly lit, probably to be more romantic or whatever. We had a waiter and a waitress helping us the whole time, although I couldn't tell the difference between their jobs. It was really weird having someone take your chair out and push it in for you. They also put our napkins on our laps, which just seemed odd. Our waitress explained what each dish was and where all the different parts of it came from. It was nice, but it got kind of old after a while. For each course we had two or three options. The food was amazing and we took pictures of each of the seven courses we ate.<br />
<a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c2_full.jpg" target="_blank"><img alt="Both - Course 2 - Buffalo" border="0" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c2_buffalo.jpg" /></a> <a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c3_tuna_full.jpg" target="_blank"><img alt="John - Course 3 - Scallions" border="0" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c3_scallions.jpg" /><img alt="Kara - Course 3 - Tuna" border="0" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c3_tuna.jpg" /></a> <a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c4_duck_full.jpg" target="_blank"><img alt="Kara - Course 4 - Duck" border="0" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c4_duck.jpg" /></a> <a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c5_elk_full.jpg" target="_blank"><img alt="John - Course 5 - Elk" border="0" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c5_elk.jpg" /></a> <a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c5_veal_full.jpg"><img alt="Kara - Course 5 - Veal" border="0" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c5_veal.jpg" /></a><br />
We got the wine pairings with each of the courses, which I was very glad for. Kara wasn't drinking fast enough to match each wine with her course, so I ended up downing hers too, which helped calm my nerves. Needless to say, I was getting a little nervous, knowing I was going to propose in just an hour or two. Our waitress also explained in detail each of our wines and where they came from, but I didn't really care. Wine tastes like wine to me.<br />
<a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c6_cheese_full.jpg" target="_blank"><img alt="Kara - Course 6 - Cheese" border="0" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c6_cheese.jpg" /></a> <a href="http://.wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c7_bananas_full.jpg" target="_blank"><img alt="John - Course 6 - Gelato" border="0" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c6_gelato.jpg" /><img alt="John - Course 7 - Bananas" border="0" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c7_bananas.jpg" /></a> <a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c7_dessert_full.jpg" target="_blank"><img alt="Kara - Course 7 - Dessert" border="0" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/va_c7_dessert.jpg" /></a><br />
<a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/strange_coffee_machine_full.jpg" target="_blank"><img align="left" alt="Strange Coffee Machine" border="0" height="250" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/strange_coffee_machine.jpg" width="188" /></a> We decided to get coffee with our dessert, because I had heard the coffee was cool. And it was. When we started our dessert, they brought out this glass contraption with two glass bulbs. The top one was filled with coffee grounds and the bottom one had the water. Underneath the water, our waiter lit an oil candle, which boiled the water and made it go up a tube to the bulb with the coffee grounds. After a while he came back and blew out the candle and the water started getting sucked back down to the lower bulb. It was a pretty neat contraption. When we were done eating our waiter gave Kara a rose and left us with fancy cookies and a breakfast cake for the next morning.<br />
After tax, tip and everything the dinner ended up being $500 for the two of us. I can't really say if it was worth it or not, because I don't go to fancy restaurants often, but I don't regret it. The food was simply amazing. There were all these different tastes to each course which made me excited for the next one. Even though the portions were absolutely tiny, I left stuffed after 7 rounds. <br />
<a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/fireplace_room_full.jpg" target="_blank"><img align="right" alt="Both of us in the fireplace room at Victoria & Albert's" border="0" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/fireplace_room.jpg" /></a> After dinner our waitress took a few photos of us around the restaurant, which I thought was nice. I then told Kara that there was a beach at the resort and asked if she wanted to go take some pictures at the fancy resort. We walked around snapping pictures left and right and I kept trying to get closer to Cinderella's castle, because I knew there was a dock with the castle behind it, and that is where I was planning on doing the deed. After a while we found the dock and snapped a few more pictures. I then kind of stalled, because I wanted someone to take our picture when I was on one knee. <br />
<a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/fountain_full.jpg"><img alt="Killing time taking pictures" border="0" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/fountain.jpg" /></a><br />
<a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/just_before.jpg" target="_blank"><img align="right" alt="Getting ready..." border="0" height="225" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/just_before.jpg" width="300" /></a> After a few minutes, an older guy started walking down the dock and I ran up to him and asked if he would take our picture. I then told him what was going on and he seemed kind of excited. He took a couple pictures and then I looked at them and I was supposed to put the camera into sport mode here, so when he held the button down it would take a whole bunch of photos, but I was a little nervous and forgot. I then told him the cue "lets try just one more" and went back to Kara. <br />
<a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/proposing_full.jpg" target="_blank"><img align="left" alt="Proposing..." border="0" height="300" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/proposing.jpg" width="400" /></a> Now, when I had this all planned out in my head, I had figured that this guy would be really far away from us and have the camera zoomed in and whatnot, but in actuality, he had to be only about 15 feet from us to take a good picture. I started shaking so bad you might of thought I had epilepsy or something. I got down to one knee and whipped out the ring, fearful I was going to drop it into the black water. My eyes started tearing up pretty bad and I presented the ring. I had a big speech planned out, but I could hardly speak I was so overcome with emotion, so I cut it really short. She of course said yes and we held eachother, both crying and tremblying, saying "I love you" to eachother repeatedly. <br />
I then remembered that the guy was still over there holding my mom's camera, so I went and got it from him and thanked him. I was so happy that it all worked out and she was completely surprised. I hadn't told any of my friends I was doing any of this and it felt good to finally have it all out in the open and done.<br />
<a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/empty_ttc_full.jpg" target="_blank"><img align="right" alt="Notice how there is no one in the TTC?" border="0" height="188" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/empty_ttc.jpg" width="250" /></a> We both really needed a cigarette again then and were searching for a place to smoke. I texted my whole family (who were eagerly awaiting a response back at the hotel) and told them she said she'd have to think about it, being the sneaky devil that I am. We walked all around the Grand Floridian and didn't see anywhere, so we just kept walking to the Polynesian, which is right next to it and smoked on the path. Between the two resorts is, uncannily, the wedding pavillion. Once we got to the Polynesian we got all turned around in their gardens and whatnot, but finally made it to the monorail platform. About then I decided to text my family back and tell them the truth. From there we decided to go to the transportation and ticket center and get a bus back to our resort. We didn't realize that the TTC closes a couple hours after the Magic Kingdom and that it doesn't have any busses anyway. On the monorail a woman sitting behind us noticed Kara looking at her ring and talking about it. She asked if we were just engaged and she seemed very excited and congratulated us.<br />
<a href="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/at_the_polynesian_full.jpg" target="_blank"><img alt="On the monorail" border="0" height="201" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/on_the_monorail.jpg" width="278" /><img alt="At the Polynesian" border="0" height="201" src="http://wesorick.com/Portals/John/Pictures/Blog/Engagement/at_the_polynesian.jpg" width="232" /></a><br />
We finally tracked down a worker who explained we would have to walk to the Polynesian, and take a bus to Downtown Disney and then another bus to the Coronado Springs. By now Kara's feet were killing her, because her strappy sandals were definately not made for walking in, so she started walking barefoot on our way to the Polynesian. We then walked right on by the bus stop to the valet and another worker pointed us back in the right direction. Luckily we didn't have to wait for the bus too long. <br />
The ride to Downtown seemed to take forever. Once we got there we hopped on another bus to Coronado which was packed. We had to stand up the whole time. Halfway back, we noticed the lady behind us was the same lady from the monorail. She threatened to tell everyone on the bus and embarass us, but luckily she didn't. We were both dead tired after our journey home.<br />
Jess was sleeping when we got back so Kara jumped on top of her and told her the news. My dad came in from his room (they had the cool adjoining door) and brought us wine and beer to celebrate. I guess when I texted them the first time they were walking out of the liquor store with the wine. I bet they felt kind of weird. My dad congratulated us and him and my mom welcomed Kara to the family and we went to bed, knowing we will be together forever.</span></span>John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com0tag:blogger.com,1999:blog-873374391134593257.post-32118833744115968632008-12-16T16:42:00.002-05:002011-03-07T13:06:00.428-05:00McDPF - My First Multi-Developer Open Source Project!<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> I've started helping out on an open-source project! Woohoo!</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<a name='more'></a><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> A few months ago I turned an old laptop into a digital picture frame. I installed a version of Linux called "Damn Small Linux" and then McDPF on top of it (both DSL and McDPF are open source :-) ). McDPF isn't exactly a program, but more a series of scripts that makes it easy to install the right programs on a laptop with DSL and some PHP to make it easy to administer. I was very impressed with how easy it was to turn an old laptop into a DPF using McDPF.</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> After noticing that the single developer in charge of McDPF was having trouble making updates and getting bugs worked out I decided to help. I told the lead developer I wanted to help and would do anything needed to improve the McDPF project., whether it be testing, programming, designing a new website, etc. Last week I officially became a developer on the McDPF project. Woot woo!</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> So far I've been working on pogramming and troubleshooting. It is nice getting to learn a new language. I have never programmed in PHP before, but I'm picking it up very quickly. I almost have my first contrbution done. It is a scheduler page that you access from any PC in your house. On it you can set up your digital picture frame to do certain tasks at certain times. This makes it so you can turn the screen on and off according to when people will actually be able to see it, display the days weather or anything else you can think of. It parses the crontab (the Linux equivalent of Scheduled Tasks) for all McDPF entries and displays them on the webpage where you can easily edit or delete them and add new tasks. Its been fun so far getting to dig into something new and learn from some hands on experience.</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"> I don't really have much more to say, I just wanted to share my good news. If you have an old laptop laying around, toss McDPF on it and turn it into a digital picture frame. I can assure you, the project will only get better from here!</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;">-John</span>John Wesorickhttp://www.blogger.com/profile/09131376861666358136noreply@blogger.com0