我正在使用对话框 GUI。
./sdvpn.sh
是 GUI 主菜单的代码,如下所示。
./killvpn.sh
是仅包含一个命令的脚本,sudo pkill vpn
./region.sh
是一个对话菜单,允许您指定您希望 VPN 连接的国家/地区。
什么时候我想要终止所有活动的 OpenVPN 连接,我在下面的菜单中选择选项2:
`#!/bin/bash
#Main Menu
HEIGHT=15
WIDTH=40
CHOICE_HEIGHT=4
BACKTITLE="VPN"
TITLE="Main Menu"
MENU="Choose an Option: "
OPTIONS=(1 "VPN Menu"
2 "Kill Active VPN")
CHOICE=$(dialog --clear \
--backtitle "$BACKTITLE" \
--title "$TITLE" \
--menu "$MENU" \
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${OPTIONS[@]}" \
2>&1 >/dev/tty)
clear
case $CHOICE in
1)
cd ~/VPN/gui
./region.sh
;;
2)
cd ~/VPN/scripts
./killvpn.sh
cd ~/VPN
./sdvpn.sh
;;
esac`
选项 2 的代码应该实现以下目标:
- 进入我的脚本目录
- 执行
sudo pkill vpn
- 返回保存我的主要 menu.sh 的主文件夹
- 运行主菜单,完成整个过程。
问题
它不会返回主菜单,我无法解决这个问题。同样的方法在 Kali Linux 2018.2 上完美运行。
当我执行sudo pkill vpn
或我的killvpn.sh
文件时,它会按预期终止 VPN 连接。但是,当从 Dialog GUI 运行同一脚本时,我收到一条消息,显示“已终止”。
我尝试重新路由killvpn.sh
以激活对话框 GUI 作为其脚本的一部分,但出现了同样的问题。然后我尝试使用和sudo pkill vpn
来killvpn.sh
包含 sleep 命令,因为我只是返回到终端,并相信这是一个它可以执行以继续运行代码的过程,但这也失败了。
我现在无法从 GUI 中终止 VPN,我想知道是否有办法删除“已终止”消息,或者有办法完成我的任务。作为额外奖励,如果有人能向我解释在什么情况下会pkill vpn
显示此消息,我将不胜感激,这样我以后就可以避免这种情况了。
答案1
在这种情况下,我发现使用该命令
sudo killall openvpn
既是终止 OpenVPN 连接的更有效方法,又避免了出现对话框,sudo pkill vpn
让我可以毫无问题地返回对话框菜单。