Bash вставить несколько строк в файл после конкретной?

Нужно сделать максимально просто.
1. Находим в файле строчку
" include bx/conf/ssl.conf;" коментим ее
и под ней добавляем еще несклоьо строк.
Не перетираем, не вставляем на любую из строчек а добавляем в это место.
сейчас пока так.

sed -i "s/ include bx\/conf\/ssl.conf\x3B/\ #include bx\/conf\/ssl.conf\x3B/g" /tmp/333/111.conf

Напрашивается EOF
Да и имя домена потом будет переменой!
Жедательно чтоб было в максимально читаемом виде.
Соответственно осталось еще добаить вот эти строки.
ssl_certificate /etc/letsencrypt/live/mfwo.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mfwo.ru/privkey.pem;
ssl on;
 keepalive_timeout 70;
 keepalive_requests 150;
 ssl_session_cache shared:SSL:10m;
 ssl_session_timeout 10m;
  • Вопрос задан
  • 2103 просмотра
Решения вопроса 1
@xibir
sed -i '\| include bx/conf/ssl.conf| { s| include bx/conf/ssl.conf|#&|; a\
ssl_certificate /etc/letsencrypt/live/mfwo.ru/fullchain.pem;\
ssl_certificate_key /etc/letsencrypt/live/mfwo.ru/privkey.pem;\
ssl on;\
 keepalive_timeout 70;\
 keepalive_requests 150;\
 ssl_session_cache shared:SSL:10m;\
 ssl_session_timeout 10m;
}' /tmp/test.conf
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
shambler81
@shambler81 Автор вопроса, куратор тега Linux
Вот скриктец, у кого идеи есть по оптимизации, скажу спасибо.

#тут указываем совой домен

DOMAIN=mfwo.ru
EMAIL=vtaran@wildorchid.ru

#############################################################################################################
#ставим гит, если его нет
rpm -q git && echo "А гит уже стоит и мы его пропускаем" || yum install git
# в этой папке и будет лежать сам дистрибутивчик cetbot, он нам нужен будет потом для  обновления ключиков.
cd /root
#проверяем  не скачан ли он уже и качаем если нет.
test -d certbot && echo "Каталог уже есть, ниче не качаем" || git clone https://github.com/certbot/certbot
cd certbot

# Выставляем права  на файл
chmod a+x ./certbot-auto || echo "проблема  правами на файл" && echo "Права  на файл поменяли успешно"


# проверяем верен ли путь до сайта, и не сгенерирован ли уже ключик, если все ок генерим!
test -d /home/bitrix/ext_www/$DOMAIN  || echo "/home/bitrix/ext_www/$DOMAIN.ru -нет такой директории"  && test -f /etc/letsencrypt/live/$DOMAIN/fullchain.pem && echo "А файл уже есть, не не генерируем новый !" || 
./certbot-auto certonly --webroot --agree-tos --email $EMAIL -w /home/bitrix/ext_www/$DOMAIN -d $DOMAIN -d www.$DOMAIN || echo "А не угадали с каталогом, проверяем пути" &&


# коментит "include bx/conf/ssl.conf/ssl.conf;"  и добавляет строки
# ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem;
# ssl on;
# keepalive_timeout 70;
# keepalive_requests 150;
# ssl_session_cache shared:SSL:10m;
# ssl_session_timeout 10m;
sed -i "s/ include bx\/conf\/ssl.conf\x3B/\ #include bx\/conf\/ssl.conf\x3B\n  ssl_certificate \/etc\/letsencrypt\/live\/$DOMAIN\/fullchain\.pem\x3B\n  ssl_certificate_key \/etc\/letsencrypt\/live\/$DOMAIN\/privkey\.pem\x3B\n  ssl on\x3B\n  keepalive_timeout 70\x3B\n  keepalive_requests 150\x3B\n  ssl_session_cache shared:SSL:10m\x3B\n  ssl_session_timeout 10m\x3B/g" /etc/nginx/bx/site_avaliable/bx_ext_ssl_$DOMAIN.conf && echo "замена  в конфигах прошал  без ошибок"

# перед рестартом  проверяем валидность конфигов, если ок рестартуем.

service nginx configtest && echo "Nginx  валидно завершил проверку конфигов" && service nginx restart 

#certbot-auto renew
#првоеряем нет ли записи в кроне и добавляем ее  
echo "Записываем Автообновление сертификатов  крон"
crontab -l | grep -q "\* \*/12 \* \* \*   cd /root/certbot/ \&\& \./certbot-auto renew >> /dev/null 2>\&1 "  && echo "А в кроне уже запись есть, ничего не добавляем" || echo "* */12 * * *   cd /root/certbot/ && ./certbot-auto renew >> /dev/null 2>&1 "  >> /var/spool/cron/root  

echo "не забывайте про редиректы которые могут вести на http!!!!!!!!"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы