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