Оказалось, в моей функции create_list() копия был обнаружен малозаметный и посему дико поганый баг. А баг был с командой find
. Например, если запустить ее в любом каталоге с параметрами
find /home/smallwolfie/openvpn/configs -maxdepth 1 -iname *.ovpn
, то она найдет все файлы *.ovpn
Но вот если команду запустить в каталоге с файлами (/home/smallwolfie/openvpn/configs
), то она упадет:
cd /home/smallwolfie/openvpn/configs
find /home/smallwolfie/openvpn/configs -maxdepth 1 -iname *.ovpn
Вывод:
find: paths must precede expression: riseup-nl.ovpn
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
Заключить маску файла в кавычки:
find /home/smallwolfie/openvpn/configs -maxdepth 1 -iname "*.ovpn"
Вывод:
/home/smallwolfie/openvpn/configs/vpnbook-pl226-tcp80.ovpn
/home/smallwolfie/openvpn/configs/vpnbook-de4-tcp80.ovpn
/home/smallwolfie/openvpn/configs/vpnbook-us1-tcp80.ovpn
/home/smallwolfie/openvpn/configs/vpnbook-us2-tcp80.ovpn
/home/smallwolfie/openvpn/configs/vpnbook-ca222-tcp80.ovpn
/home/smallwolfie/openvpn/configs/vpnbook-ca198-tcp80.ovpn
/home/smallwolfie/openvpn/configs/vpnbook-fr1-tcp80.ovpn
/home/smallwolfie/openvpn/configs/riseup-ca.ovpn
/home/smallwolfie/openvpn/configs/riseup-nl.ovpn
/home/smallwolfie/openvpn/configs/riseup-us.ovpn
/home/smallwolfie/openvpn/configs/vpnbook-fr8-tcp80.ovpn
Пример из файла скрипта для соединения с определенным VPN-сервером
create_list() #$1 - dir, $2 - file mask { FOUNDLST="" echo "Find in $1" for FLE in $(find $1 -maxdepth 1 -iname "$2"|sort); do if [ -n "$FLE" ]; then FOUNDLST="$FOUNDLST"`basename $FLE`"\n" fi done }