WEB-FAQing-TOOLZZZ Матушка Лень (MLen@mail.ru) Спецвыпуск Xakep, номер #030, стр. 030-100-4 Если возникает потребность использовать стандартные утилиты типа ping, то применяется функция EXEС. То есть скрипт открывает шелл, запускает нужную тулзу с необходимыми параметрами, сохраняет и выдает результаты ее работы. Для этого используются STDIN/STDOUT - стандартные потоки ввода-вывода. Есть возможность запускать макропрограммы, написанные на языке шелла. Однако если тулза обладает графическим интерфейсом, то придется писать надстройку, которая будет сохранять результаты работы программулины в виде графического файла или мультика и передавать скрипту. Еще сложнее вводить данные в такую программу. Словом, с этими вещами никто связываться не хочет, так как вместо того, чтобы использовать готовую тулзу с графическим интерфейсом, проще написать самодельную для WEB. Хотя потенциально для любой софтины можно наваять WEB-интерфейс и тем самым превратить ее в WEB-тулзу. Другое дело - текстовые программулины, которых полно в любом Юниксе; зачем изобретать велосипед, когда можно приделать ВЕБ-интерфейс, запарившись всего несколькими строчками кода. И потом - Perl тоже не всемогущий; если ты программируешь интерфейс для стиральной машины, то без ассемблера не обойтись, так что пусть Perl-скрипт запускает готовый бинарник stirlnaya_mashina.com. Как принимать данные со страницы? Через браузер ты получаешь от WEB-сервера страницу - интерфейс твоей WEB-тулзы. Для создания такой страницы тебе нужно знать хотя бы основы HTML. С помощью тэга <FORM> можно создать на страничке поля для ввода текста, менюшки, переключатели, кнопки. Данные, которые ты вводишь с помощью этих элементов, браузер передает по протоколу HTTP методами GET или POST. Элементы тэга <FORM> примитивные и уродливые, зато работают практически везде, подробнее об этом прочтешь здесь: http://www.citforum.ru/internet/html40/interact/forms.html#edef-FORM. Любители эстетики используют в качестве интерфейса технологии JavaScript и Flash, они дают большие графические возможности, но отключены в некоторых браузерах (в моем, например). Итак, пользователь производит манипуляции с WEB-интерфейсом, браузер передает эти данные по HTTP-протоколу WEB-серверу, а сервер через переменные среды и STDIN перенаправляет данные нужному скрипту, который преобразует их в удобоваримый вид (раскодирует). Подробнее читай здесь: http://emanual.ru/download/76.html. После либо скрипт сам выполняет полезную тулз-работу, обратившись к библиотекам: производит расчеты, спамит, флудит, посылает и принимает сообщения в IRC и ICQ. Либо он запускает готовую тулзу и передает ей данные в необходимом для нее виде. Например, вводит в сканер портов IP-адрес зашедшего пользователя. Так происходит управление WEB-тулзой, причем пользователь может и не знать, что при заходе на страницу скрипт начинает сканить, что-нибудь накручивать, подбирать пароль, считывать полезную инфу о юзере... Как выводить результаты в браузере? Если от WEB-тулзы требуется возвращать какие-то полезные результаты своей работы: результат сканирования портов, сообщения ICQ/IRC, график роста количества ламоботов на сегмент сети. Все эти полезные вещи скрипт сохраняет в виде HTML-страницы, подставляя данные в готовые HTML-шаблоны. Технологии PHP, ASP, JSP подставляют куски HTML вместо своих скриптовых вставок. Если скрипт сам запускал какую-то стандартную тулзу, то он перенаправляет вывод либо во временный файл, либо в переменную среды, чтобы затем также подставить полученные данные в HTML. С помощью графических библиотек есть возможность построить график и добавить его в виде картинки *.GIF, *.PNG, *.JPG в тело HTML-документа. После этого WEB-сервер возвращает браузеру обновленную страницу, и пользователь видит результаты. |