LINUX.ORG.RU

sed необходима помощь


0

0

При администрировании часто возникают задачи, которые могут быть решены универсальными скриптами. Я собираюсь в отпуск и хочу оставить вместо себя с десяток скриптов которые помогут мне спокойно отдохнуть. Помогите разобраться с ситуацией.

В /etc/default лежит файл saslauthd, формат

# This needs to be uncommented before saslauthd will be run automatically
# START=yes
# You must specify the authentication mechanisms you wish to use.
# This defaults to "pam" for PAM support, but may also include
# "shadow" or "sasldb", like this:
# MECHANISMS="pam shadow"

MECHANISMS="pam"

его надо превратить в

# This needs to be uncommented before saslauthd will be run automatically
START=yes

PARAMS="-m /var/spool/postfix/var/run/saslauthd -r"
PIDFILE="/var/spool/postfix/var/run/${NAME}/saslauthd.pid"

# You must specify the authentication mechanisms you wish to use.
# This defaults to "pam" for PAM support, but may also include
# "shadow" or "sasldb", like this:
# MECHANISMS="pam shadow"

MECHANISMS="pam"

Это довольно просто решается
sed -i '/START/s/^.*/START=yes/' ./saslauthd

sed -i '/START/ a\\nPARAMS="-m /var/spool/postfix/var/run/saslauthd -r" \
PIDFILE="/var/spool/postfix/var/run/${NAME}/saslauthd.pid"\n' ./saslauthd

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


Re: sed необходима помощь

Сделай пару нужных тебе файлов (saslauthd) и меняй их по-мере надобности (можно линком)

sdio ★★★★★
()

Re: sed необходима помощь

> как проверить есть ли такой параметр, если есть заменить его значение, если нет то вставить.

Предварительно погрепать?

Jini ★★
()
Ответ на: Re: sed необходима помощь от anonymous

Re: sed необходима помощь

Ну например:
Надо вставить: grep '^START=yes' /etc/default/saslauthd || sed -i ...
Надо удалить/заменить: grep '^START=yes' /etc/default/saslauthd && sed -i ...

Или так:
if grep '^START=yes' /etc/default/saslauthd; then
# заменяем
else
# вставляем
fi

Странно: ты, похоже, умеешь работать с sed'ом и не знаешь таких простых вещей в шелле. Может, я чего-то не понимаю?

Jini ★★
()
Ответ на: Re: sed необходима помощь от anonymous

Re: sed необходима помощь

Если речь идет только о таких конфигах -- баш-скрипт с присвоением переменных,
то просто в своем баш-скрипте делаешь:

. /etc/default/saslauthd

if [ -n "$START" -a "$START" == "yes" ]; then
     sed -i ... 
else
   # start not defined or start = "no"
     sed -i ...
fi

sdio ★★★★★
()
Ответ на: Re: sed необходима помощь от Jini

Re: sed необходима помощь

> Странно: ты, похоже, умеешь работать с sed'ом и не знаешь таких простых вещей в шелле. Может, я чего-то не понимаю?

Просто я еще в процессе изучения и жизнь заставила изучить sed чуть чуть раньше :-). Спасибо.

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