1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
#!/usr/bin/perl -U
#$Id: disktemp,v 1.1 2004/11/01 00:22:48 rogerms Exp $
########################################################################
# Copyright (c) 2004 Roger Seguin <roger_seguin@msn.com>
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
########################################################################
#Description:
# This simple Perl script (could be more secure) gets the temperature of the
# given disk (parameter) using smartd (smartmontools) and prints it on the
# standard output.
# This program needs to be run as root (setuid)
#Usage (example):
# disktemp /dev/hda
use strict;
$ENV{"PATH"}="";
delete @ENV{qw(IFS CDPATH ENV BASH_ENV)};
my $disk = "$ARGV[0]";
my $uid = 0;
if (($< = $uid) != $uid) {
print (STDERR "setuid($uid): $!\n");
exit (-1);
}
my $TempDetails =
`/usr/sbin/smartctl -A "$disk" | /bin/grep Temperature_Celsius`;
my $Temp_C;
$_ =
`/usr/bin/printf "$TempDetails" | /usr/bin/awk '\{ print \$10 \}'`;
s/\n//g;
$Temp_C = $_;
if ("$Temp_C" ne "") {
$Temp_C = "$Temp_C" . " C";
}
print "$Temp_C\n";
exit (0);
#$Log: disktemp,v $
#Revision 1.1 2004/11/01 00:22:48 rogerms
#Initial revision
#
#Revision 1.1 2004/08/27 23:14:21 RogerSeguin
#Initial revision
#
#Revision 1.2 2004/08/27 21:36:14 RogerSeguin
#Added description
#
#Revision 1.1 2004/08/23 11:15:25 RogerSeguin
#Initial revision
#
|