centos自动安装openvpn(快捷拨入VPN)
代码保存为.sh文件
使用 ./*.sh [start|stop|uninstall]
#!/bin/bash
# 配置文件保存路径
CONFIG_FILE="$HOME/.openvpn_client_config"
# 函数:检查并安装 OpenVPN
install_openvpn() {
if ! command -v openvpn &> /dev/null; then
echo "OpenVPN 未安装。正在安装 OpenVPN..."
if [ -f /etc/centos-release ]; then
# CentOS 系统
sudo yum install -y epel-release
sudo yum install -y openvpn
else
if [ -f /etc/debian_version ]; then
# Debian/Ubuntu 系统
sudo apt-get update
sudo apt-get install -y openvpn
else
echo "不支持的操作系统。请手动安装 OpenVPN。"
exit 1
fi
fi
echo "OpenVPN 安装完成。"
else
echo "OpenVPN 已安装。"
fi
}
# 函数:卸载 OpenVPN
uninstall_openvpn() {
if command -v openvpn &> /dev/null; then
echo "正在卸载 OpenVPN..."
if [ -f /etc/centos-release ]; then
# CentOS 系统
sudo yum remove openvpn -y
sudo rm -rf /etc/openvpn
else
if [ -f /etc/debian_version ]; then
# Debian/Ubuntu 系统
sudo apt-get remove --purge openvpn -y
sudo apt-get autoremove -y
sudo rm -rf /etc/openvpn
else
echo "不支持的操作系统。请手动卸载 OpenVPN。"
exit 1
fi
fi
echo "OpenVPN 卸载完成。"
else
echo "OpenVPN 未安装。"
fi
}
# 函数:断开 OpenVPN 连接
stop_openvpn() {
if pgrep openvpn > /dev/null; then
sudo pkill openvpn
echo "OpenVPN 正在断开,请稍后。。。。。 。"
sleep 2 # 等待进程终止
if pgrep openvpn > /dev/null; then
echo "OpenVPN 进程未能成功关闭。"
exit 1
else
echo "OpenVPN 已断开。"
fi
else
echo "OpenVPN 未运行。"
fi
exit 0
}
# 函数:连接 OpenVPN
start_openvpn() {
# 检查并安装 OpenVPN
install_openvpn
# 检查是否存在配置文件
if [ -f "$CONFIG_FILE" ]; then
# 读取配置文件中的证书地址、账号和密码
source "$CONFIG_FILE"
else
# 提示用户输入证书地址、账号和密码
read -p "请输入 OpenVPN 配置证书地址(/*.ovpn): " CERT_PATH
read -p "请输入 VPN 账号: " VPN_USER
read -sp "请输入 VPN 密码: " VPN_PASS
echo
# 验证输入的证书地址是否存在
if [ ! -f "$CERT_PATH" ]; then
echo "错误:OpenVPN 配置证书地址 '$CERT_PATH' 不存在。"
exit 1
fi
# 保存用户输入到配置文件
echo "CERT_PATH='$CERT_PATH'" > "$CONFIG_FILE"
echo "VPN_USER='$VPN_USER'" >> "$CONFIG_FILE"
echo "VPN_PASS='$VPN_PASS'" >> "$CONFIG_FILE"
fi
# 检查是否有 OpenVPN 进程运行
if pgrep openvpn > /dev/null; then
echo "OpenVPN 已经在运行。"
exit 1
fi
# 创建临时文件保存账号密码
AUTH_FILE=$(mktemp)
echo "$VPN_USER" > "$AUTH_FILE"
echo "$VPN_PASS" >> "$AUTH_FILE"
# 设置日志文件路径
LOG_FILE="$HOME/openvpn_client.log"
# 启动 OpenVPN 客户端,并在后台运行
sudo openvpn --config "$CERT_PATH" --auth-user-pass "$AUTH_FILE" --daemon --log "$LOG_FILE"
# 删除临时文件
rm -f "$AUTH_FILE"
# 等待 OpenVPN 连接成功
sleep 5
if pgrep openvpn > /dev/null; then
echo "OpenVPN 连接成功。"
else
echo "OpenVPN 连接失败。清除账号密码信息重新输入。"
rm -f "$CONFIG_FILE"
fi
# 提示用户 OpenVPN 客户端已启动
echo "OpenVPN 客户端已启动并在后台运行。"
echo "日志文件目录: $LOG_FILE"
echo "配置文件目录: $CONFIG_FILE"
}
# 根据传递的参数执行相应操作
case "$1" in
start)
start_openvpn
;;
stop)
stop_openvpn
;;
uninstall)
uninstall_openvpn
;;
*)
echo "用法: $0 {start|stop|uninstall}"
exit 1
;;
esac
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用CC BY-NC-ND 4.0协议,完整转载请注明来自 halo.taofile.cn。
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

