引言:VPN是一種在公用網(wǎng)絡(luò)上建立專用網(wǎng)絡(luò),進(jìn)行加密通訊的網(wǎng)絡(luò)技術(shù)。由于我國的互聯(lián)網(wǎng)管理策略,正常情況下一些互聯(lián)網(wǎng)站點(diǎn)是無法訪問的,但是在工作和生活中又常常的需要訪問這些網(wǎng)站,因此很多情況下選擇一款VPN服務(wù)是解決此類問題的最簡單的方法。
目前,各種主流的操作系統(tǒng)均提供了完善的VPN接入客戶端的軟件,一般只要按照向?qū)У奶崾?,配置好VPN服務(wù)器,賬戶密碼以及VPN連接類型等參數(shù)就能方便的接入和使用了。在OSX操作系統(tǒng)中也提供了類似的功能,但是自O(shè)SX 10.9啟用“鑰匙鏈”功能后,系統(tǒng)配置的密碼都是保存在“鑰匙鏈”中,因此VPN配置中的密碼也采用同樣的處理方式。這給喜歡DIY的朋友們帶來了一個(gè)小問題,那就是無法使用自動(dòng)化工具動(dòng)態(tài)修改VPN配置中的密碼。而筆者長期使用某個(gè)免費(fèi)試用VPN服務(wù),該服務(wù)商每小時(shí)會(huì)更新一次訪問密碼并通過Web頁面發(fā)布。為了方便的使用,筆者需要找到一種方法能自動(dòng)的獲取密碼并實(shí)現(xiàn)VPN的連接。否則每次在OSX的VPN配置環(huán)境中修改密碼比較繁瑣,且每隔一個(gè)小時(shí)就需要設(shè)置一下。
筆者通過Google發(fā)現(xiàn)在OSX提供了一個(gè)命令行工具scutil,通過這個(gè)工具結(jié)合OSX強(qiáng)大的bash腳本可以方便的實(shí)現(xiàn)各種自定義的VPN連接控制。
scutil工具是OSX提供的命令行系統(tǒng)配置工具,能夠?qū)崿F(xiàn)命令行環(huán)境下實(shí)現(xiàn)各種系統(tǒng)配置參數(shù)的讀寫操作,本文僅使用其中對(duì)VPN連接的管理和配置功能,即--nc參數(shù)下的各種命令的使用。
命令行調(diào)用格式:
命令格式說明listlist列出當(dāng)前所可用VPN連接statusstatus
筆者在OSX網(wǎng)絡(luò)連接已經(jīng)配置好名為“FreeVPN”的VPN網(wǎng)絡(luò)連接,如果需要使用密碼連接,只需要使用以下命令行就可以了。
scutil --nc start --pss word MyPassword
注意:由于字體印刷可能的問題,以上命令中所有的連字符都是雙連字符
OSX操作系統(tǒng)繼承了Unix操作系統(tǒng)強(qiáng)大的腳本功能,通過bash腳本可以實(shí)現(xiàn)很多用戶的自定義操作,此項(xiàng)功能一直受到程序員和DIY用戶的歡迎。在筆者的使用場(chǎng)景中,由于需要每次從固定的網(wǎng)站上獲取動(dòng)態(tài)的VPN密碼,并調(diào)用scutil命令實(shí)現(xiàn)VPN的自動(dòng)接入,因此bash腳本是首選編程語言。
在OSX中內(nèi)置了很多實(shí)用命令行工具,例如curl就是其中一款強(qiáng)大的利用URL進(jìn)行文件傳輸訪問的工具。通過以下的命令行可以讀取http服務(wù)器上的數(shù)據(jù)。
curl -s http://free.vpn/password.txt
其中-s參數(shù)為隱藏連接過程中的不必要性能參數(shù)的顯示。curl還有很多強(qiáng)大的功能,這類不一一介紹,具體方法可以參考官方網(wǎng)站,網(wǎng)址為https://curl.haxx.se/
結(jié)合 scutil和 curl,最簡單的實(shí)現(xiàn)筆者功能腳本代碼如下:
需要說明的是筆者使用的這個(gè)VPN服務(wù)提供的密碼文件恰巧是純文本文件,因此不需要進(jìn)行任何額外的處理,實(shí)際上很多情況下是需要對(duì)數(shù)據(jù)進(jìn)行規(guī)范化處理,去除不需要的干擾符號(hào),可以使用正則表達(dá)式等工具來實(shí)現(xiàn)這方面的處理工作。
以上腳本僅僅滿足了筆者的最基本的需求,實(shí)際上通過使用腳本功能,完全可以實(shí)現(xiàn)對(duì)VPN連接的更多控制,例如實(shí)現(xiàn)自動(dòng)檢測(cè)VPN狀態(tài),并自動(dòng)進(jìn)行連接,從而實(shí)現(xiàn)類似付費(fèi)VPN所提供的服務(wù)。