Как запустить системные команды в javascript? - PullRequest
10 голосов
/ 16 марта 2011

Мне нужно перечислить все файлы в javascript, такие как "ls" ??

Ответы [ 5 ]

15 голосов
/ 16 марта 2011

Пожалуйста, дайте больше информации о вашей среде.

Непривилегированный JavaScript в браузере не может ни перечислять файлы, ни запускать программы по соображениям безопасности.

Например, в файле node.js выполнение программ работает следующим образом:

var spawn = require('child_process').spawn,
var ls  = spawn('ls', ['-l']);
ls.stdout.on('data', function (data) {
   console.log(data);
});

И есть прямой способ перечисления файлов, используя readdir ()

5 голосов
/ 16 марта 2011

Вы не можете запускать системные команды на клиенте с JS, поскольку он работает в изолированной программной среде браузера. Вам нужно будет использовать другие технологии на стороне клиента, такие как Flash, ActiveX или, возможно, Applets

2 голосов
/ 12 ноября 2013

Еще более простой способ в node.js:

var fs = require('fs');
var ls = fs.readdirSync('/usr');

Переменная ls теперь содержит массив с именами файлов в /usr.

.
2 голосов
/ 16 марта 2011

AFAIK, вы не можете запустить любую системную команду, это нарушит модель безопасности.Вы можете отправить команду печати, но мне интересно все, что только возможно.

1 голос
/ 16 марта 2011

Краткий ответ - вы НЕ должны этого делать, поскольку это открывает огромный вектор атаки на ваше приложение. Представьте, что кто-то бежит "rm -rf":).

Если вы ДОЛЖНЫ сделать это, и вы на 1000% уверены, что разрешаете только несколько команд, которые не могут причинить никакого вреда, вы можете вызвать страницу сервера с помощью Ajax. Эта страница может выполнить указанную команду и вернуть ответ. Я еще раз подчеркиваю, что это огромный риск для безопасности, и его лучше НЕ делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...