At work, I admin a half dozen or so different Oracle servers, and sometimes it's a pain to try and remember which particular DB is on which machine, so I wrote a small script to allow me to RDC to the correct machine given a DB name. Using wperl.exe rather than perl.exe gets rid of the console window opening up when you run it.
#!C:\perl\bin\wperl.exe -w
use strict;
use warnings;
use Win32::Process;
use Tk;
my $mw = MainWindow->new;
$mw->Label(-text => 'Oracle DB:')->pack;
my $db = $mw->Entry(
-width => 20,
)->pack;
$db->bind('Tk::Entry', '<KeyPress-Return>', \&connect);
$db->bind('Tk::Entry', '<KeyPress-Escape>', sub { exit });
$db->focus;
my $message = $mw->Message(-justify => 'center', -text => '')->pack;
MainLoop;
sub connect {
my $dbname = $db->get;
my ($server) = `tnsping $dbname` =~ /HOST=([^)]*)/;
if (defined $server) {
my $ProcessObj;
Win32::Process::Create($ProcessObj,
"c:\\winnt\\system32\\mstsc.exe",
"mstsc /v:$server",
0,
NORMAL_PRIORITY_CLASS,
".")|| die ErrorReport();
exit;
} else {
$message->configure(-text => "The database \"$dbname\" can't b
+e found");
}
}
sub ErrorReport {
print Win32::FormatMessage( Win32::GetLastError() );
}