Você está na página 1de 7

Universidad Autónoma de Chihuahua

Facultad de ingeniería
Administración de centros de cómputo

Proyecto: Apagado remoto de computadoras

Integrantes:

Marcos Samuel Gómez García 199441


Marcos Abelardo Borunda García 199503

Grupo: 8°K
Catedrático: Oscar Ramsés Ruiz Varela
Apagado remoto de computadoras

Descripción del proyecto

El sistema como su nombre lo indica, permite el apagado remoto de


computadoras, esto se logra mediante una interfaz web. Tenemos la siguiente
estructura:

En este caso la PC (a) con la IP 192.168.0.2 funcionara como nuestro servidor,


esta PC corre bajo Ubuntu 9.04, y tiene acceso a Internet mediante el
Cable/Modem con la IP 192.168.0.1 al igual que las otras dos computadoras.
En la computadora (a) es donde se aloja nuestra página web, que contiene el
programa que realiza la tarea de apagar las computadoras que están en su
misma red.
El usuario al ingresar a la página http://teapagolacompu.no-ip.org tiene como
primera pantalla la siguiente imagen:
Donde se pide al usuario que ingrese el comando a utilizar (apagar terminal ó
servidor), las cuales se explican a continuación:

Comando apagar terminal:

Este comando nos muestra la siguiente interfaz:

Donde se nos pide que ingresemos la dirección IP de la computadora a apagar


(la IP de la red local no la de internet) además del tiempo en el cual desea
apagar la computadora (en segundos). Por último solo resta dar clic al botón
“enviar”, como una forma de confirmación se manda un mensaje mostrando
que la operación se llevo a cabo satisfactoriamente:
Comando servidor:

Este comando nos da una herramienta muy poderosa, puesto que nos da
acceso a la terminal de nuestro servidor, es decir al control total de este. Y con
una configuración apropiada de nuestra red, como extra nos puede dar acceso
a las demás computadoras.
Esto a través de la siguiente pantalla:

En este caso como una forma de ejemplo mandamos el comando


ls /home/user/Desktop que nos devolverá como resultado, todas las carpetas y
archivos que contiene el Escritorio del servidor de la siguiente manera:
Herramientas utilizadas en el servidor

Sistema operativo: Ubuntu 9.04


Lenguaje de programación: Java J2EE (servlets y JSP)
Servidor web: Apache/Tomcat 6
Otros programas: NOIP(programa para IP’s dinámicas)

Sistema:

Se utilizó el entorno de desarrollo NetBeans IDE 6.7.1 para desarrollar la


aplicación. El código generado para este proyecto es el siguiente:

Este es el código JSP de la página principal

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Bienvenido</title>
</head>
<body
background="http://www.tij.uia.mx/vidauniv/publicaciones/deciertomar/images/fondo.g
if">
<form action="ApagarWindows" method="POST">
<center>
<strong><font size=24 color ="white">Introduzca el
comando</font></strong>
<p>
<img src
="http://thumbs.dreamstime.com/thumb_339/12282598707YbD6m.jpg">
<p>
Comando: <input type="text" name="contra" value="" size="45" />
<input type="submit" value="Enviar" name="enviar" />
</p>
</center>
</form>
</body>
</html>

Como se puede observar en el código todo está en lenguaje HTML, se utilizan las
etiquetas típicas para agregar imagen de fondo, darle formato al texto, poner imágenes
en la página pero la parte importante del código es la siguiente línea donde dice
“Comando: <input type="text" name="contra" value="" size="45" />” ya que la
cadena que se capture dentro de este TextBox es la que se pasará como parámetro a los
servlets y validará si la contraseña ingresada es la correcta, además de que dependiendo
de la contraseña ingresada nos redireccionará a un servlet o a otro. Por ejemplo si se
teclea la palabra “servidor” se abrirá una página donde se pueda enviar comandos
directamente a la terminal del servidor, si se selecciona la cadena “apagar terminal” se
abrirá la página que permitirá apagar una computadora remotamente.

Este es el primer servlet, donde se verifica si se envió “servidor” o “apagar


terminal”

public class ComandWin extends HttpServlet {


protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<center><h3>Apagando PC "+
request.getParameter("ip").toString() + " en " +
request.getParameter("tiempo").toString() + " segundos </h3></center>");
Process p = Runtime.getRuntime().exec("net rpc SHUTDOWN -C \"Apagando
remotamente \" -f -t " + request.getParameter("tiempo").toString() +" -I " +
request.getParameter("ip").toString() + " -U usuario%contraseña");
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line = null;
out.println("<html>");
out.println("<head>");
out.println("<title>Apagando computadora</title>");
out.println("</head>");
out.println("<body
background=\"http://www.tij.uia.mx/vidauniv/publicaciones/deciertomar/images/fondo.
gif\">");
while ((line = in.readLine()) != null) {
out.println("<p>"+line+"</p>");
}
out.println("</body>");
out.println("</html>");
}
finally {
out.close();
}
}

Aquí en esta parte del código podemos observar que ya no se utiliza lenguaje HTML
puro sino que las líneas de comandos utilizadas se usan tal y como se usarían en un
programa típico de Java. Lo que quiere decir que si tenemos que enviar alguna
instrucción en HTML para que la acepte la página la tenemos que enviar como si fuera
una cadena, es por esa razón que todo el código en HTML se coloca dentro de la
instrucción “out.printline()”. La ventaja de que se pueda implementar código de Java
en una página web es que se pueden utilizar todas las sentencias utilizadas en dicho
lenguaje pero montadas en una página. Por ejemplo, para apagar una computadora
utilizamos la siguiente instrucción: “Process p = Runtime.getRuntime().exec("net rpc
SHUTDOWN -C \"Apagando remotamente \" -f -t " +
request.getParameter("tiempo").toString() +" -I " +
request.getParameter("ip").toString() + " -U usuario%contraseña");” como se puede
observar es una instrucción de tipo EXEC y se coloca tal y como si se utilizara en un
programa de Java típico. Lo que hace esta instrucción es capturar la IP de la máquina a
apagar y el tiempo en que se quiera que se apague esta, ya que se apagará una
computadora con sistema operativo Windows desde Ubuntu se requiere colocar el
nomber de usuario y contraseña dentro de la instrucción.

Este es el resultado del comando que se manda cuando está en modo “servidor”

public class ComandUbuntu extends HttpServlet {


protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<B>Resultado del comando: </B>");
Process p =
Runtime.getRuntime().exec(request.getParameter("comando").toString());
BufferedReader in = new BufferedReader(new
InputStreamReader(p.getInputStream()));
String line = null;
out.println("<html>");
out.println("<head>");
out.println("<title>Resultado del comando</title>");
out.println("</head>");
out.println("<body
background=\"http://www.tij.uia.mx/vidauniv/publicaciones/deciertomar/images/fondo.
gif\">");
while ((line = in.readLine()) != null) {
out.println("<p>"+line+"</p>");
}
out.println("</body>");
out.println("</html>");
}
finally {
out.close();
}
}

Este servlet es muy parecido al servlet que apaga las computadoras remotamente, solo
que con la diferencia de que en vez de mandar un comando de apagado, en este se
podrán mandar instrucciones directamente a la terminal del servidor lo que permite un
manejo remoto de este. La instrucción que realiza dicha tarea es la siguiente:
“ Process p =
Runtime.getRuntime().exec(request.getParameter("comando").toString());”

Você também pode gostar