Pull to refresh

Скриптинг на bash — это просто

Reading time1 min
Views3.9K
Вот за что я люблю Linux и FreeBSD, так это за возможность быстро и красиво автоматизировать рутинные действия. Например, типичная задача любого сисадмина — прописать конифиг виртхоста для Апача. Автоматизировать это действие поможет вот такой скрипт:
#!/bin/sh
[ -z $1 ] && (echo "Enter hostname"; exit 1)
[ -z $2 ] && (echo "Enter IP"; exit 1)
HTTPD=/etc/httpd/conf.d
BASE=/home
USER=www
VHOST="$BASE/$USER/$1/htdocs"
mkdir -p $VHOST
chown -R $USER:$USER $BASE/$USER/$1
cat << EOF > $HTTPD/$1.conf
<VirtualHost $2:80>
	ServerName $1
	ServerAlias www.$1
	DocumentRoot $VHOST
	ErrorLog /var/log/httpd/$1.error_log
	CustomLog /var/log/httpd/$1.log combined
</VirtualHost>
EOF
service httpd reload


Как обычно, скрипт начинается с #!/bin/sh, а вот дальше…
  • Первые две строки — это «защита от дурака», которая требует чтоб ввели два аргумента — имя хоста (домен) и его IP
  • Следующие четыре строки — это переменные, в которых указываем где лежит директория подключаемых конфигов, базовое размещение домашней директории и имя пользователя. Обратите внимание — на четвертой строке переменная VHOST генерируется на основе предыдущих переменных и первого аргумента
  • Две строки создают директорию для содержимого и назначают права владельца
  • А вот дальше хитро. Команда cat будет читать все пока не встретит комбинацию EOF и записывать все получившиеся в файл. Так как чтение происходит собственно из тела скрипта, то мы просто пишем прямо в нем шаблон конфига, а при обработки все переменные заменяются значениями и записывают в виде готового конфига.
  • Последняя строка — заставляет апач перечитать конфиги.


Вот и все. Правда шелл скриптинг изящен и красив?
Tags:
Hubs:
Total votes 25: ↑14 and ↓11+3
Comments30

Articles