Дебиан. Счастье перед горизонтом.

  • Debian

Статья о скриптах и тех, кто их пишет.

Особая благодарность книге «Кодеры за работой»

Абсолютно не секрет, что весь интернет усеян скриптами и решениями по разным операционным системам и приложениям\сервисам. Да весь интернет — один боооольшой скрипт! Чтож, это очень хорошо, потому как научиться писать скрипты достаточно… просто, но в то же время и сложно, так как не все решения, которые мы используем — безопасны и практичны.

Язык может быть любой, начиная от ассемблера, заканчивая новейшими разработками, которые появятся в стандартах ещё не скоро… или же те языки, которые только недавно пришли, и считаются новаторскими (как сами языки, так и их модификации) существует целый список языков, и он далеко не полон.

Но наша с вами задача — небольшое пространство по имени bash-shell (bash) и его разнообразие. Почему именно он? Ответ достаточно прост: все, что можно делать ложкой за обедом — делается ложкой, дом строится из материалов, а Операционная Система — из программного кода, даже несмотря на то, что ложки нет, из скриптов, ядра, оболочки (или без оной) и прочих важных компонентов. Обнаружив сходство *nix-систем в принципе и расстановке, зная спецификации — нетрудно будет быстро переучиться и освоить ещё одну систему для наших (ну, или почти наших) нужд.

В принципе, из менее чем 30 различных слов можно составить уже достаточно сложный скрипт, а если все достаточно строго документировать, то ваши союзники, последователи (и даже враги!) без труда в них разберутся… Мой первый скрипт, насколько я помню, был предназначен для того, чтобы обновлять и доводить систему до ума (убунту 10.04) при первой инсталляции. Я записывал все, что делаю с системой, чтобы она была такой, какой нужно, а затем переводил это в строки кода, который в следующие разы делал это за меня. Удобно. Ленивец!

Затем стало понятно, что некоторые операции повторяются, мало того, понадобились ветвления для разного оборудования и ситуаций, когда что-то может пойти не так. Да и это мог быть вообще не ПК, а ноутбук, причем достаточно современный. И ветвлений стало ещё больше. Мало того, стандартный список репозиториев оказался несколько неудобен, и нужно было менять его вручную, редактируя файлы /etc/apt/sources.list, а так же нужно было проверить и настроить, если нужно, драйвера видео. Позже, в Дебиан, я частично (к сожалению) реализовал эту возможность. Ну и не стоит забывать про вайн (особенно про mono210, которая решает множество проблем совместимости, особенно если речь идет о играх).

Каталог моих скриптов (обновление возможно вскоре) достаточно мал, но часто используется, если систему приходится ставить с нуля. Иногда приходится почти полностью переписывать значительные куски кода, так как подход, адреса, системы — меняются. Тот же winetricks дополняется новыми адресами.

Возьмем для примера 1 скрипт, который поможет обновить его для нашего wine-пакета (и не важно, сборка это ваша, или чья-то ещё, либо это официальный релиз) и поместить его туда, где его можно будет просто вызывать, не прибегая к насилию:
Сначала идет определение того, через что мы запускаем данный скрипт: #!/bin/bash — объявление того, что мы используем оболочку bash.

Мы запускаем скрипт с правами суперпользователя, что-то вроде sudo ./wintr.sh, внутри которого томятся строки кода для исполнения. Метод вполне безопасный. Но только для данного примера. Почему? Некоторые операции, такие, например, как управление префиксом вайн строго(и это упомянуто в самом вайн) должен выполняться из-под пользователя, иначе получится ерунда и вы не сможете просто так запускать любимые игрушки или приложения (Linux — изначально многопользовательская среда, с разделенными правами и обязанностями). Следовательно, стоит задуматься о том, чтобы супер-, так сказать, действия выполнять отдельным блоком, чтобы быть уверенным, что вы потом получите к ним доступ. В нашем случае: wget www.kegel.com/wine/winetricks && sudo chmod +x winetricks && sudo mv winetricks /usr/local/bin . А далее: winetricks hosts volnum mfc40 mfc42 vb4run vb5run vb6run vcrun2003 vcrun2005 vcrun2008 wininet vcrun2010 winhttp d3dx9 mono210 (в моем варианте).

Важно так же внутри скрипта предусмотреть вопрос о том, чтобы:
  1. Нужные действия выполнялись на уровне пользователя, а остальное делало sudo или, как в этом примере: su — root -c «echo '$USER ALL=(ALL) ALL' >> /etc/sudoers» (мы решаем проблему с судо-доступом, если что-то случилось с ним). Однострочно, и просто.
  2. б) Запомнить или поменить в комментах, где и как выполняется часть скрипта.

Некоторые команды, например ifconfig вообще не видны без упоминания sudo (и слышать вас не хочу, гавары парол), стоит помнить, проверяя строки в самой оболочке. Ну и, конечно, комментирование. Без него всякий кусок кода превратится в муки.

Далее, параметрирование. Сложный термин, но если вы научите скрипт не только махать лапкой, но и определенным образом реагировать сразу, это упростит запрос. К примеру, под WinXP разработана замечательная программка kido-killer. Нам, она, разумеется, ни к чему, но, что забавно, основные параметры её запуска -j -a -x. Очень легко запомнить, а как сразу изменяется её поведение…

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

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

0 комментариев

Оставить комментарий