Эта статья путает Linux (ядро )и Gnu/Linux, поэтому трудно понять, о чем она говорит.
Однако с некоторым усилием можно увидеть, что он не обсуждает что-то в ядре :он говорит
in the "plumbing layer" that wraps the kernel.
и
Such changes should not bother users as long as the kernel and the plumbing layer change at the same time.
В статье говорится о том, что это такое
This layer is not precisely defined.
Реализация ответаhttps://unix.stackexchange.com/users/100397/roaimaи знание того, что у меня открыто только одно соединение openvpn, позволяет мне повторно использовать команду pkill -9 -x $process_name
из Лучший способ убить процессы, созданные сценарием bash?-и это привело меня к этому коду
#!/bin/bash
exec 3< <(sudo openvpn --config /etc/openvpn/server.ovpn)
sed '/Initialization Sequence Completed$/q' <&3 ; cat <&3 &
ssh server
sudo pkill -9 -x openvpn
Итак,в сумме
сгенерировать скрипт ssh -vpn.sh с кодом выше (добавлена некоторая printf
информация о том, что происходит)
#!/bin/bash
printf "Script to initialise openvpn connection to XYZ and open ssh channel into XYZ Server.\n"
printf "Starting openvpn to YXZ...\n\n"
exec 3< <(sudo openvpn --config /etc/openvpn/server.ovpn)
sed '/Initialization Sequence Completed$/q' <&3 ; cat <&3 &
printf "VPN now initialised.\nstarting ssh connection to XYZ...\n"
ssh server
printf "\nKilling openvpn connection...\n"
sudo pkill -9 -x openvpn
# end of script
в оболочке
# just once
chmod a+rx ssh-vpn.sh
запустить команду в оболочке
# thereafter
./ssh-vpn.sh
Проблема в том, что код написан для оболочки bash
, но вы явно используете sh
для ее запуска. На растущем числе платформ это не то же самое.
Вместо sh ssh-vpn.sh
у вас есть два лучших варианта
Сделайте скрипт исполняемым и позвольте строке #!
определить используемую оболочку
# just once
chmod a+rx ssh-vpn.sh
# thereafter
./ssh-vpn.sh
Запустите скрипт с правильной оболочкой
bash ssh-vpn.sh