Сценарии Bash. Как направить вывод на несколько входов в OpenVPN?

what happens if /dev/sdb fails?

Ваш lvol1 больше не будет работать. Потеря одного диска означает потерю данных на 5 дисках. В томе будет отсутствовать огромный кусок данных (весь диск исчезнет )и, скорее всего, какую бы файловую систему вы ни использовали поверх этого, это ничуть не понравится.

Вы не должны ожидать, что fsckчто-то восстановит. Это может случиться, но fsckне является инструментом восстановления данных, он в основном используется только для устранения незначительных несоответствий, а не для волшебной работы с пропавшими сотнями гигабайт данных. Иногда fsckсовершенно счастлив предоставить вам непротиворечивую (, но странно пустую )файловую систему.

Если вы используете fsckили что-то еще, делайте это с помощью снимка или наложения, чтобы вы могли отменить любые сделанные изменения. (Восстановление данных требует работы только в режиме чтения -или копирования -в режиме записи -.)

Поскольку LVM является линейным (по умолчанию, в любом случае ), photorecи другие инструменты по-прежнему смогут находить (нефрагментированные, незашифрованные )данные на других дисках.

Хотя LVM с удовольствием разместится на многих дисках, может быть лучше создать несколько томов меньшего размера. Тома, которые не находились на отсутствующем диске, сохранятся. Меньшие файловые системы также избегают проблемы с fsck, которая имеет тенденцию быть очень ресурсоемкой и занимать очень много времени, в зависимости от размера файловой системы.

Использование дисков без разделов сопряжено с риском непреднамеренного создания таблицы разделов в любом случае -с перезаписью других метаданных в процессе. Вы всегда должны использовать таблицу разделов.

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

Если вы не хотите восстанавливать резервные копии после каждого отказа одного диска, также используйте RAID.

0
01.04.2020, 21:41
2 ответа

Вы можете добавить имя пользователя и пароль в защищенный файл (, который может прочитать только владелец ). Подробности смотрите в auth-user-passв документации OpenVPN (man openvpn):

.
cat > /path/to/secret <<'X'
myusername
verysecret
X
chmod u=rw,go= /path/to/secret

Теперь найдите директиву auth-user-passв файле конфигурации OpenVPN и расширьте ее следующим образом

auth-user-pass /path/to/secret
2
19.03.2021, 02:30

Это похоже на задание для expect .

Для этой демонстрации я написал короткий скрипт, имитирующий поведение вашей команды openvpn:

#! /usr/bin/env bash
echo "Wed Apr  1 21:23:28 2020 OpenVPN 2.4.7 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4]"
echo "[EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Feb 20 2019"
echo "Wed Apr  1 21:23:28 2020 library versions: OpenSSL 1.1.1d  10 Sep 2019, LZO 2.10"
read -r -p 'Enter Auth Username: ' USERNAME
read -rs -p 'Enter Auth Password: ' PASSWORD

echo
echo "username was $USERNAME"
echo "password was $PASSWORD"

Вот краткий сценарий ожидания, который отвечает на эти запросы:

#! /usr/bin/env expect

spawn./fakevpn --config vpnbook-pl226-udp53.ovpn

expect "Enter Auth Username: " { send Hello\r } # \r is the "return" character.
expect "Enter Auth Password: " { send World\r } # It simulates hitting the Enter key.
expect eof # This ensures expect won't exit until there's no more output.

Вот как выглядит вывод:

[gnubeard@mothership: ~/vpn]$./vpn_expect
spawn./fakevpn --config vpnbook-pl226-udp53.ovpn
Wed Apr  1 21:23:28 2020 OpenVPN 2.4.7 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4]
[EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Feb 20 2019
Wed Apr  1 21:23:28 2020 library versions: OpenSSL 1.1.1d  10 Sep 2019, LZO 2.10
Enter Auth Username: Hello
Enter Auth Password:
username was Hello
password was World

Изменить :Решение roiama лучше этого из соображений безопасности. Я оставлю это на случай, если это будет полезно для тех, кто пытается понять, как автоматизировать интерактивные команды.

1
19.03.2021, 02:30

Теги

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