tengo un sitio web Utiliza JavaScript vainilla. Tengo acceso a todas las computadoras cliente que usan el sitio. Mi objetivo era ejecutar un script de shell impulsado por una función JavaScript del sitio web. Por supuesto, no es posible por razones de seguridad (un sitio web que accede a los archivos de la computadora mientras la usa).
Entonces, mi otra idea: quiero crear un software que de alguna manera monitoree el sitio web actualmente abierto y monitoree si se llamó a cierta función (que se conoce, por supuesto), entonces este programa puede ejecutar un script de shell.
Ejemplo: tengo una función llamada IncomingCall() en JavaScript en mi sitio web. Quiero que un software se ejecute constantemente en las computadoras cliente y ejecute example.sh si se llama a IncomingCall() . El sitio web está en un servidor y el software de monitoreo y el script de shell están en las computadoras cliente, a las que tengo acceso (sin riesgo de seguridad, sin intenciones maliciosas).
Entonces mi pregunta es, ¿qué lenguaje o tecnología podría usar para este propósito, si es posible, y cómo? Entiendo que esto es bastante vago, pero no tengo ni idea de cómo se podría hacer esto.
Editar: quiero ejecutar un script de shell porque quiero cambiar la entrada del televisor conectado a la computadora a HDMI cuando entra una llamada en el sitio.
Como tiene acceso a todos los clientes, puede ejecutar un servidor local en cada cliente. Al usar XMLHttpRequest en JavaScript, puede conectarse a este servidor y enviar una solicitud HTTP. Cuando el servidor recibe una solicitud de este tipo, puede ejecutar el script de shell.
Aquí hay un ejemplo simple sobre cómo ejecutar un servidor en Python. Si prefiere otro idioma, puede buscar otros ejemplos, hay muchos por ahí. Posiblemente incluso como un script de shell, según el sistema que esté ejecutando.
No es posible en JavaScript por defecto conectarse al host local si el sitio que inicia la conexión está alojado en otro dominio. Debe configurar su servidor local para permitir dicha conexión ( explicación de Mozilla ). Ver ejemplo aquí en Python cómo configurar esto.
A continuación se muestra un ejemplo en JavaScript sobre cómo iniciar dicha conexión.
let errFunc = async function (e) { alert("Could not connect to the server. Please check your internet connection"); } let func = function (e) { if (this.status == 200) { alert("Succes"); } else { alert("Error retrieving file '" + this.responseURL + "' from the server."); } } let req = new XMLHttpRequest(); req.addEventListener("error", errFunc); req.addEventListener("timeout", errFunc); req.addEventListener("load", func); req.open("GET", "http://localhost/runScrip", true); req.send();