Risposte:
pkill -SIGTERM -f 'openvpn --daemon --conf $ OPENVPNCONFFILE'
il comando pkill consente di segnalare un processo in base al nome o ad altri attributi
Questo invierà SIGTERM a openvpn causandone la chiusura e la chiusura graduali dell'interfaccia tun. Potrebbe essere necessario / sarà necessario modificare la sezione dopo -f in modo che corrisponda al modo in cui è stata avviata la connessione openvpn.
L'ho trovato nella sezione Segnali della pagina man di openvpn.
SIGINT, SIGTERM
Causes OpenVPN to exit gracefully.
Determina l'interfaccia virtuale con ifconfig
:
tap0 Link encap:Ethernet HWaddr 32:28:a4:04:34:cc
inet addr:172.22.18.14 Bcast:172.22.18.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
e spegnilo con:
sudo ifconfig tap0 down
Ecco lo script di init che ho scritto per RedHat basato:
#! /bin/bash
#
# openvpn-client Start/Stop the openvpn client
#
# chkconfig: 2345 90 60
# description: start openvpn client at boot
# processname: openvpn
# Source function library.
. /etc/init.d/functions
daemon="openvpn"
prog="openvpn-client"
conf_file="/vagrant/vpn/client-dept18-payment.ovpn"
start() {
echo -n $"Starting $prog: "
if [ -e /var/lock/subsys/openvpn-client ] && [ $(pgrep -fl "openvpn --config /vagrant/vpn/client-dept18-payment.ovpn" | wc -l) -gt 0 ]; then
echo_failure
echo
exit 1
fi
runuser -l root -c "$daemon --config $conf_file >/dev/null 2>&1 &" && echo_success || echo_failure
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/openvpn-client;
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
pid=$(ps -ef | grep "[o]penvpn --config $conf_file" | awk '{ print $2 }')
kill $pid > /dev/null 2>&1 && echo_success || echo_failure
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/openvpn-client;
return $RETVAL
}
status() {
pgrep -fl "openvpn --config /vagrant/vpn/client-dept18-payment.ovpn" >/dev/null 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
pid=$(ps -ef | grep "[o]penvpn --config $conf_file" | awk '{ print $2 }')
echo $"$prog (pid $pid) is running..."
else
echo $"$prog is stopped"
fi
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
condrestart)
[ -f /var/lock/subsys/openvpn-client ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart}"
exit 1
esac
allora puoi usarlo come al solito:
# /etc/init.d/openvpn-client start
Starting openvpn-client: [ OK ]
# /etc/init.d/openvpn-client start
Starting openvpn-client: [FAILED]
# /etc/init.d/openvpn-client status
openvpn-client (pid 5369) is running...
# /etc/init.d/openvpn-client stop
Stopping openvpn-client: [ OK ]
# /etc/init.d/openvpn-client stop
Stopping openvpn-client: [FAILED]
# /etc/init.d/openvpn-client status
openvpn-client is stopped
# /etc/init.d/openvpn-client restart
Stopping openvpn-client: [ OK ]
Starting openvpn-client: [ OK ]
# /etc/init.d/openvpn-client status
openvpn-client (pid 5549) is running...
Non ho mai usato il raggio libero, ma ho familiarità con un problema simile in OpenVPN. Se la connessione viene avviata dalla riga di comando, il client VPN rimane attivo sul prompt o si ritira in background, ma non esiste alcun comando per interrompere esplicitamente la connessione.
Sotto Linux l'unico modo per interrompere la connessione è con un comando "kill" o "killall". Potrebbe essere simile per le connessioni a raggio libero.
Ho pensato di aggiornare il mio commento con una risposta più completa (che potrebbe non essere pertinente, considerando che non conosco il raggio libero) ..
Sto usando una distro Debian Linux e ho installato il pacchetto openvpn. La configurazione del client in Debian può essere avviata dalla riga di comando, il che porta a questo problema in quanto apparentemente non esiste un modo pulito per terminare / gestire la connessione ...
Oggi ho imparato che esiste uno script /etc/init.d/openvpn che viene eseguito all'avvio e se inserisco il file di configurazione di openvpn in / etc / openvpn / (l'estensione del file deve essere .conf), posso controllare la connessione usando /etc/init.d/openvpn stop e etc / init.d / openvpn start (o "service openvpn stop").
Se si inserisce il file di configurazione in / etc / openvpn /, il tunnel VPN si attiva automaticamente all'avvio. Si riconnette automaticamente anche dopo la disconnessione.
sudo pkill openvpn