LINUX.ORG.RU
ФорумAdmin

deploy запись в /etc/hosts

 ,


0

2

Дефолтный /etc/hosts такой

127.0.0.1 localhost
127.0.1.1 debian

# The following lines are desirable for IPv6 capable hosts
5 ::1     localhost ip6-localhost ip6-loopback
6 ff02::1 ip6-allnodes
7 ff02::2 ip6-allrouters

Я деплою проект. Мне надо добавить в /etc/hosts запись. Окей, я могу добавить простым echo 'ip domain' >> /etc/hosts. А как правильно прочекать есть ли там эта запись. Я же могу несколько раз скрипт деплоя запускать. Если есть - удалить и добавить. Есть что-то уже готовое на баше ?

★★★★

Последнее исправление: bryak (всего исправлений: 1)
#!/bin/bash

ip="$1"
hosts="$2\n"
hosts_file=/etc/hosts

# add domain to host
hosts+=$(awk -v ip="$ip" '$0 ~ ip {for (i=2; i<=NF; i++) print $i}' ${hosts_file})

# backup host file
cp ${hosts_file}{,.bk}

# Add rest lines from original hosts file
grep -v "$ip" ${hosts_file}.bk > ${hosts_file}

# Unique domains for host
domains=$(echo -e "$hosts" | sort -u | tr '\n' ' ')

# Result line
echo -en "$ip\t$domains" >> ${hosts_file}
# cat with pattern highlighting :) 
egrep --color "$ip|$" ${hosts_file}

./add_host.sh 10.10.10.10 mydomain.xxx

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

Voronov
()
Ответ на: комментарий от Andrey_Utkin

не позволит читать и писать в один и тот же файл. Без создания временного никак нельзя обойтись ?

bryak ★★★★
() автор топика
Ответ на: комментарий от Vasily22

Так скрипт просто пропускает строку с PROJECT_MAGIC_TAG, независимо от наличия в ней других символов.

muon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.