Зараз все частіше доводиться генерувати саме ovpn файли, де все вже в середині (і конфіг і сертифікати). Нижче буде коротке how-to для випадку, коли треба зробити це для 10 чи 20 логінів.
1. Створюємо шаблон
client dev tun0 remote XX.XX.XX.XX 1194 proto udp tun-mtu 1500 ns-cert-type server remote-cert-tls server pull cipher AES-128-CBC resolv-retry infinite nobind persist-tun persist-key keepalive 10 30 comp-lzo verb 3 <ca> -----BEGIN CERTIFICATE----- XXX -----END CERTIFICATE----- </ca> <cert> CRT_TMPL </cert> <key> KEY_TMPL </key>
2. Генеруємо конфіги
for i in `cat list1.txt`; do echo $i; echo '-----BEGIN CERTIFICATE-----'> ${i}.crt;cat /etc/openvpn/easy-rsa/keys/${i}.crt | sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/ {//!p}'>>${i}.crt;echo '-----END CERTIFICATE-----'>>${i}.crt; done
for i in `cat list1.txt`; do echo $i; sed "/^KEY_TMPL/ r /etc/openvpn/easy-rsa/keys/${i}.key" < client.ovpn_example > ${i}.ovpn_tmp; done
for i in `cat list1.txt`; do echo $i; sed "/^CRT_TMPL/ r ${i}.crt" < ${i}.ovpn_tmp > ${i}.ovpn_new; done
for i in `cat list1.txt`; do echo $i; cat ${i}.ovpn_new | sed '/KEY_TMPL/d' | sed '/CRT_TMPL/d' > ${i}.ovpn_new2;done
mkdir VPN;for i in `cat list1.txt`; do echo $i; mv ${i}.ovpn_new2 VPN/${i}.ovpn;done
3. Пояснення.
Ключі і сертифікати знаходяться у папці /etc/openvpn/easy-rsa/keys/
, а результуючі – у папці VPN поточної папки, список користувачів у файлі list1.txt (по одному на рядок)
4. Нюанси.
Враховуючи, що є різні реалізації sed, то в данному випадку мається на увазі GNU sed, тобто на BSD/Solaris може не працювати.