Тайм-менеджмент для системных администраторов - страница 100

Шрифт
Интервал

стр.

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

>#!/bin/bash

>MINITEMS=1

>function usage

>{

>echo "

>Usage: $0 [-d] [-a author] [-c file.txt] [-h] dir1 [dir1…]

>-d debug, don't actual run command

>-a author name of the author

>-c copyright override default copyright file

>-h this help message

>"

>exit 1

>}

># Задание умолчаний:

>DEBUG=false

>DEBUGCMD=

>AUTHOR=

>COPYRIGHT=copyright.txt

># Обработка аргументов командной строки

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

>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-пакетов, чем остальные, скорее всего, это можно считать признаком его заражения.


стр.

Похожие книги