Я хочу написать функцию JavaScript, которая будет выполнять команды системной оболочки ( ls
например) и возвращать значение.
Как мне этого добиться?
javascript
Сунил Кумар Саху
источник
источник
Ответы:
Многие другие ответы здесь, похоже, решают эту проблему с точки зрения функции JavaScript, запущенной в браузере. Я сниму и отвечу, предполагая, что, когда спрашивающий сказал «Shell Script», он имел в виду внутренний JavaScript-код Node.js. Возможно использование commander.js для использования фрейма вашего кода :)
Вы можете использовать модуль child_process из API узла. Я вставил пример кода ниже.
Надеюсь это поможет!
источник
... несколько лет спустя ...
ES6 был принят в качестве стандарта, и ES7 не за горами, поэтому он заслуживает обновленного ответа. Мы будем использовать ES6 + async / await с nodejs + babel в качестве примера, предварительные условия:
Ваш пример
foo.js
файла может выглядеть так:Убедитесь, что у вас есть babel:
Установите последний пресет:
Запустите его через:
источник
Я не знаю, почему предыдущие ответы давали всевозможные сложные решения. Если вы просто хотите выполнить быструю команду, например
ls
, вам не нужны async / await, обратные вызовы или что-то еще. Вот все, что вам нужно - execSync :Для обработки ошибок добавьте вокруг оператора блок
try
/catch
.Если вы выполняете команду, выполнение которой занимает много времени, тогда да, посмотрите на асинхронную
exec
функцию.источник
Это полностью зависит от среды JavaScript. Пожалуйста, дополните.
Например, в Windows Scripting вы делаете такие вещи, как:
источник
В двух словах:
источник
С NodeJS все просто! И если вы хотите запускать этот скрипт при каждой загрузке вашего сервера, вы можете взглянуть на приложение forever-service !
источник
Примечание. Эти ответы поступают от клиента на основе браузера к веб-серверу на базе Unix.
Выполнить команду на клиенте
По сути, вы не можете. Безопасность говорит, что запускается только в браузере, и его доступ к командам и файловой системе ограничен.
Запустите ls на сервере
Вы можете использовать вызов AJAX для получения динамической страницы, передавая свои параметры через GET.
Имейте в виду, что это также создает угрозу безопасности, поскольку вам нужно будет что-то сделать, чтобы миссис Руж хакер не заставила ваше приложение сказать: run: / dev / null && rm -rf / ......
Итак, вкратце, запуск из JS - это просто плохая идея .... YMMV
источник
Еще один пост по этой теме с хорошим решением jQuery / Ajax / PHP:
сценарии оболочки и jQuery
источник
В IE вы можете сделать это:
источник
Вот простая команда, которая выполняет
ifconfig
команду оболочки Linuxисточник
Эту функцию можно легко использовать как:
источник
С помощью nashorn вы можете написать такой сценарий:
и запустите его:
источник
Если вы используете npm, вы можете использовать пакет shelljs
Установить:
npm install [-g] shelljs
Подробнее: https://www.npmjs.com/package/shelljs
источник