elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Temas
Páginas: [1]
1  Programación / Scripting / Ayuda con un script [PERL] en: 16 Enero 2017, 16:53 pm
Hola a todos, programando en perl como suelo hacer casi siempre ultimamente (ya soy un poco mejor que la ultima vez que pregunte por aqui) me ha salido un problema del que no se salir.
Mi idea era crear un script que leyera el espacio del sistema de archivos que se quiera (solo funciona en linux por teams de modulos y tal), que diga el tipo de fs, elespacio restante, el usado, y avisara en caso de que hubiera menos espacio libre que un tanto porciento (en el script es un 10).
Todo suena muy bien y me pongo a programar:
Código:
Código
  1.  
  2. #!usr/bin/perl
  3. #solo funciona para unix/linux/solaris(solaris ni idea)
  4. #si da el error "Undefined subroutine &main::SYS_statfs called at Filesys/DiskSpace.pm at line XXX", editar syscall.ph
  5. # (en el perl lib tree) y copiar la linea "SYS_statfs {196;}" fuera del "if (defined &__hp9000s800)" (alrededor de la linea 356)
  6. use strict ;
  7. use warnings ;
  8. use Filesys::DiskSpace ;
  9. use POSIX ;
  10. #sistema de archivos/particion a comprobar espacio
  11. #sacar fecha ;
  12. my $TIME = strftime("%d/%m/%Y %H:%M:%S", localtime(time) ) ;
  13. print "+----------+---+----------+\n" ;
  14. print "+Script made up by 0uts1de+\n" ;
  15. print "+----------+---+----------+\n" ;
  16. print "Today is $TIME \n" ;
  17. print "Write the filesystem/partiton you want to monitor, for example /home or /usr \n" ;
  18. my $monit = <STDIN> ;
  19. chomp $monit ;
  20. print "##warning level is by default about a 20 % of free space, if u want to change this##\n" ;
  21. print "##change the variable warn in the script with a editor like vim or gedit ##\n" ;
  22. ########## warn string ############
  23. my $warn = 10 ;
  24. ###################################
  25. #consegir caracteristicas de la particion/filesystem (raw)
  26. my ($fs_type, $fs_desc, $used, $avail, $fused, $favail) = df $monit ;
  27. my $monit_percentual = (  $avail  /  $avail+$used  ) * 100 ;
  28. my $final_used = $used / 1000 ;
  29. my $final_avail = $avail / 1000 ;
  30. print "$monit is a $fs_type filesystem who has $final_used space used (in MB) and $final_avail of avalible space (in MB too) \n" ;
  31. #comparacion con el porcentaje de $monit_percentual
  32. if ($monit_percentual < $warn) {
  33.        print "Less of the $warn % of the space of the filesystem $monit is avalible for use, consider uninstall unused software \n" ;
  34. }
  35. elsif ($monit_percentual eq $warn) {
  36.        print "Be carefull, exactly the $warn % of the space of $monit is usable, consider uninstall unused software \n" ;
  37. }
  38. else {
  39.        print "There is a $monit_percentual % of avarible space of the disk \n" ;
  40. }
  41.  
Pero ahora viene mi duda, y es que de imput recibo este error y despues de varias horas rascandome la cabeza sigo desconociendo proqué se produce:
Codigo:
Código
  1. +----------+---+----------+
  2. +Script made up by 0uts1de+
  3. +----------+---+----------+
  4. Today is 16/01/2017 16:31:04
  5. Write the filesystem/partiton you want to monitor, for example /home or /usr
  6. /
  7. ##warning level is by default about a 20 % of free space, if u want to change this##
  8. ##change the variable warn in the script with a editor like vim or gedit ##
  9. Illegal division by zero at analizador de filesystem (16-1-17).pl line 35, <STDIN> line 1.
  10.  

(el / que se ve en la linea 6 de la salida es mi input, ya que queria probar con el sistema de archivos /)
Como ya dije en mi anterior post, gracias por adelantado :D
2  Programación / Scripting / Ayuda con un script perl: en: 13 Diciembre 2016, 18:41 pm
Hola, os pido ayuda porque soy nuevo en perl e intentando hacer un codigo no funciona y no se porque, antes de empezar, gracias por leer esto, y si eso gracias por la ayuda!!  :)

Empezemos:

He intentado crear un codigo que te pregunta por 2 numeros de autentificación, para luego decirtelos junto a tu nombre, es muy sencillo pero era solo para practicar los "until", lo que lleva until dentro es para comprobar si es un numero, y es alli donde falla,ya que da igual si es numero o no que lo deja pasar, y como no se porque falla aqui estamos!, este es el codigo:
Código:
#!usr/local/bin/perl

print "\n" ;

print "recuerde los numeros que escriba, seran preguntados luego\n" ;

print "--------------------------------------\n" ;

print "introduzca sus numeros de identificación : " ;

$num1 = <STDIN> ;

chop $num1 ;

until ( $num1 = ~ /^[+-]?\d+$/ ) {

print "no es un numero,porfavor, escribe un numero:\n" ;

$num1 = <STDIN> ;

chop $num1 ;

}

print "perfecto, sigamos el proceso....\n" ;

print "ahora introduce otro: " ;

$num2 = <STDIN> ;

chop $num2 ;

until ( $num2 = ~ /^[+-]?\d+$/ ) {

print "no es un numero, porfavor escriba uno\n" ;

$num2 = <STDIN> ;

chop $num2 ;

}

print "perfecto, sige mas porfavor...\n" ;

print "introduce tu nombre: " ;

$nom = <STDIN> ;

chop $nom ;

print "vale, ahora reintroduzca sus numeros si estos eran validos, primero el primero que introdució:\n" ;

$num3 = <STDIN> ;

chop $num3 ;

print "ahora el segundo numero, porfavor" ;

$num4 = <STDIN> ;

chop $num4 ;

print "hola $nom , tus numeros identificativos son $num3 y $num4\n " ;

Gracias por la ayuda por adelantado!!!
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines