Меню Рубрики

Установка asp с командной строки

Особенности запуска внешних команд из ASP-страниц

Архив номеров / 2004 / Выпуск №9 (22) / Особенности запуска внешних команд из ASP-страниц

ИВАН КОРОБКО

Особенности запуска внешних команд
из ASP-страниц

Создавая приложения на ASP, предназначенные для облегчения управления различными сервисами сети, программисты часто сталкиваются с необходимостью запускать из них приложения (BAT, VBS, EXE и т. д.). Читая документацию компании Microsoft, понимаешь, что решить задачку не представляет никакой сложности. Но существует ряд тонкостей в запуске приложений из ASP-страниц, которые почему-то не описаны в документации. На практике сталкиваешься с тем, что сценарий должен работать, поскольку все написано правильно и встроенный обработчик ошибок сообщает об отсутствии таковых, однако требуемый результат не достигается. Эта статья посвящена запуску различных типов приложений из ASP-страниц.

ASP-страницы – это сценарии, программный код которых выполняется при их запросе. Результатом действия скрипта является HTML/DHTML-страница, которая отображается у клиента. Структура документа на ASP очень проста. В первой строке всегда указывается язык, с помощью которого созданы скриптовые вставки ASP-страница. Таким языком программирования может быть один из двух, поддерживаемый всеми браузерами: Jscript или VBScript. Во всех примерах в данной статье будет использоваться VBScript, поскольку он наиболее симпатичен автору. Каждый из этих примеров легко переписать на Jscript. Итак, первая строка любого из сценариев на ASP выглядит следующим образом:

Программный код, находящийся между , выполняется на сервере и подчинен синтаксису одного из выбранных языков. Весь остальной код представляет собой HTML-страницу в явном виде.

Листинг типовой ASP-страницы выглядит следующим образом:

Response.write variable ‘ отображение на экране содержимого переменной

После обработки интерпретатором IIS программного кода и преобразования результатов его работы в HTML/DHTML необходимо дать команду на отображение страницы в браузере клиента. Такой командой является Response.Write q, где q – имя переменной, содержащей фрагмент HTML-кода.

Методы запуска приложений из VBS

Рассмотрим вызов приложений непосредственно из файла VBS, для этого можно использовать один из методов – Run или Exec. Необходимо отметить, что в VBScript не существует функции, с помощью которой можно запустить приложения, однако она существует в WSH, который поддерживает VBSscipt и JScript . Создание экземпляра объекта WSH осуществляется с помощью команды Create Object(“WScript.Shell”).

Set Wshell = CreateObject(«Wscript.shell»)

Set Proc = Wshell.Exec(«application.exe»)

» Ждать, пока не завершится выполнение программы

Set Wshell = CreateObject(«Wscript.shell»)

Set Proc = Wshell.Run(«application.exe»)

По своей сути оба варианта равнозначны, однако отображаемая в CMD-консоли информация (касается command-line-утилит) может быть прочитана только в первом из приведенных примеров. Во втором примере можно считать только статус завершения дочернего процесса (код ошибки): 0 – команда успешно выполнена, 1 – нет.

Для успешного запуска различных приложений из ASP-страницы необходимо учитывать некоторые особенности, о которых речь пойдет ниже. Все приложения можно условно разделить на несколько групп:

  • приложения с графическим интерфейсом;
  • приложения, работающие из командной строки (command lines utilities);
  • скрипты на VBS/Jscript (хотя скрипты на VBS относятся к приложениям, запускаемым из командной строки, выделим их в отдельную группу).

Первая особенность: поскольку код ASP-страниц исполняется на сервере, и только результат в виде HTML-страницы пересылается на клиентскую машину, то для успешного запуска приложения на сервере, пользователь должен обладать соответствующими правами. IIS представляет собой трехзвенную систему.

Пусть IIS имеет настройки по умолчанию. В этом случае при загрузке любой ASP-страницы она стартует от имени встроенного пользователя (см. рис. 2). Если страница работает с некими базами данных, например с Active Directory, то пользователь, запускающий данную страницу должен обладать правами администратора. Существует несколько способов выполнить эти условия. Первый – вместо учетной записи встроенного пользователя прописать имя учетной записи администратора сети. При таком раскладе любой пользователь в сети сможет посетить данную страницу, т.к. она будет запускаться от имени системного администратора. Этот способ предоставляет всем доступ к данной странице, что, согласитесь, неправильно. Это еще полбеды. Главное, что таким образом резко снижается безопасность всей системы. В случае ошибок на странице злоумышленник запросто запустит вредоносный код с правами администратора. Поэтому предлагается другой способ решения проблемы, с помощью которого можно ограничить доступ к ресурсам. В настройках IIS необходимо сбросить флажок (см. рис. 2) с Enable anonymous access и установить его напротив Basic Authentication. Также следует изменить права на файловую структуру используемого сайта, исключив оттуда группу Everyone и добавив соответствующую группу безопасности. При такой настройке IIS только системные администраторы получат доступ к данной странице. При попытке любого пользователя, не являющегося администратором сети, получить доступ к странице IIS будут запрошены имя и пароль пользователя.

Если необходимо расширить круг лиц, которым должен быть доступен данный сайт, и при этом пользователи не являются системными администраторами, то можно воспользоваться вариантом, являющимся синтезом двух ранее изложенных решений: ограничить доступ на сайт с помощью Basic Authentication и правами на файловую структуру, запускать скрипт, инкапсулированный в страницу с правами администратора.

Только что мы рассмотрели механизм взаимодействия первого и второго звена в трехзвенной системе. Первым звеном является рабочая станция пользователя, вторым – сервер, на котором установлен IIS. Взаимосвязь этих звеньев осуществляется с помощью одного пользователя. Между вторым и третьим звеном (сервер IIS, процессы, порождаемые из ASP) взаимодействие осуществляется с помощью другого пользователя. Рассмотрим взаимодействие второго и третьего звена подробнее.

При запуске из кода ASP-страницы какого-либо приложения осуществляется взаимодействие между вторым и третьим звеном. IIS порождает процесс, запускаемый от имени другого встроенного пользователя. Поскольку ASP-страница выполняется на сервере, то для запуска приложения необходимы соответствующие права. Управление этой учетной записью пользователя осуществляется в Application Tools (см. рис. 3).

Такова первая особенность, касающаяся абсолютно всех приложений. Существует вторая, также характерная для всех приложений.

С помощью ASP-страниц можно вызывать приложения, находящиеся на удаленном компьютере. Некоторые приложения не могут быть запущены на другой платформе. Например, некоторые утилиты, успешно запускающиеся в Windows 2000, выдают сообщение об ошибке на Windows 2003, аналогичная ситуация может возникнуть с приложениями Windows 98, запускаемыми на Windows 2k.

Запуск приложения c графическим интерфейсом

Запуск приложения осуществляется с использованием одного из вышеописанных методов (см. примеры 2, 3). Единственной особенностью является необходимость указывать полный путь к запускаемому приложению. Путь может быть как локальным, например, C:Folder1. так и сетевым: ServerC$Folder1.

Запуск приложения из командной строки (command line utility)

В качестве приложения может быть программа, запускаемая из командной строки (command-line utility), приложение для Windows (файл с расширением EXE).

Рассмотрим особенности запуска command-line-приложений из ASP-страниц. Синтаксис команды запуска утилиты из командной строки следующий:

Префикс %comspec% /c является обязательным. Переменная окружения %comspec% указывает на C:Windows System32cmd.exe. Поскольку при запуске внешней команды порождается процесс CMD, то после отработки команды его необходимо закрыть. Эта процедура осуществляется с помощью ключа /c. Если процессы не закрывать, то в конце концов возникнет недостаток памяти на сервере, что приведет к существенному снижению скорости его работы, а впоследствии к отказу функционирования различных служб компонентов. Путь к утилите также необходимо писать полностью. Допускается использование сетевых имен в формате UNC (ServerShare. ).

Запуск скриптов имеет ряд особенностей. Рассмотрим два вида скриптов, которые, на взгляд автора, используются наиболее часто в данной ситуации: VBS-скрипты и BAT-файлы.

Запуск VBS-файлов из скрипта

Бывают ситуации, когда необходимо из ASP-страницы запустить внешний VBS-скрипт. Как правило, он запускается с параметрами. Рассмотрим кусок листинга VBS-скрипта, касающийся чтения его внешних параметров.

Чтение параметров основано на использовании свойства Arguments объекта WScript WSH. Приведем пример, который определяет, с какими параметрами был запущен скрипт:

t=”Количество заданных параметров — ” & Wscript.Arguments.Count & chr(13) & “Параметры:” & chr(13)

Чтение значений элементов массива, содержащего аргументы скрипта, можно осуществлять другим способом. Оба варианта дают один и тот же результат.

Поэтому его выбор зависит от пристрастий программиста. Отметим лишь, что первый вариант компактнее. Однако, если необходимо использовать нумерацию объектов, то второй вариант окажется удачнее, поскольку в первом придется вводить дополнительно счетчик:

t=»Количество заданных параметров — » & Coun & chr(13) & «Параметры:» & chr(13)

t = t & i+1 & «: «& objArgs(i) & chr(13)

Иногда необходимо получить значение определенного аргумента. Это проиллюстрировано в примере 6. Необходимо помнить, что нумерация элементов начинается с 0:

Msgbox objArgs(2) » Чтение третьего аргумента.

Приведенный пример не является образцом программирования, поскольку в примере отсутствует обработчик ошибок.

Предугадывание возможных ошибок, имитация простейшего интеллекта у программы является хорошим тоном в программировании. Поэтому создадим для этого примера обработчик ошибок. В данной ситуации ошибка возникает в том случае, если осуществляется чтение несуществующих параметров.

q = InputBox (“Введите номер считываемого аргумента”, “Чтение номера аргумента”)-1

При использовании BAT-файлов необходимо помнить, что отдельный процесс порождается не только в момент запуска такого типа файлов, но и при выполнении каждой из команд, находящихся внутри него. По той же самой причине не стоит выполнять взаимосвязанные команды, поскольку может сложиться ситуация, когда первая еще не успела отработать, а вторая, содержащаяся в следующей строке и использующая результат работы первой команды, уже начала выполняться. В результате произойдет ошибка. Чтобы избежать этого, вызывайте команды из кода ASP-страницы и осуществляйте проверку результата отработанной команды.

Подводя итог, кратко отметим, что при работе с внешними файлами из ASP-страниц необходимо учитывать особенности работы IIS. Надеюсь, что прочитав эту статью, у программистов не будет проблем с запуском приложений из ASP-страниц.

Комментарии могут оставлять только зарегистрированные пользователи

источник

Использование интерфейса командной строки LibMan с ASP.NET Core Use the LibMan CLI with ASP.NET Core

Интерфейс командной строки LibMan (LibMan CLI) — это кроссплатформенная программа, которая поддерживается везде, где поддерживается .NET Core. The LibMan CLI is a cross-platform tool that’s supported everywhere .NET Core is supported.

Предварительные требования Prerequisites

Установка Installation

Чтобы установить LibMan CLI, выполните следующую команду: To install the LibMan CLI:

Чтобы установить LibMan CLI из определенного источника пакета NuGet, выполните следующую команду: To install the LibMan CLI from a specific NuGet package source:

В предыдущем примере глобальное средство .NET Core устанавливается из файла C:\Temp\Microsoft.Web.LibraryManager.Cli.1.0.94-g606058a278.nupkg на локальном компьютере Windows. In the preceding example, a .NET Core Global Tool is installed from the local Windows machine’s C:\Temp\Microsoft.Web.LibraryManager.Cli.1.0.94-g606058a278.nupkg file.

Использование Usage

После успешной установки CLI можно использовать следующую команду: After successful installation of the CLI, the following command can be used:

Чтобы узнать установленную версию CLI, выполните следующую команду: To view the installed CLI version:

Чтобы просмотреть доступные команды CLI, выполните следующую команду: To view the available CLI commands:

Приведенная выше команда выводит результат наподобие следующего: The preceding command displays output similar to the following:

Доступные команды CLI описываются в следующих разделах. The following sections outline the available CLI commands.

Инициализация LibMan в проекте Initialize LibMan in the project

Команда libman init создает файл libman.json, если он еще не существует. The libman init command creates a libman.json file if one doesn’t exist. Файл создается с содержимым шаблона по умолчанию. The file is created with the default item template content.

Краткий обзор Synopsis

Параметры Options

Для команды libman init доступны следующие параметры: The following options are available for the libman init command:

Путь относительно текущей папки. A path relative to the current folder. Файлы библиотеки устанавливаются в этом расположении, если в файле libman.json свойство destination для библиотеки не задано. Library files are installed in this location if no destination property is defined for a library in libman.json. Значение

записывается в свойство defaultDestination в файле libman.json. The

value is written to the defaultDestination property of libman.json.

Поставщик, который будет использоваться, если поставщик для данной библиотеки не указан. The provider to use if no provider is defined for a given library. Значение

записывается в свойство defaultProvider в файле libman.json. The

value is written to the defaultProvider property of libman.json. Замените

одним из следующих значений: Replace

with one of the following values:

Отображение справочных сведений. Show help information.

Задание уровня детализации результатов. Set the verbosity of the output. Замените одним из следующих значений: Replace with one of the following values:

Примеры Examples

Чтобы создать файл libman.json в проекте ASP.NET Core, выполните указанные ниже действия. To create a libman.json file in an ASP.NET Core project:

Перейдите в корневой каталог проекта. Navigate to the project root.

Выполните следующую команду: Run the following command:

Введите имя поставщика по умолчанию или нажмите клавишу Enter , чтобы использовать поставщик CDNJS по умолчанию. Type the name of the default provider, or press Enter to use the default CDNJS provider. Допустимы следующие значения: Valid values include:

В корневой каталог проекта добавляется файл libman.json со следующим содержимым: A libman.json file is added to the project root with the following content:

Добавление файлов библиотеки Add library files

Команда libman install скачивает и устанавливает файлы библиотеки в проект. The libman install command downloads and installs library files into the project. Если файл libman.json еще не существует, он создается. A libman.json file is added if one doesn’t exist. В файле libman.json сохраняются данные конфигурации для файлов библиотеки. The libman.json file is modified to store configuration details for the library files.

Краткий обзор Synopsis

Аргументы Arguments

Имя устанавливаемой библиотеки. The name of the library to install. В имени может использоваться нотация номера версии (например, @1.2.0 ). This name may include version number notation (for example, @1.2.0 ).

Параметры Options

Для команды libman install доступны следующие параметры: The following options are available for the libman install command:

Расположение для установки библиотеки. The location to install the library. Если не указано, используется расположение по умолчанию. If not specified, the default location is used. Если в файле libman.json свойство defaultDestination не указано, этот параметр является обязательным. If no defaultDestination property is specified in libman.json, this option is required.

Укажите имя файла, который необходимо установить из библиотеки. Specify the name of the file to install from the library. Если не указано, устанавливаются все файлы из библиотеки. If not specified, all files from the library are installed. Для каждого устанавливаемого файла необходимо задать один параметр —files . Provide one —files option per file to be installed. Также поддерживаются относительные пути. Relative paths are supported too. Например, —files dist/browser/signalr.js . For example: —files dist/browser/signalr.js .

Имя поставщика, используемого для получения библиотеки. The name of the provider to use for the library acquisition. Замените

одним из следующих значений: Replace

with one of the following values:

Если значение не указано, используется свойство defaultProvider из файла libman.json. If not specified, the defaultProvider property in libman.json is used. Если в файле libman.json свойство defaultProvider не указано, этот параметр является обязательным. If no defaultProvider property is specified in libman.json, this option is required.

Отображение справочных сведений. Show help information.

Задание уровня детализации результатов. Set the verbosity of the output. Замените одним из следующих значений: Replace with one of the following values:

Примеры Examples

Рассмотрим следующий файл libman.json: Consider the following libman.json file:

Чтобы установить файл jquery.min.js jQuery версии 3.2.1 в папку wwwroot/scripts/jquery с использованием поставщика CDNJS, выполните следующую команду: To install the jQuery version 3.2.1 jquery.min.js file to the wwwroot/scripts/jquery folder using the CDNJS provider:

Содержимое файла libman.json выглядит примерно так: The libman.json file resembles the following:

Чтобы установить файлы calendar.js и calendar.css из папки C:\temp\contosoCalendar\ с использованием поставщика файловой системы, выполните следующую команду: To install the calendar.js and calendar.css files from C:\temp\contosoCalendar\ using the file system provider:

Приведенный ниже запрос появляется по двум причинам: The following prompt appears for two reasons:

  • В файле libman.json нет свойства defaultDestination . The libman.json file doesn’t contain a defaultDestination property.
  • Команда libman install не содержит параметра -d|—destination . The libman install command doesn’t contain the -d|—destination option.

После принятия назначения по умолчанию содержимое файла libman.json будет выглядеть примерно так: After accepting the default destination, the libman.json file resembles the following:

Восстановление файлов библиотек Restore library files

Команда libman restore устанавливает файлы библиотеки, определенные в файле libman.json. The libman restore command installs library files defined in libman.json. Действуют следующие правила. The following rules apply:

  • Если файла libman.json нет в корневом каталоге проекта, возвращается ошибка. If no libman.json file exists in the project root, an error is returned.
  • Если для библиотеки указан поставщик, свойство defaultProvider в файле libman.json игнорируется. If a library specifies a provider, the defaultProvider property in libman.json is ignored.
  • Если для библиотеки указано назначение, свойство defaultDestination в файле libman.json игнорируется. If a library specifies a destination, the defaultDestination property in libman.json is ignored.

Краткий обзор Synopsis

Параметры Options

Для команды libman restore доступны следующие параметры: The following options are available for the libman restore command:

Отображение справочных сведений. Show help information.

Задание уровня детализации результатов. Set the verbosity of the output. Замените одним из следующих значений: Replace with one of the following values:

Примеры Examples

Чтобы восстановить файлы библиотеки, определенные в файле libman.json, выполните следующую команду: To restore the library files defined in libman.json:

Удаление файлов библиотек Delete library files

Команда libman clean удаляет файлы библиотек, восстановленные ранее с помощью LibMan. The libman clean command deletes library files previously restored via LibMan. Папки, которые становятся пустыми после выполнения этой операции, удаляются. Folders that become empty after this operation are deleted. Конфигурации, связанные с файлами библиотек, в свойстве libraries файла libman.json не удаляются. The library files’ associated configurations in the libraries property of libman.json aren’t removed.

Краткий обзор Synopsis

Параметры Options

Для команды libman clean доступны следующие параметры: The following options are available for the libman clean command:

Отображение справочных сведений. Show help information.

Задание уровня детализации результатов. Set the verbosity of the output. Замените одним из следующих значений: Replace with one of the following values:

Примеры Examples

Чтобы удалить файлы библиотек, установленные с помощью LibMan, выполните следующую команду: To delete library files installed via LibMan:

Удаление файлов библиотек Uninstall library files

Команда libman uninstall делает следующее: The libman uninstall command:

  • удаляет все файлы, связанные с указанной библиотекой, из назначения в файле libman.json; Deletes all files associated with the specified library from the destination in libman.json.
  • удаляет связанную конфигурацию библиотеки из файла libman.json. Removes the associated library configuration from libman.json.

В следующих случаях возникает ошибка: An error occurs when:

  • файла libman.json нет в корневом каталоге проекта; No libman.json file exists in the project root.
  • указанная библиотека не существует. The specified library doesn’t exist.

Если установлено несколько библиотек с одним и тем же именем, вам будет предложено выбрать одну из них. If more than one library with the same name is installed, you’re prompted to choose one.

Краткий обзор Synopsis

Аргументы Arguments

Имя удаляемой библиотеки. The name of the library to uninstall. В имени может использоваться нотация номера версии (например, @1.2.0 ). This name may include version number notation (for example, @1.2.0 ).

Параметры Options

Для команды libman uninstall доступны следующие параметры: The following options are available for the libman uninstall command:

Отображение справочных сведений. Show help information.

Задание уровня детализации результатов. Set the verbosity of the output. Замените одним из следующих значений: Replace with one of the following values:

Примеры Examples

Рассмотрим следующий файл libman.json: Consider the following libman.json file:

Для удаления jQuery можно выполнить любую из следующих команд: To uninstall jQuery, either of the following commands succeed:

Чтобы удалить файлы Lodash, установленные с помощью поставщика filesystem , выполните следующую команду: To uninstall the Lodash files installed via the filesystem provider:

Обновление версии библиотеки Update library version

Команда libman update обновляет библиотеку, установленную с помощью LibMan, до указанной версии. The libman update command updates a library installed via LibMan to the specified version.

В следующих случаях возникает ошибка: An error occurs when:

  • файла libman.json нет в корневом каталоге проекта; No libman.json file exists in the project root.
  • указанная библиотека не существует. The specified library doesn’t exist.

Если установлено несколько библиотек с одним и тем же именем, вам будет предложено выбрать одну из них. If more than one library with the same name is installed, you’re prompted to choose one.

Краткий обзор Synopsis

Аргументы Arguments

Имя обновляемой библиотеки. The name of the library to update.

Параметры Options

Для команды libman update доступны следующие параметры: The following options are available for the libman update command:

Получение последней предварительной версии библиотеки. Obtain the latest prerelease version of the library.

Получение определенной версии библиотеки. Obtain a specific version of the library.

Отображение справочных сведений. Show help information.

Задание уровня детализации результатов. Set the verbosity of the output. Замените одним из следующих значений: Replace with one of the following values:

Примеры Examples

Чтобы обновить jQuery до последней версии, выполните следующую команду: To update jQuery to the latest version:

Чтобы обновить jQuery до версии 3.3.1, выполните следующую команду: To update jQuery to version 3.3.1:

Чтобы обновить jQuery до последней предварительной версии, выполните следующую команду: To update jQuery to the latest prerelease version:

Управление кэшем библиотек Manage library cache

Команда libman cache управляет кэшем библиотек LibMan. The libman cache command manages the LibMan library cache. Поставщик filesystem не использует кэш библиотек. The filesystem provider doesn’t use the library cache.

Краткий обзор Synopsis

Аргументы Arguments

Используется только с командой clean . Only used with the clean command. Указывает кэш поставщика, который нужно очистить. Specifies the provider cache to clean. Допустимы следующие значения: Valid values include:

Параметры Options

Для команды libman cache доступны следующие параметры: The following options are available for the libman cache command:

Список кэшируемых файлов. List the names of files that are cached.

Список кэшируемых библиотек. List the names of libraries that are cached.

Отображение справочных сведений. Show help information.

Задание уровня детализации результатов. Set the verbosity of the output. Замените одним из следующих значений: Replace with one of the following values:

Примеры Examples

Чтобы просмотреть имена кэшируемых библиотек для каждого поставщика, выполните одну из следующих команд: To view the names of cached libraries per provider, use one of the following commands:

Выходные данные должны выглядеть примерно так: Output similar to the following is displayed:

Чтобы просмотреть имена кэшируемых файлов библиотек для каждого поставщика, выполните следующую команду: To view the names of cached library files per provider:

Выходные данные должны выглядеть примерно так: Output similar to the following is displayed:

Обратите внимание, что в представленных выше выходных данных показано, что для поставщика CDNJS кэшируются версии jQuery 3.2.1 и 3.3.1. Notice the preceding output shows that jQuery versions 3.2.1 and 3.3.1 are cached under the CDNJS provider.

Чтобы очистить кэш библиотек для поставщика CDNJS, выполните следующую команду: To empty the library cache for the CDNJS provider:

После очистки кэша поставщика CDNJS команда libman cache list выводит следующее: After emptying the CDNJS provider cache, the libman cache list command displays the following:

Чтобы очистить кэш для всех поддерживаемых поставщиков, выполните следующую команду: To empty the cache for all supported providers:

После очистки кэша всех поставщиков команда libman cache list выводит следующее: After emptying all provider caches, the libman cache list command displays the following:

источник

Читайте также:  Установка изоляторов на анкерную опору

Добавить комментарий

Рубрика: Программирование / Веб-программирование