当前位置:   article > 正文

Centos7、Ubuntu、Debian一键脚本安装Openvpn3-Client,可设置开机自启(全网原创)

Centos7、Ubuntu、Debian一键脚本安装Openvpn3-Client,可设置开机自启(全网原创)

声明:脚本为100%原创,参考并优化了官网教程,转载请署名来源

官网教程:https://openvpn.net/cloud-docs/owner/connectors/connector-user-guides/openvpn-3-client-for-linux.html

1.本地新建脚本文件

如本地没有vim,请先安装 Centos: yum install vim  Ubuntu: apt install vim

vim openvpn3_client.sh

输入i进入编辑模式,直接复制以下代码黏贴进去,不用担心代码超长。

写入内容后按Esc退出编辑状态,再输入:wq保存退出。

  1. #!/bin/bash
  2. set -e
  3. # 声明
  4. echo -e "安装方法参考官网 https://openvpn.net/cloud-docs/owner/connectors/connector-user-guides/openvpn-3-client-for-linux.html"
  5. echo -e "最后编辑时间 2023/12/28"
  6. # 检查操作系统
  7. echo -e "Check operating system version...\n"
  8. echo -e "目前仅支持Centos 7 Ubuntu 18.04 20.04 22.04 Debian 10 11(未测试)"
  9. MYOS=""
  10. if [ -f /etc/os-release ]; then
  11. source /etc/os-release
  12. if [ "$ID" != "" ] && [ "${VERSION_ID%%.*}" != "" ]; then
  13. MYOS="$ID ${VERSION_ID%%.*}"
  14. fi
  15. fi
  16. # 输出os结果
  17. if [ "$MYOS" == "" ]; then
  18. echo -e "您的操作系统: 无法识别\n"
  19. else
  20. echo -e "您的操作系统: $MYOS\n"
  21. fi
  22. # 操作面板
  23. while true; do
  24. echo ""
  25. echo "请选择操作:"
  26. echo "1. 安装Openvpn3 Client"
  27. echo "2. 卸载Openvpn3 Client"
  28. echo "3. 导入配置文件"
  29. echo "4. 删除配置文件"
  30. echo "5. 配置开机自启 [新增/删除]"
  31. echo "6. 离开"
  32. read -p "请输入选项数字: " choice
  33. case $choice in
  34. 1)
  35. echo "############################################################"
  36. echo "Openvpn3 Client开始安装"
  37. echo "############################################################"
  38. # centos 7
  39. if ["$ID" == "centos" ]; then
  40. echo "yum update"
  41. yum update
  42. echo "sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm"
  43. sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  44. echo "sudo yum install -y https://packages.openvpn.net/openvpn-openvpn3-epel-repo-1-1.noarch.rpm"
  45. sudo yum install -y https://packages.openvpn.net/openvpn-openvpn3-epel-repo-1-1.noarch.rpm
  46. echo "sudo yum install openvpn3-client"
  47. sudo yum install openvpn3-client
  48. echo "############################################################"
  49. echo "Openvpn3 Client安装完成"
  50. echo "############################################################"
  51. fi
  52. # ubuntu 18.04 20.04 22.04 Debian 10 11
  53. if [ "$ID" == "ubuntu" ] || [ "$ID" == "debian" ]; then
  54. echo "sudo mkdir -p /etc/apt/keyrings && curl -fsSL https://packages.openvpn.net/packages-repo.gpg | sudo tee /etc/apt/keyrings/openvpn.asc"
  55. sudo mkdir -p /etc/apt/keyrings && curl -fsSL https://packages.openvpn.net/packages-repo.gpg | sudo tee /etc/apt/keyrings/openvpn.asc
  56. echo "DISTRO=\$(lsb_release -c | awk '{print \$2}')"
  57. DISTRO=$(lsb_release -c | awk '{print $2}')
  58. echo 'echo "deb [signed-by=/etc/apt/keyrings/openvpn.asc] https://packages.openvpn.net/openvpn3/debian $DISTRO main" | sudo tee /etc/apt/sources.list.d/openvpn-packages.list'
  59. echo "deb [signed-by=/etc/apt/keyrings/openvpn.asc] https://packages.openvpn.net/openvpn3/debian $DISTRO main" | sudo tee /etc/apt/sources.list.d/openvpn-packages.list
  60. echo "sudo apt update"
  61. sudo apt update
  62. echo "sudo apt install openvpn3"
  63. sudo apt install openvpn3
  64. echo "############################################################"
  65. echo "Openvpn3 Client安装完成"
  66. echo "############################################################"
  67. fi
  68. ;;
  69. 2)
  70. echo "############################################################"
  71. echo "Openvpn3 Client开始卸载"
  72. echo "############################################################"
  73. # centos 7
  74. if ["$ID" == "centos" ]; then
  75. echo "sudo yum remove openvpn3-client"
  76. sudo sudo yum remove openvpn3-client
  77. echo "sudo yum remove openvpn-openvpn3-epel-repo"
  78. sudo sudo yum remove openvpn-openvpn3-epel-repo
  79. echo "sudo yum remove epel-release"
  80. sudo sudo yum remove epel-release
  81. fi
  82. # ubuntu 18.04 20.04 22.04 Debian 10 11
  83. if [ "$ID" == "ubuntu" ] || [ "$ID" == "debian" ]; then
  84. echo "sudo apt uninstall openvpn3"
  85. sudo apt uninstall openvpn3
  86. echo "剩余部分不构成影响, 如有需要请手动删除或重置"
  87. fi
  88. echo "############################################################"
  89. echo "Openvpn3 Client卸载完成"
  90. echo "############################################################"
  91. ;;
  92. 3)
  93. read -ep "请输入配置文件路径: " cpath
  94. # 检查文件是否存在
  95. if [ -f "$cpath" ]; then
  96. echo "文件存在!"
  97. read -p "请输入存储名称 [MainOvpn]: " cname
  98. cname=${cname:-MainOvpn}
  99. openvpn3 config-import --config "${cpath}" --name "${cname}" --persistent
  100. echo -e "导入完成!\n"
  101. openvpn3 configs-list
  102. else
  103. echo -e "文件不存在或不可访问!\n"
  104. fi
  105. ;;
  106. 4)
  107. openvpn3 configs-list
  108. read -p "请输入配置存储名称: " cname
  109. echo -e "tips: YES要大写\n"
  110. openvpn3 config-remove --config "${cname}"
  111. echo -e "删除完成!\n"
  112. openvpn3 configs-list
  113. ;;
  114. 5)
  115. read -p "请输入服务名称 [openvpn3-client]: " sname
  116. sname=${sname:-openvpn3-client}
  117. # 检查文件是否存在
  118. if [ -f "/etc/systemd/system/${sname}.service" ]; then
  119. read -p "服务已存在!是否要移除该服务 [yes/No]: " remove_service
  120. if [ "$remove_service" == "yes" ] || [ "$remove_service" == "y" ]; then
  121. # 处理移除服务的逻辑
  122. echo -e "\n开始禁用服务 ${sname}"
  123. systemctl stop "${sname}.service"
  124. systemctl disable "${sname}.service"
  125. echo -e "\n开始删除服务 ${sname}"
  126. rm "/etc/systemd/system/${sname}.service"
  127. fi
  128. else
  129. read -p "请输入配置存储名称 [MainOvpn]: " cname
  130. cname=${cname:-MainOvpn}
  131. echo -e "\n开始创建 Systemd 服务单元文件"
  132. cat <<EOF | sudo tee "/etc/systemd/system/${sname}.service" >/dev/null
  133. [Unit]
  134. Description=OpenVPN 3 Auto Start
  135. After=network.target
  136. [Service]
  137. Type=simple
  138. ExecStart=/usr/bin/openvpn3 session-start --config "${cname}"
  139. # 如果需要重试或自动重启,可以添加以下指令
  140. Restart=always
  141. RestartSec=3
  142. [Install]
  143. WantedBy=multi-user.target
  144. EOF
  145. echo -e "服务单元文件创建成功 /etc/systemd/system/${sname}.service"
  146. echo -e "您的服务名为 ${sname}.service"
  147. # 启用并启动自定义的 Systemd 服务
  148. echo -e "\n开始启用服务 ${sname}"
  149. echo -e "\n如Openvpn3 Client中设置了-互联网流量转发-, 软件启动后很可能导致ssh、远程连接断开!!!"
  150. read -p "并因为开机自启无法重置, 是否接受该风险 [yes/No]" append_risk
  151. if [ "$append_risk" == "yes" ] || [ "$append_risk" == "y" ]; then
  152. sudo systemctl start "${sname}.service"
  153. sudo systemctl enable "${sname}.service"
  154. fi
  155. fi
  156. ;;
  157. 6)
  158. echo "退出"
  159. break # 结束循环,退出脚本
  160. ;;
  161. *)
  162. echo "无效选项,请重新选择"
  163. ;;
  164. esac
  165. done

2.添加执行权限

chmod +x openvpn3_client.sh

3.运行脚本

./openvpn3_client.sh

4.安装步骤

  • 先安装Openvpn3 Client客户端

  • 再导入Openvpn配置文件
    (由Openvpn Server端生成,不懂的小伙伴网上搜`Openvpn Server安装`)
  • 最后设置开机自启,会自动在/etc/systemd/system中生成服务单元文件,随开机启动

5.脚本运行错误原因

Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n.dos2unix是将Windows格式文件转换为Unix、Linux格式的实用命令。 dos2unix命令其实就是将文件中的\r\n 转换为\n。

Centos安装指令:

  1. $ sudo apt install dos2unix

Debian、Ubuntu安装指令:

  1. $ sudo apt-get install dos2unix

使用dos2unix

  1. $ dos2unix [options] <files>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/202922
推荐阅读
相关标签
  

闽ICP备14008679号