Quero escrever uma função JavaScript que execute os comandos do shell do sistema (ls
por exemplo) e retorne o valor.
Como faço para conseguir isso?
javascript
Sunil Kumar Sahoo
fonte
fonte
Respostas:
Muitas das outras respostas aqui parecem abordar esse problema da perspectiva de uma função JavaScript em execução no navegador. Vou filmar e responder assumindo que, quando o solicitante disse "Shell Script", ele quis dizer um JavaScript para o Node.js. Possivelmente usando commander.js para enquadrar seu código :)
Você pode usar o módulo child_process da API do nó. Colei o código de exemplo abaixo.
Espero que isto ajude!
fonte
... alguns anos depois ...
O ES6 foi aceito como padrão e o ES7 está chegando, por isso merece resposta atualizada. Usaremos o ES6 + async / waitit com nodejs + babel como exemplo, os pré-requisitos são:
Seu
foo.js
arquivo de exemplo pode parecer com:Certifique-se de ter babel:
Instale a última predefinição:
Execute-o via:
fonte
Não sei por que as respostas anteriores deram todos os tipos de soluções complicadas. Se você deseja apenas executar um comando rápido como
ls
, não precisa de assíncrono / espera ou retorno de chamada ou qualquer coisa. Aqui está tudo o que você precisa - execSync :Para tratamento de erros, adicione um bloco
try
/catch
ao redor da instrução.Se você estiver executando um comando que demora muito para concluir, sim, observe a função assíncrona
exec
.fonte
Isso depende inteiramente do ambiente JavaScript. Por favor elabore.
Por exemplo, no Windows Scripting, você faz coisas como:
fonte
Em poucas palavras:
fonte
Com o NodeJS é simples assim! E se você deseja executar esse script em cada inicialização do seu servidor, pode dar uma olhada no aplicativo de serviço permanente !
fonte
Nota: Essas respostas são de um cliente baseado em navegador para um servidor Web baseado em Unix.
Executar comando no cliente
Você essencialmente não pode. A segurança diz que apenas é executado em um navegador e seu acesso a comandos e sistema de arquivos é limitado.
Execute ls no servidor
Você pode usar uma chamada AJAX para recuperar uma página dinâmica passando seus parâmetros por meio de um GET.
Esteja ciente de que isso também abre um risco de segurança, pois você teria que fazer algo para garantir que o Sr. Rouge Hacker não faça com que seu aplicativo diga execute: / dev / null && rm -rf / ......
Então, resumindo, correr de JS é apenas uma péssima idéia ... YMMV
fonte
Outro post sobre este tópico com uma boa solução jQuery / Ajax / PHP:
scripts de shell e jQuery
fonte
No IE, você pode fazer isso:
fonte
Aqui está um comando simples que executa o
ifconfig
comando shell do Linuxfonte
Esta função pode ser facilmente usada como:
fonte
Com o nashorn, você pode escrever um script como este:
e execute:
fonte
Se você estiver usando o npm, poderá usar o pacote shelljs
Para instalar:
npm install [-g] shelljs
Veja mais: https://www.npmjs.com/package/shelljs
fonte