Linux и UNIX: программирование в shell. Руководство разработчика
вернуться

Тейнсли Дэвид

Шрифт:

echo "<OPTION>$LINE"

Выбранный элемент присваивается переменной menu_selection. Ниже приводится сценарий, заполняющий элементы меню; действие формы не указывается.

$ pg populat.cgi

#!/bin/sh

#сценарий populat.cgi

#заполнение раскрывающегося списка значениями из текстового файла

echo "Content-type: text/html"

echo ""

echo "<HTML>"

echo "<BODY>"

echo "<H4> CGI FORM….populat.cgi..populate pull-down list from a text

file</H4>"

echo "<SELECT NAME=menu_selecflon>"

echo "<OPTION>— PICK AN OPTION —"

# считывание значений из файла для заполнения опций списка

while read LINE

do

echo "<OPTION>$LINE" done < ../temp/list

echo "</SELECT>"

echo "</FORM>"

echo "</BODY>"

echo "</HTML>"

29.5.4. Автоматическое обновление Web–страницы

При использовании cgi для программирования заданий, выполняющих функции мониторинга либо контроля, часто бывает удобно выполнять обновление страниц в непрерывном режиме. Для этого вызывается пользовательский сценарий или страница. Ниже приводится тег, вызывающий выполнение сценария dfspace.cgi каждые 60 секунд.

<meta http-equiv="Refresh" content="60;URL=http:/linux.pc/cgi-bin/dfspace.cgi">"

Здесь ключевым словом является слово Refresh. Благодаря его использованию Web–сервер получает сведения о загрузке данной страницы, а строка "content=60" задает время (в секундах( между повторными загрузками. Для обновления сценария просто добавьте имя сценария в качестве части адреса URL.

В распоряжении автора имеются несколько контролирующих сценариев, выполняющих опрос всех основных хостов в сети. Благодаря их применению можно сразу же определить, какие хосты выполняются, а какие -oтключены. Более симпатичный вид сценарию придает использование в тексте вместо опций on и off зеленых и красных шариков.

Ниже приводится сценарий, использующий часть вывода df и отображающий файловую систему и количество полей в таблице.

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

echo "<TABLE align="center" cellspacing="20" border=9 width="40%"

cols="2">"

echo "<TH align="center">- Capacity % -</TH>"

echo "<TH align="center">- File System -</TH>"

Параметр cellspacing устанавливает расстояние между внутренними и внешними границами таблицы. Параметр border хранит число, определяющее толщину табличной рамки. Параметр col s определяет количество столбцов в таблице. Ниже приведена основная часть описываемого сценария.

df | sed 1d | awk '(print $5"\t"$6>' | while read percent mount

do

echo "<TR><TD align="center"><B>$percent</B></TD><TD align="center">$mount</TD></TR>"

done

С помощью команды df выполняется перенаправление посредством редактора sed для удаления заголовка, затем выполняется перенаправление к awk и считывание в пятом и шестом столбцах. Результаты присваиваются переменным percent и mount.

Аббревиатура TR обозначает строку таблицы, а TD — табличные данные. Тем самым определяется место, куда направляется информация.

Ниже приведен текст соответствующего сценария. Конечно, 60 секунд — это слишком много при мониторинге небольших файловых систем, но при перемещении большого количества файлов в файловых системах полезно отображать информацию об этом на протяжении целой минуты!

$ pg dfspace.cgi

#!/bin/sh

# сценарий dfspace.cgi

echo "Content-type: text/html"

echo ""

# автоматическое обновление каждые 60 секунд

echo "<meta http-equiv="Refresh" content="60;URL=http:/"linux.pc/cgi-bin/dfspace.cgi">"

echo "<HTML>"

echo "<HR>"

echo "<A NAME="LINUX. PC Filesystems">LINUX. PC Filesystems</A>"

echo "<TABLE align="center" cellspacing="20" border=9 width="40%"

cols="2">"

echo "<TH align="center">- Capacity % -</TH>"

echo "<TH align="center">- File System -</TH>"

# получение вывода из df, но сначала фильтруется нужная информация!

df | sed 1d | awk '{print $5"\t"$6}' | while read percent mount

  • Читать дальше
  • 1
  • ...
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • help@private-bookers.win