Hi monks,i am quite new in perl programming (only 2 weeks learning)and i have a question about my script, the idea is that the script prints some things about a choosen filesystem and gives the avalible space, the used space, the type, etc.
All sounds good, but when I run my script it returns a error ("Illegal division by zero at analizer (16-1-17).pl line 35, <STDIN> line 1.") and I dont know how to fix it or what is working bad, the code is this: (NOTE: I am spanish so i write the comments in my lenguaje, sorry if u dont understand it but i dont think is necesary a traduction)
#!usr/bin/perl
#solo funciona para unix/linux/solaris(solaris ni idea)
#si da el error "Undefined subroutine &main::SYS_statfs called at
+Filesys/DiskSpace.pm at line XXX", editar syscall.ph
# (en el perl lib tree) y copiar la linea "SYS_statfs {196;}" fuer
+a del "if (defined &__hp9000s800)" (alrededor de la linea 356)
use strict ;
use warnings ;
use Filesys::DiskSpace ;
use POSIX ;
#sistema de archivos/particion a comprobar espacio
#sacar fecha ;
my $TIME = strftime("%d/%m/%Y %H:%M:%S", localtime(time) ) ;
print "+----------+---+----------+\n" ;
print "+Script made up by 0uts1de+\n" ;
print "+----------+---+----------+\n" ;
print "Today is $TIME \n" ;
print "Write the filesystem/partiton you want to monitor, for exam
+ple /home or /usr \n" ;
my $monit = <STDIN> ;
chomp $monit ;
print "##warning level is by default about a 20 % of free space, i
+f u want to change this##\n" ;
print "##change the variable warn in the script with a editor like
+ vim or gedit ##\n" ;
########## warn string ############
my $warn = 10 ;
###################################
#consegir caracteristicas de la particion/filesystem (raw)
my ($fs_type, $fs_desc, $used, $avail, $fused, $favail) = df $moni
+t ;
my $monit_percentual = ( $avail / $avail+$used ) * 100 ;
my $final_used = $used / 1000 ;
my $final_avail = $avail / 1000 ;
print "$monit is a $fs_type filesystem who has $final_used space u
+sed (in MB) and $final_avail of avalible space (in MB too) \n" ;
#comparacion con el porcentaje de $monit_percentual
if ($monit_percentual < $warn) {
print "Less of the $warn % of the space of the filesystem
+$monit is avalible for use, consider uninstall unused software \n" ;
}
elsif ($monit_percentual eq $warn) {
print "Be carefull, exactly the $warn % of the space of $m
+onit is usable, consider uninstall unused software \n" ;
}
else {
print "There is a $monit_percentual % of avarible space of
+ the disk \n" ;
}
In the imput I have the error and the rest, here is:
+----------+---+----------+
+Script made up by 0uts1de+
+----------+---+----------+
Today is 16/01/2017 16:31:04
Write the filesystem/partiton you want to monitor, for example /home o
+r /usr
/
##warning level is by default about a 20 % of free space, if u want to
+ change this##
##change the variable warn in the script with a editor like vim or ged
+it ##
Illegal division by zero at analizador de filesystem (16-1-17).pl line
+ 35, <STDIN> line 1.
Thanks in advance!