Tuesday, May 17, 2011

Windows Shutdown VBScript

A friend of mine asked me to help figure out why her shutdown script was not working. For those who don't care to read that whole article, it looked something like this:

@echo off
echo Scheduling shutdown in 1.5 hours.
shutdown.exe /h /t 5400

As it turns out, you can't actually use /h with /t. (Although /s works fine with /t) My solution was to learn some VBScript and kill the problem with excessive firepower! All you need to do is type the following code into an editor and save it as a *.vbs file. (I called mine Hibernate.vbs) I placed it right on the desktop for quick access.

hours = 0.001 'Specify the # of hours to sleep here
seconds = hours * 60 * 60
ms = seconds * 1000

Set wshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo("Hibernate in " & seconds & " seconds")
WScript.Sleep(ms)
cancel = wshShell.Popup("Cancel Hibernate?", 10, "System Shutdown!", VbYesNo + VbExclamation)
If cancel = VbYes Then
  WScript.Quit(0)
End If
wshShell.Run("shutdown.exe /h")

This script will inform the user that hibernation will occur. Once the user presses OK then it will wait the specified number of hours before re-informing the user that hibernation is happening. If the user doesn't respond or opt to cancel, then the script continues and the computer is sent into hibernation.

Wednesday, April 20, 2011

Testing Google Code Prettifier

Stumbled across a code prettifier that can be used for blogger from google code.

You can set it up for yourself. Here is a link to the stackoverflow page that outlines the setup.


#!/bin/perl
#simple test code

$variable = "Test stuff";
$another = 100;
$decimal = 99.9;
$special = 1x01;

print("Prettify me! %s", $variable);

Sunday, March 6, 2011

VM - Speeding Up A Linux Guest

Recently I was having an issue with a my CentOS guest running slowly in VirtualBox. Evidently this has something to do with the interrupt checking interval of the Linux system being at 1GHz.

To force the guest to use an interrupt check at only 100Hz, the divider=10 kernel option should be set.

Follow these steps:
  • Use the root account (su)
  • Edit the /boot/grub/grub.conf file
  • add "divider=10" to the end of the kernel line
Here is a sample of the modified grub.conf.
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.32.1.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.32.1.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet divider=10
initrd /initrd-2.6.18-194.32.1.el5.img
title CentOS (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet divider=10
initrd /initrd-2.6.18-194.el5.img

You can use cat /proc/cmdline in order to check if it took.
~ $ cat /proc/cmdline
ro root=/dev/VolGroup00/LogVol00 rhgb quiet divider=10

Saturday, July 24, 2010

How to: 2 (or more) Router Networking

There are a lot of great places online to read about subnets and routing. It's worth a quick read, and the information is consistently repeated everywhere. There isn't however a whole lot on how to set up a network with two routers or on using subnets.

Here is what I figured out after a long night of toying with things:
  • If you want to use two routers in a network, just connect the WAN port of the second router into a LAN port on the first one.
Simple right? I can't believe it took me so long to figure this simple concept out. But before you go just plugging routers into one another, you have to take some initial steps to ensure they play nicely. Here they are:
  • Make sure your routers are using different subnets/assigning different (unique) IP ranges.
    (Mine use 192.168.1.1 and 192.168.0.1 with subnet mask 255.255.255.0)
  • Make sure you understand subnet masking to some small extent.
  • Draw up how you want your network to behave/look before you get started. This is often a good idea for larger more complex networks.
  • Make sure there is no contention between wireless and other network settings. (i.e. turn off or reconfigure wireless to be different across the hardware.)
  • Assign all secondary hardware with static IP's in the range of the primary. (Obviously don't use an IP already in use like 192.168.1.1)
Once you've set up two routers to map hosts on two different subnets, it's time to link them together. Plug the WAN port of your secondary router (Mine was subnet 0) into a LAN port of your primary (subnet 1). The network on your secondary router should now be able to reach the internet and also network hosts on your primary router.

However, if you want the hosts on subnet 1 to see subnet 0 then you need to set up a small and simple routing rule on the primary router. The routing rule looks something like this:

DestinationSubnet MaskGateway
192.168.0.1255.255.255.0192.168.1.2

Where 192.168.1.2 is the external (static) IP of subnet 0, the secondary router. The internal IP of subnet 0 is still 192.168.0.1. And with this new routing rule you can now access it from the primary network.

Happy Routing!