最近写了一个爬虫工具,需要通过vpn网络连接去爬某个站点的内容,通过 crontab 来定时执行的,本来开始是想通过pyspider这个工具来做任务调度执行的,但是看过一遍 pyspider 文档后来感觉我需求还是非常简单的,利用 crontab 就足够了。crontab 脚本定时执行爬虫同时连接上 VPN 即可。现在就需要知道如何在脚本中利用命令行连接 VPN 了。
在网络上搜索找资料,总结起来就是三步。
1、创建并编辑/etc/ppp/peers/<YOU TUNNEL>
文件,这是你的 PPTP VPN 连接配置文件,其中有一些配置需要你手动配置,或者使用pptpsetup
来帮助你生成配置文件。
2、编辑/etc/ppp/chap-secrets
文件,在其中填入你的 VPN 账号密码,也可由pptpsetup
来帮助你生成。
<USERNAME> <YOU TUNNEL> <PASSWORD> *
3、用命令行pon <YOU TUNNEL>
来连接VPN。需要 root 权限。
4、根据你的需求,配置路由,在文件夹/etc/ppp/ip-up.d/
中新建你的脚本来控制 VPN 连接后的路由配置。
注:可在系统日志中查看 VPN 连接日志,tail -f /var/log/syslog
,或者直接执行pon $TUNNEL debug dump logfd 2 nodetach
来查看 VPN 连接情况。
ubuntu 的 wiki VPN setup using the command line Manually configuring your connection中有简单的配置流程,”You should only attempt this if you are familiar with Linux administration and networking, or the above methods have failed.”他们还是推荐你使用GUI。
我觉得还是 archlinux 的 wiki 讲解的详细一点PPTP Client
pptp-linx 官网的 howto PPTP Client Debian HOWTO
其实如果你不是在服务器环境这种没有GUI的情况下,完全可以先在 ubuntu 的网络连接管理工具的 GUI 中配置好 VPN 连接,然后再用命令行调用,这样也是可以的。需要使用nmcli
这个命令。这样完全不需要在命令行中各种手动配置好配置文件了,而且可以利用各种已经配置好的各种连接。
比如开启 VPN 连接 vpncloud
nmcli con up id VPNcloud
具体参考NetworkManager以及nmcli help