Quiero escribir una función de JavaScript que ejecutará los comandos de shell del sistema ( ls
por ejemplo) y devolverá el valor.
¿Cómo logro esto?
javascript
Sunil Kumar Sahoo
fuente
fuente
Respuestas:
Muchas de las otras respuestas aquí parecen abordar este problema desde la perspectiva de una función de JavaScript que se ejecuta en el navegador. Dispararé y responderé suponiendo que cuando el autor de la pregunta dijo "Shell Script" se refería a un JavaScript de Node.js. Posiblemente usando commander.js para usar el marco de su código :)
Puede usar el módulo child_process de la API del nodo. Pegué el código de ejemplo a continuación.
¡Espero que esto ayude!
fuente
... pocos años después ...
ES6 ha sido aceptado como estándar y ES7 está a la vuelta de la esquina, por lo que merece una respuesta actualizada. Usaremos ES6 + async / await con nodejs + babel como ejemplo, los requisitos previos son:
Su
foo.js
archivo de ejemplo puede verse así:Asegúrate de tener babel:
Instale el último preajuste:
Ejecútelo a través de:
fuente
No sé por qué las respuestas anteriores dieron todo tipo de soluciones complicadas. Si solo desea ejecutar un comando rápido como
ls
, no necesita async / waitit o callbacks ni nada. Aquí está todo lo que necesita: execSync :Para el manejo de errores, agregue un bloque
try
/catch
alrededor de la declaración.Si está ejecutando un comando que tarda mucho en completarse, entonces sí, observe la función asincrónica
exec
.fuente
Esto depende completamente del entorno de JavaScript. Por favor elabora.
Por ejemplo, en Windows Scripting, haces cosas como:
fuente
En una palabra:
fuente
¡Con NodeJS es así de simple! Y si desea ejecutar este script en cada arranque de su servidor, puede echar un vistazo a la aplicación de servicio para siempre .
fuente
Nota: Estas respuestas son de un cliente basado en navegador a un servidor web basado en Unix.
Ejecutar comando en el cliente
Básicamente no puedes. Seguridad dice que solo se ejecuta dentro de un navegador y su acceso a los comandos y al sistema de archivos es limitado.
Ejecute ls en el servidor
Puede usar una llamada AJAX para recuperar una página dinámica que pasa sus parámetros a través de un GET.
Tenga en cuenta que esto también abre un riesgo de seguridad, ya que tendría que hacer algo para asegurarse de que mrs rouge hacker no haga que su aplicación diga ejecutar: / dev / null && rm -rf / ......
Entonces, en pocas palabras, huir de JS es solo una mala, mala idea ... YMMV
fuente
Otra publicación sobre este tema con una buena solución jQuery / Ajax / PHP:
shell scripting y jQuery
fuente
En IE, puedes hacer esto:
fuente
Aquí hay un comando simple que ejecuta el
ifconfig
comando de shell de Linuxfuente
Esta función se puede usar fácilmente como:
fuente
Con nashorn puedes escribir un script como este:
y ejecutarlo:
fuente
Si está usando npm, puede usar el paquete shelljs
Instalar:
npm install [-g] shelljs
Ver más: https://www.npmjs.com/package/shelljs
fuente