Создание и использование скрипта здесь описано на примере конфигурирования сетевых интерфейсов.
Итак, процесс по шагам: - сначала в любом текстовом редакторе создаем файл с произвольным названием и расширением (пусть это будет firstscript.txt) и запишем туда какую-нибудь команду (например ifconfig eth0 down). - меняем добавляем права на запуск к этому файлу. Это можно проделать командой chmod или с помощью GUI-интерфейса (правой кнопкой щелкаем на файл и выбираем Properties). - запускаем файл двойным кликом или введя его имя в командной строке: # . имя_файла или # bash имя_файла - для скриптов рекомендуется использовать расширение .sh - если в начале текстового файла есть строка #!/bin/bash (это так называемая "магическая строка" - "shebang"), то тогда такой файл тоже будет интерпретироваться системой как скрипт (все остальные строки будут переданы указанному командному процессору bash). Файл может также начинаться на #!/bin/sh. - ОЧЕНЬ ВАЖНЫЙ МОМЕНТ: строки должны заканчиваться Unix-like (только LF или символ 0x0A), ни в коем случае не Windows-like (CR+LF или 0x0D,0x0A). Для этого под Windows лучше воспользоваться специальным редактором, например notepad2.
[Пример - настройка сети и моста на ASPLinux10 скриптом]
Перед выполнением этого скрипта я сделал так, что у меня сетевые интерфейсы при загрузке ASPLinux не настраивались (ifconfig выдавал только конфигурацию интерфейса lo [loopback]). Это я проделал GUI-оснасткой. Потом написал следующий скрипт (/root/Desktop/network_setup.txt):
ifconfig eth0 0.0.0.0 ifconfig eth0 down ifconfig eth1 0.0.0.0 ifconfig eth1 down
brctl addbr mybridge0 brctl addif mybridge0 eth0 brctl addif mybridge0 eth1
ifconfig mybridge0 loc1.loc2.11.111 ifconfig mybridge0 broadcast loc1.loc2.255.255 ifconfig mybridge0 netmask 255.255.0.0 ifconfig mybridge0 up
ifconfig eth0 up ifconfig eth1 up
route add -net 0.0.0.0 netmask 0.0.0.0 gw loc1.loc2.0.254 dev mybridge0 Чтобы этот скрипт автоматически загружался при включении компьютера, в файле /etc/rc.d/rc.sysinit в конце я указал строку (просто указал путь к скрипту и его название): /root/Desktop/network_setup.txt
Само собой, перед этим я установил права на запуск этого файла (см. пост 97). Кроме того, команды на запуск скрипта можно вставить в файл /etc/rc.d/rc.local.
[Передача параметров в скрипт]
В скрипте есть возможность получать параметры, которые были переданы в скрипт через командную строку при его запуске. Например, командная строка была следующей:
. имя_скрипта.sh AAA BBB CCC
Тогда в теле скрипта автоматически появятся переменные $1, $2 и $3, которые будут равны AAA, BBB и CCC соответственно. Подробности см. в [1].
[Использование переменных]
mysqluser="user_name_here" mysqlpass="password_here" mysqlbase="base_name_here"
Этот пример добавляет в код три переменные $mysqluser, $mysqlpass, $mysqlbase с установленными значениями. Внимание: нельзя добавлять пробелы до и после оператора присваивания =, иначе скрипт будет выполняться неправильно.
[Проверка значений текстовых переменных]
if [ "$1" == "off" ]; then #тут ветка, когда в командную строку передали off .. echo "security off" elif [ "$1" == "on" ]; then #тут ветка, когда в командную строку передали on .. echo "security on" else #тут ветка, когда в командную строку передали неверный параметр echo "usage . sec.change.sh [on|off]" fi
Внимание: пробелы до и после скобок [ ], а также вокруг оператора равенства == очень важны, иначе скрипт не будет правильно работать.
[Ссылки]
1. Passing arguments to a shell script (передача аргументов в скрипт). |