Каталог статей
Поиск по базе статей  
Статья на тему Интернет » Интересное в сети » Ba h'ковитые скрипты. Часть 1

 

Ba h'ковитые скрипты. Часть 1

 

 

Большинству веб-мастеров рано или поздно приходится сталкиваться с командной строкой UNIX, на котором работает большинство веб-серверов. И при работе в этой самой командной строке очень часто приходится набирать практически одинаковые команды весьма часто — скажем, логи посмотреть, загрузку сервера, проверить запущенные программы... И приходится раз за разом набирать эти длинные и малопонятные строчки команд, с опаской и уважением поглядывая на написанные «крутыми профессионалами» скрипты...

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

загрузка...

 

 

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

Псевдонимы

Настройки большинства программ хранятся в скрытых файлахПервым делом стоит уделить внимание не столько скриптам, сколько псевдонимам (aliases) и настройкам параметров оболочки. В домашней директории пользователя UNIX обычно находится несколько скрытых файлов и директорий, содержащих настройки разных программ. Отличаются эти скрытые файлы тем, что их не видно при просмотре директории, а имена их начинаются с точки. Как правило, файлы настроек какой-то программы называются (точка)(команда)rc (в частности, файл настроек командной оболочки называется .bashrc). Для того чтобы увидеть эти файлы, можно воспользоваться командой ls с параметром -A.

На самом деле в отношении bash все немножко сложнее: инициализационных файлов у нее несколько. Глобальные (одинаковые для всех пользователей) настройки живут в /etc/bashrc и /etc/profile. А локальные — в ~/.bashrc и ~/.bash_profile (знак ~ «тильда» обозначает домашнюю директорию пользователя). Так как мы создаем настройки для себя, причем для интерактивного использования, то удобнее всего их записать в ~/.bash_profile.

Теперь надо определиться с тем, что именно мы хотим сделать. Как показывает практика, очень удобно бывает создать сокращения для различных команд, которыми вам часто приходится пользоваться. Мне, например, очень удобно закачивать сеанс работы, нажимая кнопку «q», а не набирая «exit». Для просмотра error-лога сервера удобно использовать команду «er», а не "tail -f /var/log/httpd/error_log". И так далее, и так далее — все зависит от ваших потребностей и предпочтений.

Псевдонимы (alias) позволяют задать короткие имена командам, которые вам требуется часто выполнятьДля того чтобы дать командам короткие имена, удобно использовать псевдонимы (alias). Все, что от вас требуется, это вписать в файл ~/.bash_profile имя псевдонима и команду, которую он будет выполнять:

alias q=exit
alias er='tail -f /var/log/httpd/error_log'

Теперь, подключившись к серверу и набрав в командной строке «er», вы увидите, как по экрану побегут сообщения о ненайденных сервером файлах и прочих происходящих неприятностях.

Скрипты

Но псевдонимы спасут нас далеко не во всех случаях: очень часто требуется выполнять не одну команду, а несколько, причем использовать внутри различные относительно сложные конструкции... Тут на помощь приходят скрипты. Shell-скрипты в UNIX — это весьма мощный инструмент, позволяющий использовать переменные, циклы, условия, выполнять команды и так далее, и тому подобное.

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

#!/usr/local/bin/bash.

За исключением этой первой строки, каждый встреченный символ «диез» (он же «решетка») обозначает начало комментария, который продолжается до конца строки.

Переменные

Что же за программа без переменных!Основная сложность (для тех, кто привык писать на других языках) при использовании переменных в bash-скриптах заключается в том, что при присваивании имя переменной указывается как есть, а при получении значения — со знаком доллара.

X="Присваивание значения"
echo "$X"

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

Для того чтобы выделить имя переменной в строке можно использовать фигурные скобки, например:
echo "${X}abc".

Так же, как и в большинстве других языков программирования, строки могут заключаться в одинарные или двойные кавычки. Разница только в том, что строки, заключенные в двойные кавычки, интерпретируются (например, имя переменной заменяется на ее значение), а строки в одинарных кавычках — нет. Если в значении переменной нет пробелов, то можно кавычки и не использовать:
X=Hello.

Переменные могут использоваться при вызове командЗначения переменных могут использоваться в командах — оболочка, так же как и в случае строк, «развернет» их:
PROCESS='apache'
ps axl | grep $PROCESS

Результат работы команды может быть сохранен в переменнойКроме того, можно в качестве значения переменных задавать результат выполнения каких-то внешних команд. Для этого используется либо обратный апостроф (backtick, символ, который находится на клавиатуре под знаком тильда ~), либо запись вида $(команда). Например,
A=$(cat /var/log/httpd/access_log | grep mypage)
B=`ls -l /www/html/`
Преимуществом записи со скобками является то, что вы без проблем можете вкладывать одни подстановки в другие; преимуществом обратного апострофа — совместимость практически с любой командной оболочкой и несколько большая наглядность.

Условные операторы

«Линейные» скрипты, конечно, тоже часто бывают полезны, однако без возможности проверки условий обойтись порой очень тяжело, а то и вовсе невозможно. В bash-скриптах есть возможность выполнения операторов в зависимости от условий:


if условие
then
операторы
fi

if условие
then
операторы
else
операторы
fi

if условие
then
операторы
elif условие
then
операторы
elif условие
then
операторы
fi

Принцип работы этих операторов вполне понятен любому, кто имеет хотя бы минимальные знания об алгоритмах или, как минимум, об английском языке. Для тех, кто знаком с другими языками, конструкция "if — fi", скорее всего, покажется непривычной, но когда привыкнете, окажется вполне удобной, ничем не хуже, чем "if — end if".

Оператор test очень удобно использовать в условияхВ качестве условия чаще всего используется оператор test, который может принимать две формы:

test значение1 оператор значение2
или
[ значение1 оператор значение2 ]

Чаще всего используется именно вторая форма. В некоторых проверках может участвовать только одно значение, в этом случае форма записи — [ оператор значение ].

Важно! В отличие от присваивания в проверках обязательно нужен пробел между оператором и значением.

Man test позволит вам получить более полный список операторовЧаще всего используются следующие операторы:
-n: значение ненулевой длины
-z: значение нулевой длины
-d: значение — это директория
-f: значение — это файл
= или !=: значения равны или не равны (строки)
-eq или -neq: значения равны или не равны (целые)
-lt или -gt: меньше или больше
-le или -ge: «меньше или равно» или «больше или равно»

Например:

if [ -f "/var/run/spamd.pid" ]
then
/usr/local/etc/rc.d/spamd.sh restart
else
/usr/local/etc/rc.d/spamd.sh start
fi

Можно проверять и корректность выполнения программКроме оператора test, в качестве проверки может выступать практически любая команда или другой скрипт: если выполнение прошло без ошибок (программа вернула нулевой код возврата), то условие выполняется, если нет — то нет. Например:


if /usr/local/kav/kavupdater.sh
then
/usr/local/etc/rc.d/kavd.sh restart
else
echo "Ошибка обновления антивируса" | mail -s"Server error" admin@mysite.ru
fi

Циклы

В shell-скриптах, как и в любых других программах, циклы используются для выполнения одних и тех же действий над каким-то набором значений переменных. Как правило, это бывают обработка группы файлов, перебор аргументов командной строки и им подобные задачи. Чаще всего используется цикл for:


for имя_переменной in список
do
операторы
done

Формат циклов в shell-скриптах не совсем похож на другие языки программированияСписок здесь означает некий набор значений, разделенных пробелами (если какое-то из значений само включает пробел, то его надо взять в кавычки). При выполнении цикла переменной последовательно присваиваются значения из списка, после чего выполняется набор операторов. Например,


for X in /var/log/httpd/*
do
echo `tail $X`
done
Если список не указывать, то вместо него будет задействован список аргументов, переданных скрипту. Например:


for X
do
if [ -f "$X" ]
then
echo `tail $X`
else
echo "'$X' is not a file!"
fi
done

Другим вариантом цикла является while, который выполняется, пока условие истинно:


while условие
do
операторы
done

Ссылки по теме

  • Так ли страшен черт, как его малюют, или UNIX для веб-мастера



Статья получена: hostinfo.ru
загрузка...

 

 

Наверх


Постоянная ссылка на статью "Ba h'ковитые скрипты. Часть 1":


Рассказать другу

Оценка: 4.0 (голосов: 16)

Ваша оценка:

Ваш комментарий

Имя:
Сообщение:
Защитный код: включите графику
 
 



Поиск по базе статей:





Темы статей






Новые статьи

Противовирусные препараты: за и против Добро пожаловать в Армению. Знакомство с Арменией Крыша из сэндвич панелей для индивидуального строительства Возможно ли отменить договор купли-продажи квартиры, если он был уже подписан Как выбрать блеск для губ Чего боятся мужчины Как побороть страх перед неизвестностью Газон на участке своими руками Как правильно стирать шторы Как просто бросить курить

Вместе с этой статьей обычно читают:

Автосалон в Детройте - 2003. Фоторепортаж. Часть 2

• Mitsubishi Endeavor • Mitsubishi Tarmac Spyder • Nissan Maxima • Nissan Maxima • Pontiac G6 • Toyota Fine-S Fuel Cell • Acura TSX • Aston Martin AMV8 concept • Audi Pikes Peak • Audi Pikes Peak • Audi Pikes Peak • BMW xActivity • Buick Centieme • Cadillac Sixteen • Cadillac SRX Статья про автомобили получена: KM. RU Автомобили

» Японские автомобили - 2531 - читать


Как часто нужно заезжать на сервис

Одним из требований любого гарантийного обслуживания автомобиля является периодическое посещение сертифицированных заводом-изготовителем сервисных станций, где и будет проведено плановое ТО. От сроков этого межсервисного пробега во многом зависит и стоимость эксплуатации автомобиля. Например, автомобили марки Toyota должны заезжать на сервис каждые 10 тыс. км.

» Японские автомобили - 2609 - читать


Автосалон в Детройте - 2003. Фоторепортаж. Часть 1

• Chevrolet Cheyenne • Chevrolet Equinox • Chevrolet SS concept • Dodge Durango • Dodge Kahuna • Ford 427 concept • Ford ModelU • Ford Mustang GT • Hyundai OLV • Kia KCD-1 Slice • Lexus RX330 • Lincoln Navicross • Maserati Kubang • Mazda Washu • Mercedes E-Class T Статья про автомобили получена: KM. RU Автомобили

» Немецкие автомобили - 2111 - читать


ПДД. Расположение транспортных средств на проезжей части

9. 1. Количество полос движения для безрельсовых транспортных средств определяется разметкой или знаками 5.

» Разное - 2335 - читать


Плата за страх. Часть 1-я

Мы не случайно проводили опрос на странице Портала «Автомобили. Кирилл и Мефодий» - «Застраховали бы Вы свой автомобиль?». Голосование еще продолжается, но уже сегодня мы предлагаем Вам статью, кторую многим из вас (нас) полезно прочитать...

» Разное - 2388 - читать



Статья на тему Интернет » Интересное в сети » Ba h'ковитые скрипты. Часть 1

Все статьи | Разделы | Поиск | Добавить статью | Контакты

© Art.Thelib.Ru, 2006-2024, при копировании материалов, прямая индексируемая ссылка на сайт обязательна.

Энциклопедия Art.Thelib.Ru