Respuestas:
pkill -SIGTERM -f 'openvpn --daemon --conf $ OPENVPNCONFFILE'
El comando pkill le permite señalar un proceso basado en el nombre u otros atributos
Esto enviará SIGTERM a openvpn, lo que provocará que salga y cierre la interfaz de tun. Es posible que deba modificar la sección después de -f para que coincida con la forma en que inició la conexión openvpn.
Encontré esto en la sección Señales de la página de manual de openvpn.
SIGINT, SIGTERM
Causes OpenVPN to exit gracefully.
Determine la interfaz virtual 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)
y apagarlo con:
sudo ifconfig tap0 down
Aquí está el script de inicio que escribí para RedHat:
#! /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
entonces puedes usarlo como siempre:
# /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...
Nunca he usado radio libre, pero estoy familiarizado con un problema similar en OpenVPN. Si la conexión se inicia desde la línea de comando, entonces el cliente VPN permanece vivo en la solicitud o se retira al fondo, pero no hay un comando para detener explícitamente la conexión.
En Linux, la única forma de detener la conexión es con un comando "kill" o "killall". Podría ser similar para conexiones de radio libre.
Solo pensé en actualizar mi comentario con una respuesta más completa (lo que puede no ser relevante, considerando que no sé sobre el radio libre).
He estado usando una distribución Debian Linux e instalé el paquete openvpn. La configuración del cliente en Debian se puede iniciar a través de la línea de comandos, lo que lleva a uno a este problema de que aparentemente no hay una forma ordenada de terminar / administrar la conexión ...
Sin embargo, hoy aprendí que hay un script /etc/init.d/openvpn que se ejecuta en el momento del arranque y si coloco el archivo de configuración de openvpn en / etc / openvpn / (la extensión del archivo debe ser .conf), puedo controlar la conexión utilizando /etc/init.d/openvpn stop y etc / init.d / openvpn start (o "service openvpn stop").
Poner el archivo de configuración en / etc / openvpn / también hace que el túnel VPN se levante automáticamente en el momento del arranque. También se vuelve a conectar después de desconectarse automáticamente.
sudo pkill openvpn