近期, 工作需要, 我负责开发 PPP 拨号模块.
说起拨号, 算算时间, 我已经做过 2 次了, 暴露年龄了, 呵呵.
第一次是刚毕业做的 PPOE 拨号, 给电信做拨号软件, 在河北石家庄工作过一段时间, 基于 Windows xp.
第二次是在移动网优, 3G 手机路测, 即著名的 TD-SCDMA, 基于 AT 指令控制手机驱动.
这次, 是用的 PPPD 拨号, 在 Linux 系统下.
pppd 拨号模块, Linux 系统是自带的, 就像 Windows 下自带的 RAS 拨号一样, 打印机等很多应用需要通过拨号方式进行通信的.
- Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-161-generic x86_64)
- pppd 2.4.5
参考文档, 配置 4 个文件:
/etc/ppp/peers/myvpn 账号信息
- remotename myvpn
- linkname myvpn
- ipparam myvpn
- pty "pptp *** --nolaunchpppd --loglevel 0"
- lock
- nodeflate
- name ***
- usepeerdns
- require-mppe
- noauth
- require-mppe-128
- defaultroute
- mtu 1416 #特别关键!!!
/etc/ppp/chap-secrets VPN 用户名密码
user pass
/etc/ppp/options 默认设置项
- lcp-echo-failure 10 # (from /etc/ppp/options)
- lcp-echo-interval 10 # (from /etc/ppp/options)
- lock
- crtscts
- nodeflate
- persist
- asyncmap 0
- noauth
- hide-password
- noipx
/etc/ppp/options.pptp 设置项
- lock
- noauth
- refuse-pap
- refuse-eap
- refuse-chap
- refuse-mschap
- nobsdcomp
- nodeflate
- require-mppe-128
- ipparam myvpn
- defaultroute
个人总结的技巧:
一定要升级 python3.4 --> python3.7?
我开始很纠结 Python 版本, 代码开发是 Python3.7 最新版, 而 Ubuntu 自带的是 Python 3.4, 故想办法升级 python3.7, 如果在本地网速很快, 这个不是什么难事, 1 小时工作量.
但是, 远程链接 SSH,VPS 服务器在国外, 网速卡的厉害, 本来 1 小时工作, 忙乎了一个上午才搞定, 升级到 python3.6 + pip3 . 但是一想, 我还有 n 个服务器呢, 故晚上加班把代码降级为 pyhon 3.4, 这样部署就方便多了 -- 非原则问题, 不要在环境上折腾太久, 条条大路通罗马嘛.
这个事情, 给我很大的启示: 不要做战略的矮子, 再勤劳的执行力, 团队的效率也上不来的.
平衡, 成本, 决策!
部署 python 程序, background job running
Windows 开发 C# 很多年, 除了前几年做 Unity3D 开发的游戏 App(含 VR,AR), 这些都是有 GUI 界面的, 而在 Linux 下, 第一个门槛就是无 UI 界面.
调试程序通过, 部署后, 我关闭 SSH 下班了, 吃完饭, 远程 SSH, 怎么我的 python 程序不见了, 惊讶不已, 才 *** 行代码, 而且我写的是 while true 循环, 不可能自己退出啊.
- nohup python3 main.py &
- ps ax | grep py
上网搜索, 多亏 google, 很快就明白了, SSH 通过 22 端口, 开启了一个 "session", 一般, 如你执行 python3 main.py, 随着 SSH Session 结束, Linux 会 kill 这个 process 的. 而这个 PPP 拨号程序需要作为一个长时间运行的, 故需要用 nohup 和 & 关键字, 这样当你退出 SSH, 这个程序会驻留系统.
那么问题来了, 查询运行的 process, 常用的 ps all 就是不灵了.
要用 ps ax | grep py 才可以.
Linux 常用工具工具
[ ] vi 编辑器, Linux 运维必备神器!
- [ ] cat /var/log/syslog | grep pppd #输出 mylog.log, search pppd
- [ ] cat /var/log/syslog | tail -n 100 #输出 mylog.log 文件最后 100 行
- [ ] egrep -v '#|^ *$' /etc/ppp/options #正则, 列出配置文件起作用的
- [ ] * ">" /var/log/syslog #clear syslog
- [ ] * dhclient -v -4 : refresh network #重新获得 IP.
参考文档:
http://www.cnblogs.com/simonshi/archive/2010/04/23/1718984.html
来源: https://www.cnblogs.com/xifarm/p/9961015.html