首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >使用一行命令实现OpenConnect连接内网

使用一行命令实现OpenConnect连接内网

原创
作者头像
莫空9081
发布2025-09-28 15:34:58
发布2025-09-28 15:34:58
2720
举报
文章被收录于专栏:iOS 备忘录iOS 备忘录

背景

公司文档和接口需要使用VPN访问,而这个VPN软件每次打开都要输入密码,而且还需要动态码,太麻烦了,所以就想找一个简便的方法,最好是不需要设置,一开始想的是使用Surge配置,但是失败了。所以最后的成果就是命令行输入一个命令一键连接。

<!--more-->

这个命令中,包含了密码、以及获取动态码和发起链接的过程,所以命令行输入后,什么也不需要操作了,下面来看看具体实现。

实现

首先安装expect

通过下面的命令安装expect,最终的命令是.expect的。Ps: Expect 本身不是一种文件格式,而是一种用于自动化交互的脚本语言和工具。它是一个Tcl (Tool Command Language) 脚本语言的扩展,主要用于自动化那些需要用户进行手动输入的交互式程序,例如SSH、FTP、passwd 等。Expect 脚本通过模拟人工操作,让程序在后台执行并自动处理响应,从而实现自动化。——来自Google,哈哈哈。

brew install expect

然后安装openconnect

因为公司的VPN连接用的是OpenConnect,所以通过命令行安装openConnect,命令如下:

brew install openconnect

安装完成后,就可以试一下通过命令行连接了,输入:

代码语言:ruby
复制
sudo openconnect '--protocol=anyconnect' YourVPNServer '--user=YourUserName'

如下图所示:

image.png
image.png

需要注意的是:第一个Password是sudo,即电脑的管理员密码;第二个Password是openconnect连接的密码,也就是在VPN客户端输入的密码,比如对于我来说就是固定密码+动态码。

出现上面的字段就是连接成功了,上面的--servercert那里需要着重关注下,在expect脚本中需要用到。

再然后就是自动获取动态码

对于我来说,动态码是一个二维码,每次是从二维码中看到最新的6位数字,但是通过命令行需要通过TOTP_SECRET获取到TOTP_CODE,所以首先需要获取到TOTP_SECRET,步骤如下:

Chrome安装Authenticator ExtensionAuthenticator - Chrome Web Store,添加二维码之后,点击左上角的设置,再选择Backup,然后选择Download Backup File,然后就会发现本地下载了一份authenticator.txt,打开其中secret=的部分就是TOTP_SECRET。

image.png
image.png
image.png
image.png

最后,编辑脚本

脚本内容如下,地址在:GitHub - mokong/ExpectOpenConnect: openConnect 脚本

image.png
image.png

编辑完成后,直接在命令行输入类似于下面的命令,即可一键连接VPN。电脑上的open Connect客户端就可以删除了。

expect openConnectVPN.expect

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 实现
    • 首先安装expect
    • 然后安装openconnect
    • 再然后就是自动获取动态码
    • 最后,编辑脚本
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档