Автоматическая замена значения c в файле .conf на предустановку - PullRequest
0 голосов
/ 04 апреля 2020

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

Вот идея: у каждого сервера есть уникальный ключ и порт publi c, скрипт изменил бы строку publickey и конечной точки на произвольный сервер (используя его publickey & port).

Вот как выглядит конфигурация Wireguard

[Interface]
PrivateKey = [HIDDEN]
Address = [HIDDEN]
DNS = 2.2.2.2
[Peer]
PublicKey = [PUBLIC KEY]
AllowedIPs = 0.0.0.0/0,::0/0
Endpoint = 1.1.1.1:[PORT]

Что я хочу сделать здесь, это замените порт в конце конечной точки и замените открытый ключ. IP (1.1.1.1) не меняется вообще.

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

Вот пример:

[Interface]
PrivateKey = QajJg8GJPQwCD743EXD8TmKlA1wQAqz9mSBqclPg2zw=
Address = 10.65.31.104/32,fc00:bbbb:bbbb:bb01::2:1f67/128
DNS = 193.138.218.74

[Peer]
PublicKey = 4ZoyMZqQ8k94bQ3egN2vOyiSPG9nZ611r1606wtmVQI=
AllowedIPs = 0.0.0.0/0,::0/0
Endpoint = 217.138.200.226:3099

Конечный результат должен заменить порт конечной точки (3099) и Publickey (4Zoy ... mVQI =) на случайный другой сервер, поступающий из списка предустановок Допустим, скрипт выбирает произвольно открытый ключ «JdSt ... 6CHk =» и порт 3088 (для сервера ca5), он должен выглядеть следующим образом

[Interface]
PrivateKey = QajJg8GJPQwCD743EXD8TmKlA1wQAqz9mSBqclPg2zw=
Address = 10.65.31.104/32,fc00:bbbb:bbbb:bb01::2:1f67/128
DNS = 193.138.218.74

[Peer]
PublicKey = JdSt7WR/eeiHeGdj3W5XrTDrkyv4EdM3+3P/Jkg6CHk=
AllowedIPs = 0.0.0.0/0,::0/0
Endpoint = 217.138.200.226:3088

Мне нужна помощь в руководстве я в хорошем направлении. Спасибо тебе!

1 Ответ

0 голосов
/ 08 апреля 2020

Добро пожаловать в stackoverflow.

Это поможет.


# Let's assume the existing config file is called wireguard.cfg
#

# Let's first save the IP , because we will need it later again
#
OLD_IP=`grep Endpoint wireguard.cfg| cut -d= -f2|cut -d: -f1`

# Assuming that we know the NEW PUBLIC KEY and NEW PORT
NEW_PUB_KEY="foobar1234zdhakjdhaj"
NEW_PORT="1234"

# Now we will replace the Public Key and the Port
# New file will get spit out on standard out
# You can always use > to send it to any new file 
sed  "s/.*PublicKey.*/PublicKey = $NEW_PUB_KEY/" wireguard.cfg | sed  "s/.*Endpoint.*/Endpoint = $OLD_IP:$NEW_PORT/"

Вот пример запуска:

mamuns-mac:~ xmrashid$ cat wireguard.cfg 
[Interface]
PrivateKey = QajJg8GJPQwCD743EXD8TmKlA1wQAqz9mSBqclPg2zw=
Address = 10.65.31.104/32,fc00:bbbb:bbbb:bb01::2:1f67/128
DNS = 193.138.218.74

[Peer]
PublicKey = 4ZoyMZqQ8k94bQ3egN2vOyiSPG9nZ611r1606wtmVQI=
AllowedIPs = 0.0.0.0/0,::0/0
Endpoint = 217.138.200.226:3099
mamuns-mac:~ xmrashid$ 
mamuns-mac:~ xmrashid$ ./modify_wireguard.sh 
[Interface]
PrivateKey = QajJg8GJPQwCD743EXD8TmKlA1wQAqz9mSBqclPg2zw=
Address = 10.65.31.104/32,fc00:bbbb:bbbb:bb01::2:1f67/128
DNS = 193.138.218.74

[Peer]
PublicKey = foobar1234zdhakjdhaj
AllowedIPs = 0.0.0.0/0,::0/0
Endpoint =  217.138.200.226:1234
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...