# с возможным переопределением умолчаний

args='getopt da: c:h $*'

if [$?!= 0]

then

usage

fi

set — $args

for i

do

case '$i'

in

-h)

usage

shift

;;

-a)

AUTHOR='$2'; shift

shift

;;

-c)

COPYRIGHT='$2'; shift

shift

;;

-d)

DEBUG=true

shift

;;

-)

shift; break;;

esac

done

if $DEBUG; then

echo DEBUG MODE ENABLED.

DEBUGCMD=echo

fi

# Проверка наличия минимального количества элементов

# командной строки

if $DEBUG; then echo ITEM COUNT = $#; fi

if [$# — lt '$MINITEMS']; then

usage

fi

# Если первый аргумент особый, запомнить его:

# ТНЕIТЕМ='$1'; shift

# Клонируйте эту строчку для каждого элемента,

# который хотите сохранить.

# Не забудьте при этом откорректировать значение

# переменной MINITEMS.

# Если вы хотите обработать остальные элементы,

# делайте это здесь:

# for i in $*; do

# echo Looky! Looky! I got $i

# done

if [! -z '$COPYRIGHT'];

then

if $DEBUG; then echo Setting copyright to: $COPYRIGHT; fi

CRFLAG='-copyright $COPYRIGHT'

fi

LABEL='date — u +%Y%m%d'

$DEBUGCMD mkisofs — D -l — J -r — L -f — P '$AUTHOR' — V $LABEL $CRFLAG $*

Построение длинной командной строки

Самый лучший способ научиться сцеплять команды UNIX/Linux в один длинный канал — заглядывать через плечо того, кто этим занимается. Сейчас я попробую научить вас делать это, создав на ваших глазах небольшую утилиту.

♥ Книга «Think UNIX» (Думайте в духе UNIX), Que, — отличный учебник по объединению инструментов UNIX/Linux в длинные команды.

Самой мощной технологией, представленной в UNIX/Linux, является возможность объединить несколько команд аналогично тому, как наращивают садовый шланг для поливки. Если у вас есть программа, которая преобразует входной текст в верхний регистр, и программа, сортирующая строки в файле, то вы можете сцепить их друг с другом. В результате вы получите команду для преобразования строк в верхний регистр и их вывода в заданном порядке. Все, что от вас требуется, — это поставить символ «|» между командами. Выходная информация одной команды поступит на вход следующей:

$ cat файл | toupper | sort

Тем, кто не знаком с UNIX/Linux, сообщу, что cat — это команда, выводящая файл. Программу toupper я написал для преобразования текста в верхний регистр, a sort — программа, сортирующая строки текста. Все они прекрасно стыкуются.

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

Звучит неожиданно? Все, что будет делать наша программа, — это искать подозрительные на заражение компьютеры. Иными словами, она выведет список хостов, нуждающихся в более внимательном осмотре. Тем не менее, ваши коллеги будут удивлены, уверяю вас.

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

Каков признак того, что компьютер инфицирован червем? Надо проверить, какие компьютеры чаще других отправляют ARP-пакеты.

Черви/вирусы/шпионские программы нередко пытаются соединиться со случайно выбранным компьютером локальной сети. Когда компьютер впервые пытается связаться с локальным IP-адресом, он отправляет ARP-пакет для выяснения Ethernet (МАС) — адреса. Нормальные (не-инфицированные) компьютеры обычно общаются лишь с несколькими компьютерами: с серверами, которые им нужны, и с их локальным маршрутизатором. Если обнаружится, что какой-то компьютер отправляет значительно больше ARP-пакетов, чем остальные, скорее всего, это можно считать признаком его заражения.

Построим простой канал в оболочке, который будет собирать следующие 100 ARP-пакетов в сети и определять, какой хост сгенерировал больше пакетов, чем другие хосты того же уровня. Что-то вроде

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату