Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

done

cleanup

Основная содержательная часть скрипта уместилась на трех строчках: текущее состояние сравнивается с предыдущим с помощью diff, вывод которой фильтруется grep и сортируется в обратном порядке (так что сначала пойдут строки с «-», а затем «+». Далее следует задержка на несколько секунд, после чего сравнение повторяется. Имя временного файла выбирается один раз, файлы текущего и предыдущего состояния отличаются расширениями 0 или 1. Перехват прерываний необходим для удаления временных файлов по завершении работы.

В качестве источника данных о подключениях используются сразу два скрипта: count_samba и count_pppd. Возможно, что для учета трафика пользователей, подключенных через удаленный доступ, лучше было бы использовать сам pppd, но скрипт count_pppd – очень неплохой пример того, как просто использовать для получения списка пользователей не только samba, но и любое другое приложение, способное выдать такой список. В данном случае это who, а адреса берутся из /etc/ppp/options.<ttyname>:

#!/bin/sh

who | awk '{if(substr($2,1,4)=="cuaa")printf("%s %s ",$1,$2)}' | while read user ttyname

do

    grep ":" /etc/ppp/options.$ttyname | awk -F: '{printf(" %s %s ",user,$2)}' user=$user

done

Предполагается, что в данном случае за каждым портом закреплен свой IP-адрес.

Для хранения временных файлов используется специальный каталог с правами 1777 («sticky» бит). Благодаря этому биту только владелец файла, каталога или суперпользователь может удалить или переименовать такой файл. В качестве дополнительной меры безопасности необходимо позаботиться о том, чтобы никто не смог предугадать имя временного файла. Именно эту задачу выполняет mktemp. Каталог выбирается в соответствии с содержимым переменной TMPDIR. Ключ -q указывает не выводить сообщения об ошибках, в случае неудачи при создании файла произойдет выход из скрипта с кодом завершения 1. Ключ -t задает шаблон, к которому в качестве расширения добавляется случайная последовательность символов.

Способ, которым инициализируется переменная tmpfile, называется подстановкой – переменной присваивается вывод команды, заключенной в обратные кавычки. Код завершения команды mktemp используется в дальнейшем. Последовательность || здесь означает ИЛИ (не путать с регулярными выражениями). То есть если mktemp завершится неудачно, будет запущена вторая команда, в данном случае «exit 1».

Другой часто применяемый способ подстановки – использование конструкции «$()» вместо прямых кавычек. Здесь он используется для инициализации переменной «$bindir».

Код завершения – это число, которое равно нулю, если программа завершается успешно или больше нуля, если неудачно. Число это содержится в переменной «$?».

Явно эта переменная используется в скрипте, когда нужно поменять местами номера 0 и 1. Проверка на эквивалентность (-eq) единице с помощью команды test дает требуемое значение. Кстати, все ключи команды test являются аббревиатурами, что помогает их запомнить.

Код завершения – это именно то, на чем работают в скриптах все управляющие структуры. К примеру, в часто встречающемся [ ] первая скобка – не что иное, как жесткая ссылка на test, а вторая скобка – завершающий параметр этой программы, который работает, когда она вызывается именно как [. Команда [ может быть и встроена в оболочку, но сути дела это не меняет.

Таким образом, конструкцию [ ] или test используют для анализа строк и числовых выражений, а во всех остальных случаях используется непосредственно завершающий код какой-либо программы. Более подробно об использовании test можно прочитать на соответствующей странице руководства.


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100