Самостоятельно скомпилированный OpenVPN не запускается из systemd

В Bash (или какой-либо другой оболочке, поддерживающей $ '' и массивы), это должно работать, если ваши входные файлы не 't contain tabs (*) :

IFS=$'\t'
paste arg1.txt arg2.txt | 
while read -r -a A ; do 
   [ "${#A[@]}" -eq 2 ] && printf "%s - %s\n" ${A[@]}
done 

paste склеивает входные файлы построчно, read -a A считывает столбцы в массив ] A , используя табуляцию (из IFS ) в качестве разделителя. ["$ {# A [@]}" -eq 2] проверяет, что в массиве ровно два члена, а $ {A [@]} удаляет их в командной строке. из printf . При необходимости измените команду.

(* если вам нужна поддержка вкладок, я бы перешел к использованию, например, Perl)

С этими входными файлами:

$ cat arg1.txt 
foo bar
doo
$ cat arg2.txt 
one
two two
three three three

Вывод из приведенного выше фрагмента:

foo bar - one
doo - two two

Последняя строка из arg2.txt игнорируется, поскольку arg1.txt не имеет соответствующей строки. read игнорирует ведущие табуляции, что делает невозможным использование, если мы заботимся о том, в каких столбцах были пропущенные элементы.

3
23.11.2017, 14:18
1 ответ

Обновление из ответа Ильи (У меня нет репутации, чтобы комментировать)

У меня он работает в Ubuntu 16.04, используя предоставленную службу в качестве шаблона (, поэтому один файл службы ), изменяя две вещи:

sudo cp ~/Downloads/openvpn-2.4.8/distro/systemd/openvpn-client@.service.in /lib/systemd/system/openvpn-client@.service

sudo vi /lib/systemd/system/openvpn-client@.service

Изменить:

  • @sbindir@ в /usr/local/sbin/
  • Тип=уведомить для Тип=простой

Перезагрузка и запуск

sudo systemctl daemon-reload
service openvpn-client@client.service restart
service openvpn-client@client.service status

Предполагается, что у вас уже есть конфигурация в /etc/openvpn/client/client.service.conf

3
14.04.2020, 15:17

Теги

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