Archive for Scripts & Utilities
Dell Openmanage Server Administrator (OMSA) Email Alerts for Linux
Posted by: | CommentsEarlier this year I posted a script which sends email alerts from Dell servers using the alerting system built into Dell Openmanage. However, that script will only work on Windows systems.
A visitor to the blog called Steve has kindly posted some code on that post which enables the same functionality in Linux and I think it is worthy of its own post.
Before attempting to use the script you will need to download this perl script called sendEmail and that you have unix2dos installed.
The script accepts two arguments, which are setup or show.
“setup” will set the alerts action to the value of $alert_script which should be the full path to the script itself.
“show” will print the current alert settings for the system to the screen.
The code of the script is as follows, or you can download from here:
#!/usr/bin/perl
########
#
# Alter these setting to suit your system
$alert_script='/opt/asx_scripts/send_alert.pl';
$argument = 0;
$argument = $ARGV[0];
$omreport = '/opt/dell/srvadmin/bin/omreport';
$omconfig = '/opt/dell/srvadmin/bin/omconfig';
$sendemail = '/opt/asx_scripts/sendEmail';
$toname = 'name';
$fromname = 'name';
$domain = 'domain.com';
$tmp_path = '/tmp';
$mail_gateway = 'ip or name of mailgate';
$unix2dos = '/usr/bin/unix2dos';
#
#
if("$argument" eq "setup"){
set_available_alerts();
exit;
}
if("$argument" eq "show"){
display_set_alerts();
exit;
}
if("$argument" eq "help"){
print "If you need some help read the code\n";
exit;
}
unless($argument){
$desc=`$omreport system alertlog 2>/dev/null | grep "Description" | head -1 | cut -f2-9 -d: | sed 's/ //'`;
chomp($desc);
$date=`$omreport system alertlog 2>/dev/null | grep "Date and Time" | head -1 | cut -f2-9 -d: | sed 's/ //g' | sed 's/://g'`;
chomp($date);
$host=`$omreport system summary 2>/dev/null | grep "Host Name" | head -1 | cut -f2-9 -d: | sed 's/ //'`;
chomp($host);
$tag=`$omreport system summary 2>/dev/null | grep "Chassis Service Tag" | head -1 | cut -f2-9 -d: | sed 's/ //'`;
chomp($tag);
$attach="$tmp_path/$date.log";
`$omreport system alertlog > "$attach"`;
if( -f "$unix2dos"){
`$unix2dos "$attach" 2>/dev/null`;
}
$send=`$sendemail -f "$fromname\@$domain" -t "$toname\@$domain" -u "System Error: $host SvcTag: $tag Time: $date" -m "$host SvcTag: $tag Error: $desc Time: $date" -a "$attach" -s "$mail_gateway"`;
}else{
print "If you need some help read the code\n";
exit;
}
sub set_available_alerts {
$alert_list = `$omconfig system alertaction 2>/dev/null | cut -f2 -d"<" | cut -f1 -d">"`;
chomp($alert_list);
chomp($alert_list);
@split_alert_list = split(/\|/, $alert_list);
foreach my $alert (@split_alert_list){
$set_result = `$omconfig system alertaction event=$alert execappath="$alert_script" 2>/dev/null | head -1`;
chomp($set_result);
if("$set_result" eq "Alert action(s) configured successfully."){
print "Set Action:\t$alert\n";
}else{
print "ERROR Set didnt return expected value ($set_result)\n";
}
}
}
sub display_set_alerts {
$currently_set = `$omreport system alertaction`;
print "$currently_set\n";
}
exit;
A good way to test the script is to temporarily set the “Temperature Maximum” to something low like 12 to trigger an alert.
Unfortunately all of my Linux machines are virtual machines so I cannot test or modify this script, so if anyone wants to give me SSH access to a server running OMSA, be my guest.
Again, big thanks to Steve for posting this and I am sure it will be useful to lots of people. This has also inspired me to make some improvements to my original Windows version.
Simple GUI for Linksys SPA 962 / SPA942 / SPA941 Personal Directory
Posted by: | CommentsUpdated Version now available: http://www.tachytelic.net/2011/01/updated-linksys-spa-personal-directory-manager/
We’ve been using the Linksys SPA942 handsets for a while and they have worked very well for us. One of the major annoyances for us and others is the inability to populate the personal directory automatically.
I’ve read a number of posts on how to use wget to issue to personal directory to the phone via a HTTP post and this seemed like a good solution. In particular this post and this post inspired me to see if I could create a solution using the same technique in VB.Net.
So I have put together a simple program which will allow you to load/save a personal directory to/from a tab delimited file or handset. There are loads of enhancements that could be made in order to make the application more sophisticated but this is really a first attempt, so please report any problems. You will need .net framework 3.0 to run the tool. I’ll put the project into a proper setup file if it is sufficiently popular.
Here is a screenshot of the utility:
Download the program from the newer post :
http://www.tachytelic.net/2011/01/updated-linksys-spa-personal-directory-manager/
I’m using firmware version 6.1.5a, I’d be interested to hear if this does/does not work on other versions or if anyone has any suggestions for enhancements.
This is also a great way to backup/restore your Linksys SPA handset – I factory reset my handset and this much easier than re-entering all the personal directory.
Automated and conditional reboots of Draytek routers via telnet
Posted by: | CommentsThis is a script that I posted to the Draytek forum a couple of years ago, I noticed that it has been a very popular post so I have decided to post here also.
The function of the script is to perform scheduled reboots of Draytek routers. Optionally is it possible to reboot the router only if a specified IP address does not respond to a ping request. This is useful to test if a VPN connection is functioning, and only reboot the router if there is no response.
Early Draytek firmwares had a tendancy to lose VPN connectivity and a reboot is the only way to restore the connection.
First of you need to install the Toolsack Baseline components for this script to work:
http://www.toolsack.com/download/
The script needs to be supplied with parameters, so a typical command line would look like this:
cscript reboot.vbs 86.11.93.131 routerpassword
and a conditional command line would look like this:
cscript reboot.vbs 86.11.93.131 routerpassword 192.168.1.254
The 3rd argument will be tested for a ping response, if none is received then a reboot will be executed.
Here is the code, save it as reboot.vbs:
set args=wscript.arguments
If wscript.arguments.count=2 then
IP=args.item(0)
Password=args.item(1)
call reboot(IP,Password)
elseif wscript.arguments.count=3 then
IP=args.item(0)
Password=args.item(1)
TestIP=args.item(2)
if ping(TestIP)=False then
call reboot(IP,Password)
end if
else
wscript.echo "Invalid number of arguments specified"
wscript.echo "Please specify router IP address & password and optional test IP"
end if
sub reboot(IP, Password)
set s = CreateObject("Toolsack.Socket")
s.Connect IP, 23
s.Write Password & vbCrLf
s.write "sys reboot" & vbcrlf
s.write "quit" & vbcrlf
end sub
Function Ping(strHost)
dim objPing, objRetStatus
set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select * from Win32_PingStatus where address = '" & strHost & "'")
for each objRetStatus in objPing
if IsNull(objRetStatus.StatusCode) or objRetStatus.StatusCode<>0 then
Ping = False
else
Ping = True
end if
next
End Function
New-ExchangeCertificate Cmdlet Syntax Generator
Posted by: | Comments
I am always forgetting the syntax for the New-ExchangeCertificate cmdlet when I need to do a new certificate request so I decided to write a little bit of javascript to build up the command automatically. Its much easier to copy and paste it from here than work with in it the Exchange 2007 Command Shell.
So just fill in the fields below and the command will be built automatically in the box below. Then just copy into command shell. If required, seperate the “Subject Alternative Names” with commas.
|
Common Name: |
|
| Subject Alternative Names: | |
| Organisation: | |
| Organisational Unit: | |
| Town/City: | |
| County/State: | |
| Country: |
CSR Command:
I am thinking of duplicating this code and writing another post which will generate the commands for the import of the newly generated certificate.
