Advertisement
Guest User

Server-socket

a guest
Oct 2nd, 2014
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 3.16 KB | None | 0 0
  1. #!/usr/bin/perl -w
  2.  
  3.  
  4. #alumnos:
  5. #Martinez, Graciela
  6. #Medrano, Oscar
  7. #Ojeda, Elena
  8.  
  9.  
  10.  
  11.  
  12.  
  13. use IO::Socket;
  14. #$puerto = 4444;
  15. print "Ingrese el puerto a escuchar\n -> ";
  16. $puerto.=<STDIN>;
  17. chomp($puerto);
  18. $servidor=IO::Socket::INET->new(proto =>'tcp',
  19.                 LocalPort =>$puerto,
  20.                 Listen =>SOMAXCONN,
  21.                 Reuse =>1) or die "Error al iniciar el servidor";
  22. print "Aceptando conexiones en Puerto del Servidor ==> $puerto \n";
  23. while ($conexion = $servidor ->accept()) {
  24.   atender($conexion);
  25.    
  26.     }
  27.  
  28.  sub ejecutar($$) {
  29.     ($comando, $conexion) = @_;
  30.      $resultado = '';
  31.       if ($comando eq 'fecha') {
  32.     $resultado = localtime() . "\n";
  33.       }
  34. ###########MODIFICACIONES####################################
  35. ##############################################################################################################
  36. #muestro las interfaces de red
  37.  
  38.     if ($comando eq 'ip') {
  39.     $resultado= `ifconfig -a`;
  40.         }
  41.  
  42. #muestro uno ojos en la pantalla
  43.  
  44.     if ($comando eq 'ojos') {
  45.     $resultado= `xeyes`;
  46.  
  47.  
  48. #muestro la distribucion del sistema
  49.  
  50.  
  51.         }if ($comando eq 'distribucion') {
  52.     $resultado= `cat /etc/issue`;
  53.  
  54.  
  55. #muestro informacion del logueo de los usuarios
  56.  
  57.  
  58.         }if ($comando eq 'info loguin') {
  59.     $resultado= `last`;
  60.         }
  61.  
  62. #muestro informacion de la placa madre
  63.  
  64.     if ($comando eq 'board') {
  65.     $resultado= `dmidecode --type baseboard`;
  66.         }
  67.  
  68. ###############################################################################################################
  69.  
  70.  
  71.  
  72.       elsif ($comando eq 'v' || $comando eq 'version')  {
  73.            $resultado = "Version 1.0 - Universidad Nacional del Nordeste\n";
  74.       }
  75.       elsif ($comando eq 'scan')  {# Scanea un puerto en Local Host
  76.            print $conexion "Scan de Puerto -> ";
  77.            $puerto=<$conexion>;
  78.            $puerto =~ s/\r\n|\n//g;#Borro los saltos de Lineas
  79.            $remote = IO::Socket::INET->new(
  80.            Proto    => "tcp",
  81.            PeerAddr => "127.0.0.1",
  82.            PeerPort => $puerto,
  83.             );
  84.            if ($remote){
  85.               $resultado = "Puerto Abierto\n";          
  86.               }
  87.             else
  88.               {
  89.                $resultado = "Puerto Cerrado\n"
  90.               }  
  91.         }
  92.  
  93.  
  94. if ($resultado) {
  95.    print $conexion "OK 200\n";
  96.    print $conexion $resultado;
  97.   }
  98.   elsif ($comando eq 'salir') {
  99.    print $conexion "Bye. Fin Conexión\n"
  100.   }
  101.   else
  102.    {
  103.     print $conexion "ERR 500\n";
  104.   }
  105. }
  106.  
  107. sub atender($) {
  108.     $conexion = shift; #Toma el descriptor
  109.     $ip = $conexion->peerhost; #La ip del Socket cliente
  110.     $portc= $conexion->peerport;#El puerto del cliente
  111.     print $conexion "Bienvenido uso de Soocket de Redes de Datos.\n";
  112.     print "*Conexion establecida desde $ip y puerto del cliente $portc*]\n";
  113.      do {
  114.       print $conexion  "->";
  115.         if ($comando = <$conexion>) {
  116.             $comando =~ s/\r\n|\n//g;#Borro los saltos de Lineas
  117.             ejecutar($comando, $conexion);# Envio el comando y el descriptor
  118.         } else {
  119.             $comando = 'salir';
  120.         }
  121.     } until ($comando eq 'salir');
  122.     $conexion->shutdown(2);
  123.     print "[Conexión establecida $ip]\n";
  124. }
  125. 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement