Saltar al contenido

Ejecute un script de shell con un botón html

Esta es la contestación más exacta que encomtrarás dar, pero primero obsérvala pausadamente y analiza si se adapta a tu proyecto.

Solución:

Lo que estás tratando de hacer no es posible de esa manera.

Tenga en cuenta que siempre hay dos lados: el lado del cliente y el lado del servidor. ¿El script está en la computadora cliente o en el servidor?


Si está en el cliente: Usted, como visitante, solo está viendo un sitio web HTML. onClicksolo podrá iniciar JavaScript (u otros lenguajes de secuencias de comandos), pero no cualquier secuencia de comandos de shell arbitraria que resida en su computadora. Los scripts HTML solo se ejecutan en el navegador y solo pueden hacer cosas limitadas. Lo más importante es que no pueden interactuar con su computadora.

Piénselo: ¿cómo sabría el navegador cómo abrir el archivo? ¿No cree que esto también sería un problema de seguridad: un sitio web simple que activa la ejecución de scripts en la computadora de un cliente? ¿Y si hubiera algo como onClick('rm -rf /home/user')?

Una alternativa sería ejecutar un applet de Java, si quieres que el código se ejecute en el cliente, pero esto no es exactamente lo mismo y es algo realmente complicado. No creo que sea necesario explicar esto en detalle.


Si el script está en el servidor: Si desea ejecutar un script en el lado del servidor y hacer que el usuario active su ejecución, entonces necesita usar un lenguaje de programación del lado del servidor. Solo HTML no lo hará, porque es más o menos un static expediente. Si desea interactuar con el servidor, puede, por ejemplo, usar PHP.

tiene el exec función para ejecutar un script de línea de comando que se almacena en el servidor web. Básicamente, podrías escribir exec('/path/to/name.sh'); y ejecutaría el script en el servidor.

Sin embargo, simplemente poniendo esto en onClick no es suficiente aquí. Si aún no conoce PHP y la programación web del lado del servidor, es posible que desee leer algunos tutoriales primero y luego regresar con una pregunta más específica.


Si tiene un archivo php con el apropiado exec(...) comando, asegúrese de que la secuencia de comandos tenga permisos de ejecución establecidos no solo para el usuario sino también para el grupo en el que se encuentra el servidor web, por lo que, en el caso más simple, solo 777.

En caso de problemas, compruebe el valor de retorno del script con echo exec(...); para ver si hay errores.

También puede ejecutar el script desde la línea de comandos y no desde el navegador con php /path/to/file.php.

Necesita algo de inteligencia del lado del servidor para esto. HTML solo no es suficiente, porque es static. Una forma común sería php. Muchas ofertas alojadas tienen php instalado por defecto.

Puede usar un programa ftp para colocar un archivo de texto en el directorio raíz de su servidor.

El archivo de texto podría llamarse “run.php” con el siguiente contenido:

Executing /path/to/name.sh

Digamos que su dominio es “example.com”, si visita esta página en su navegador:

http://ejemplo.com/ejecutar.php

entonces el archivo php se ejecutará en el servidor. Enviará una página HTML al navegador con el encabezado. Y el script se ejecutará en el servidor.

Hay algunas cosas a tener en cuenta y algunas posibles mejoras:

1) todos podrán acceder a esta página, también los robots. Puede asegurar la página con htacces.

2) Esta página se activará en caso de una solicitud “GET” normal del navegador. Pero implica una acción en el servidor, y si esta acción cambia los datos o hace algo importante, sería mejor activar el script solo en una solicitud POST.

3) Puede insertar una declaración de formulario/botón para poder recargar/ejecutar nuevamente la página. Asegúrese de utilizar el método correcto (GET o POST) en el método attribute de la declaración del formulario HTML.

4) Sería bueno obtener el resultado del script de shell (código de giro y tal vez salida de texto) y escribirlo en el navegador. Esto tiene suficientes problemas para una pregunta separada 🙂

Podría ser un problema de permisos.

Cuando lo activaste usando Aplicación Webestá apache que ejecuta el script. Si apache no tiene permiso para ejecutar el script, no funcionará.

Solución: verifique el permiso e intente nuevamente … 🙂

Comentarios y valoraciones del post

Tienes la posibilidad recomendar esta división si lograste el éxito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *