EdgeRouter Lite 3 配置 OpenConnect

概览

EdgeOS 是基于 Vyatta 开发的 Debian 系软路由操作系统,具有极高的自由度。然而,由于 EdgeOS 所支持的 VPN 协议较为局限,我们需要手动配置路由的 OpenConnect VPN Client。

缺陷

本方法不具备策略路由等功能,为全局代理,对于国内应用的访问风控会有影响。
适用于需要全天候使用的用户,不适用于需要频繁切换线路的用户。

步骤

1.配置 APT 软件源

2.安装 OpenConnect VPN Client

因为有数百个依赖需要安装,此时需要等待一段时间。结束后会产生一个缺少 psmisc 依赖的错误,根据官方解释是 Busybox 导致的冲突,忽略即可。

3.编写服务控制脚本

完善下列脚本中的信息并写入。

使脚本可被执行

4.设置服务监控与自动启动

实现的方式有很多种,这里采取最简单的定时任务方式。
编辑 root 用户的计划任务。

添加一行内容,使得系统每分钟启动一次服务。由于控制脚本中存在冲突检测,所以配合 crontab 实现了看门狗功能。

5.配置负载均衡[可选]

当前网络模式为 eth0 + eth1 双WAN负载均衡,因此将 tun0 添加到负载均衡组,分配权重为 100,其余各分配 0。这样全部流量会从 tun0 通过,当 tun0 故障时,其余两个端口会自动接管流量。

参考资料

jibla/ubuntu-openconnect-command: Bash script handling openconnect commands for ubuntu cli.
ubnt EdgeOS 下如何固化 iptables 规则,每次开机都生效。 – V2EX
EdgeRouter – Add other Debian packages to EdgeOS

[L1-009]N个数求和 | PAT GPLT团体程序设计天梯赛

Description

本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数“分子/分母”的形式给出的,你输出的和也必须是有理数的形式。

Input

输入第一行给出一个正整数N(<=100)。随后一行按格式“a1/b1 a2/b2 …”给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。

Output

输出上述数字和的最简形式 —— 即将结果写成“整数部分 分数部分”,其中分数部分写成“分子/分母”,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。

Sample Input 1

5
2/5 4/15 1/30 -2/60 8/3

Sample Output 1

3 1/3

Sample Input 2

2
4/3 2/3

Sample Output 2

2

Sample Input 3

3
1/3 -1/6 1/8

Sample Output 3

7/24

Hint

利用 LCM 进行计算。

题解

[L1-021]重要的话说三遍 | PAT GPLT团体程序设计天梯赛

Description

这道超级简单的题目没有任何输入。

你只需要把这句很重要的话 —— “I’m gonna WIN!”——连续输出三遍就可以了。

注意每遍占一行,除了每行的回车不能有任何多余字符。

题解

[L1-019]谁先倒 | PAT GPLT团体程序设计天梯赛

Description

划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。

下面给出甲、乙两人的酒量(最多能喝多少杯不倒)和划拳记录,请你判断两个人谁先倒。

Input

输入第一行先后给出甲、乙两人的酒量(不超过100的非负整数),以空格分隔。下一行给出一个正整数N(<=100),随后N行,每行给出一轮划拳的记录,格式为:

甲喊 甲划 乙喊 乙划

其中“喊”是喊出的数字,“划”是划出的数字,均为不超过100的正整数(两只手一起划)。

Output

在第一行中输出先倒下的那个人:A代表甲,B代表乙。第二行中输出没倒的那个人喝了多少杯。题目保证有一个人倒下。注意程序处理到有人倒下就终止,后面的数据不必处理。

Sample Input

1 1
6
8 10 9 12
5 10 5 10
3 8 5 12
12 18 1 13
4 16 12 15
15 1 1 16

Sample Output

A
1

题解

[L1-018]大笨钟 | PAT GPLT团体程序设计天梯赛

Description

微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数。另外,虽然一天有24小时,钟却是只在后半天敲1~12下。例如在23:00敲钟,就是“当当当当当当当当当当当”,而到了23:01就会是“当当当当当当当当当当当当”。在午夜00:00到中午12:00期间(端点时间包括在内),笨钟是不敲的。

下面就请你写个程序,根据当前时间替大笨钟敲钟。

Input

输入第一行按照“hh:mm”的格式给出当前时间。其中hh是小时,在00到23之间;mm是分钟,在00到59之间。

Output

根据当前时间替大笨钟敲钟,即在一行中输出相应数量个“Dang”。如果不是敲钟期,则输出:

Only hh:mm. Too early to Dang.
其中“hh:mm”是输入的时间。

Sample Input 1

19:05

Sample Output 1

Sample Input 2

07:05

Sample Output 2

题解