#javascript #macos #shell
#javascript #macos #оболочка
Вопрос:
- У меня Mac.
- У меня есть HTML-файл.
- У меня есть браузер, оснащенный javascript.
- И все, что мне еще может понадобиться.
Как мне запустить команду bash из html-файла?
«Что бы еще мне ни понадобилось» может включать Java. TiddlyWiki использует Java-апплет для сохранения файла на моем жестком диске. Это близко к тому, что я хочу, я просто не знаю, как это настроить.
Пожалуйста, не обращайте внимания на то, рекомендуется это сейчас или нет.
Комментарии:
1. Мне любопытно, что значит запускать
bash
команду из html-файла — HTML ничего не делает , это не язык программирования. Может быть, вы могли бы придумать какой-нибудь способ заставить JavaScript вызыватьsystem(3)
произвольную строку, и если вы найдете способ, пожалуйста, сообщите об этом как об ошибке 🙂 браузеры не должны этого делать.2. Я не совсем понимаю, что вы пытаетесь сделать, но если все, что вы хотите сделать, это запустить команду из Интернета, вы могли бы использовать
curl
для перехода на веб-страницу (возможно, в html), а затем проанализировать ее с помощью sed / awk / grep, чтобы найти команду, которую вы хотите запустить, а затем выполнить ее. Если вам действительно нужно, чтобы браузер просто зашел на страницу, чтобы запустить команду на компьютере браузера, вы не сможете этого сделать. Это нарушает все установленные ими средства безопасности в изолированной среде и было бы огромной дырой в безопасности, если бы это было возможно.
Ответ №1:
Это просто невозможно сделать, используя только ваш Mac, HTML-файл и браузер с поддержкой Javascript.
По сути, вам нужно будет разработать свой собственный плагин для браузера, если вы когда-нибудь захотите, чтобы это было возможно; в качестве альтернативы, возможно, кто-то уже создал такой плагин, грубо нарушающий стандартные границы безопасности.
Рассматривали ли вы альтернативное решение? Почему вы привязаны к браузеру?
Комментарии:
1. Я намерен использовать TiddlyWiki для управления своими заметками в своих проектах программирования. При открытии TiddlyWiki выполняется несколько сценариев настройки javascript. TiddlyWiki упрощает добавление дополнительных функций из браузера без копания в исходном коде html. Было бы неплохо открыть мои заметки в TiddlyWiki и одновременно запустить всю мою среду программирования в фоновом режиме.
2. Если вы размещаете wiki локально, вы могли бы написать внутренний скрипт (скажем, на PHP), который выполняет требуемые вызовы. Затем у вас просто есть свой JS-код, запрашивающий этот PHP-скрипт любым количеством возможных способов — XHR, используйте скрипт в качестве источника ссылки, и т.д. Единственное дополнительное предостережение заключается в том, что ваш веб-сервер должен будет иметь соответствующие разрешения для запуска необходимых вам приложений, и эти приложения по умолчанию будут запускаться от имени вызывающего пользователя ( т. Е. uid серверного процесса, который запустил ваш скрипт).
3. Я бы также добавил, что вы можете захотеть обновить свой первоначальный вопрос, чтобы более точно отразить ваши требования.
Ответ №2:
Нет способа сделать это — это вопрос безопасности. Браузер никогда не будет запускать что-либо с веб-сайта на уровне командной строки.
Ответ №3:
В Windows раньше были Jscript и Wscript, которые, хотя на самом деле они не запускались в браузере, могли обновлять представления html и запускаться как надлежащие приложения.
Какова ваша цель здесь? Если ваша цель — запрограммировать пользовательский интерфейс для локального приложения в виде веб-сайта, безусловно, есть способы сделать это. Если ваша цель — перенести возможности локальных приложений в веб-приложения, есть способы сделать и это. Однако, если это последнее, то, скорее всего, вам следует пересмотреть свои цели.
Ответ №4:
Единственный известный мне способ сделать это — использовать WScript.Объект Shell (доступен только в Windows, и даже тогда, вероятно, не будет без некоторых довольно необычных настроек безопасности на клиентском ПК) или с использованием элемента управления ActiveX.
Я не знаю, будет ли элемент управления ActiveX вообще работать на Mac, или вы можете делать с элементом управления ActiveX то же самое, что и на ПК с Windows, но, возможно, стоит изучить.
Ответ №5:
Я не уверен, как это делается на Mac, но вот мое решение для Windows. Вам нужно создать свой собственный протокол (он же myproto: // вместо http: //), затем в реестре на стороне прослушивания у вас есть программа — использование языка сценариев, такого как autoэто здесь хорошо. Вы получите URL-адрес, который не должен быть экранирован, чтобы показать любое сообщение, которое вы отправляете своей специальной программе, затем позвольте вашей программе делать все, что подходит. Сообщение может быть прямой строкой командной строки (не рекомендуется: P) или что у вас есть. На стороне браузера вы просто создаете URL-адреса типа myproto://<экранированная команда>, поэтому их неинтересно писать вручную, ха-ха.