sed для замены неоткомментированных строк в файле

Я искал и нашел хорошо информированные ответы, которые, как мне кажется, должны работать, но я не могу их найти Работа. Проблема в том, что я явно не понимаю sed и все косые черты и что все это связано с регулярным выражением. Думаю, именно поэтому я не могу перейти мост от очень информативных ответов (таких как sed: -e expression unknown option to `s ') до выполнения этой работы за меня.

/ etc / сеть / интерфейс:

# WAN (Internet connection)
auto wlp3s0 
iface wlp3s0 inet dhcp
dns-nameservers 1.1.1.1 8.8.8.8 
wpa-conf /etc/wpa_supplicant_some1.conf
#wpa-conf /etc/wpa_supplicant_oldstuff.conf

сценарий bash:

#!/bin/bash
NEW_LINE="wp-conf /etc/wpa_supplicant_someother.conf"
sed -i '/wpa-conf /c\'"$NEW_LINE" /etc/network/interfaces

Вышеупомянутый тип работает. Вся строка в файле, начинающаяся с wpa-conf, заменяется новой строкой в ​​скрипте, что прекрасно.

Но есть неприятная оговорка: закомментированная строка wpa-conf также изменяется. Это то, чего я пытаюсь избежать. Читая другие ответы, я пробовал их в сценарии и кучу других безнадежных вариантов, которые, как мне казалось, безрезультатно. Это приводит к различным ошибкам:

sed -i '/^#/!s/wpa-conf /c\'"$NEW_LINE" /etc/network/interfaces
sed -i '|^#|!s|wpa-conf /c\'"$NEW_LINE" /etc/network/interfaces
sed -i '|^#|!s|wpa-conf |c\'"$NEW_LINE" /etc/network/interfaces

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

Все, что я пытаюсь сделать, это замените строку другой строкой, если она не является строкой с комментариями. Строка замены должна быть дана в форме переменной, потому что она исходит из других источников, не показанных здесь для краткости. proto tcp Dev Tun ca ca.crt сертификат server.crt ключ server.key dh dh2048.pem подсеть топологии сервер 10.8.0.0 255.255.255.0 ...

У меня есть сервер OpenVPN, работающий со следующим конфигурационным файлом

port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key 
dh dh2048.pem
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
tls-crypt myvpn.tlsauth
cipher AES-256-CBC
compress lz4-v2
push "compress lz4-v2"
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn.log
verb 3
remote-cert-eku "TLS Web Client Authentication"

, и у меня подключены разные клиенты, на машинах Debian я использовал следующий конфигурационный файл

client
tls-client
ca ca.crt
cert pibox.crt
key pibox.key
tls-crypt myvpn.tlsauth
proto tcp
remote X.X.X.X 1194 tcp
dev tun
topology subnet
cipher AES-256-CBC
log /var/log/openvpn.log
pull
script-security 2                     
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

, все работает нормально, я могу получить доступ к своей VPN а также у меня есть доступ к Интернету, я пытаюсь настроить клиент CentOS 7, для которого я использовал тот же файл конфигурации, но поскольку

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

не может использоваться, я не уверен, как я могу настроить DNS, я исследования, и некоторые люди упоминают openresolv , я также пробовал с

pull-filter ignore "dhcp-option DNS"

, но ничего не работает, я читал это , но у меня нет

/usr/share/openvpn/update-resolv-conf
/usr/share/openvpn/update-resolv-conf

Какова правильная процедура для настроить DNS на клиенте CentOS?

1
задан 8 April 2018 в 02:17
2 ответа

Мне удалось это исправить, я сделал

cd /etc/yum.repos.d
sudo wget https://copr.fedorainfracloud.org/coprs/macieks/openresolv/repo/epel-7/macieks-openresolv-epel-7.repo
sudo yum update
sudo yum install openresolv

, он создаст /etc/resolv.conf

, затем Я изменил его, чтобы настроить свой собственный DNS

# Generated by NetworkManager
search Home
nameserver 8.8.8.8
nameserver 8.8.4.4

клиент

client
tls-client
ca ca.crt
cert i7box.crt
key i7box.key
tls-crypt myvpn.tlsauth
proto tcp
remote x.x.x.x 1194 tcp
dev tun
topology subnet
cipher AES-256-CBC
log /var/log/openvpn.log
pull

, также я отключил автоматический DNS и поставил статические,если вы знаете лучший метод, дайте мне знать

GUI static DNS

1
ответ дан 3 December 2019 в 23:18

на стороне сервера (сервер OPenVPN) перейдите к файлу server.conf, обычно он существует vim /etc/openvpn/server.conf или vim /etc/openvpn/server/server.conf измените эту строку в соответствии с вашим DNS-сервером

push "dhcp-option DNS 8.8.8.8"

, это изменит настройку DNS на стороне клиента при запуске

0
ответ дан 3 May 2021 в 18:05

Теги

Похожие вопросы