Воскресенье
2026-03-22, 8:45 PM
Respect-Real
Приветствую Вас Гость | RSS
Главная Каталог статей Регистрация Вход
Форма входа

Категории раздела
Хакерство [14]

Поиск

Главная » Статьи » Hack Zone » Хакерство

Аспекты шелл кодинга
На сегодняшний день существует большое количество различных языков программирования, начиная от простых, Perl и заканчивая не простыми :) Kylix и C. Каждый язык имеет свои достоинства и недостатки. Возьмем, например, командный интерпретатор в UNIX Bourn Shell (он полностью совместим с интерпретатором BASH в Linux), основным его преимуществом является то, что он интегрирован непосредственно в консоль (шелл) *nix систем, то есть умея работать с консолью и имея знания шелл кодинга вы можете писать сценарии (скрипты). Важным недостатком (по моему) является то, что в шелл кодинге вы не сможете так издеваться над кодом программы как например в Перле. Я постараюсь описать основные аспекты шелл программирования, в Linux-e (в UNIX-e он имеет некоторые отличия, но не очень большие), то есть я рассчитываю на то, что читатель данного материала имеет уже какие-то знания в этой области.

1. Начнем с азов :), а именно с переменных. При обработки переменных, хранящих строки, их желательно заключать в кавычки. Например:

if [ "$USER" == "root" ]; then
действия
fi

Если вы считаете, что не имеет значения какие кавычки использовать, то вы ошибаетесь. Текст в двойных кавычках "" проверяется на содержание различного рода метасимволов ( ,c, и т.д.), а текст заключенный в одинарных кавычках обрабатывается как есть, то есть без учета выше приведенных символов. Например:

echo -e "ehhhh ehhhh" - выведет 2 строки содержащие слово "ehhhh".
echo -e 'ehhhh ehhhh' - выведет как есть, ehhhh ehhhh, без учета перехода на новую строку.

2. При составлении больших сценариев, нужно позаботиться о их отладки, чтобы быстро найти и ликвидировать ошибку в коде, если такая имеется. Данной операцией занимается команда "set опции_вызова". Она имеет следующие опции:

-v -- отображение всех строк сценария при его выполнении
-x -- отображение всех команд и их аргументов, при выполнении сценария

Вам нужно в начале сценария поместить команду set и установить для нее опции, а в конце снять их. Снимаются опции так "set +опция_без_-" - конечно чуть не удобно. Если сценарий выполнился без каких либо ошибок - данные строки (с set командой) можно удалить.

3. Если ваш сценарий будет производить запись в какие-либо файлы вы должны обязательно проверять права доступа на них (так например на вашей машине они могут быть открыты, а на другой закрыты, что приведет к ошибке и некорректного выполнения сценария). Для этого используйте конструкцию:

if [ -w имя_файла ]; then
производится запись
else
ошибка …
fi

4. Каждый сценарий должен, иметь понятные сообщения об ошибках! А именно, каждое сообщение должно содержать следующее:

имя сценария в котором произошла ошибка : описание самой ошибки

Можно этого не делать :) BASH сам будет выводить сообщения об ошибках, но они не всегда понятны пользователю, поэтому лучше сообщения об ошибках, которые посылает BASH, перенаправлять (2>) в системную корзину (/dev/null) и делать для них свои описания. Для указания имя сценария в котором произошла ошибка, можно использовать конструкцию "basename $0" или просто значение переменной "$0". Если вы создаете большой сценарий не забывайте делать файл - журнал ошибок, который будет содержать описание ошибок и дату их появления.

5. После выполнения в сценариях каких либо очень важных команд, не забывайте просматривать содержимое переменной "$?". Если она содержит 0, то команда выполнилась без ошибок, если 1 - то были ошибки.

6. В BASH-e есть такая команда, которая возвращает всегда значение true, данная команда носит название null (:), то есть если вы хотите чтобы при каком-то определенном условии не чего не выполнялось, воспользуйтесь ею. Пример:

if [ -t ]; then
echo "Сценарий выполняется в приоритетном режиме"
else
:
fi

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

while read line; do
Echo $line
done /dev/null` # считываем нажатие 1-ой клавиши, ошибки отправляем в системную корзину
stty -cbreak
echo $_key
stty $_SAVESTTY # восстанавливаем настройки терминала
}

Пока вроде все, но есть и другие сказки про пяточка и кролика …:). Удачи!

Категория: Хакерство | Добавил: respect-real (2006-12-06)
Просмотров: 987 | Комментарии: 4 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Наш опрос
Оцените мой сайт
Всего ответов: 133

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0


    Copyright MyCorp © 2026