隨著技術(shù)的發(fā)展,測試行業(yè)也慢慢和運維靠攏,與devops對應(yīng),誕生了testops的概念。所以各位測試同學(xué)務(wù)必建立起一定的運維知識。在傳統(tǒng)的運維或者測試工作當(dāng)中,對于機(jī)器的遠(yuǎn)程桌面管理一直是很常規(guī)的工作,比如windows的遠(yuǎn)程桌面RDP,Linux的vnc和nomachine。今天我們主要聊一下novnc這個東西在vnc領(lǐng)域的使用,原因在于,有時候我們不想安裝一個客戶端軟件,或者需要提供一個方便的遠(yuǎn)程的工具內(nèi)嵌到我們的應(yīng)用當(dāng)中。下文以ubuntu為例進(jìn)行介紹,windows比較簡便,不在贅述。
安裝vncserver
傳統(tǒng)linux服務(wù)器在安裝過程中為了減少空間,提高效率和增強安全性,一般只會做最小的服務(wù)器安裝,所以不會安裝桌面相關(guān)的組件。而在vnc的使用過程中,大家動動腦子就知道,沒有桌面支持,我們顯示個鳥文件夾啊。
- 以xfce為例,我們增加桌面環(huán)境的支持:
sudo apt-get install xfce4
- 然后我們安裝vnc服務(wù)端:
sudo apt-get install vnc4server
- 修改~/.vnc/xstartup中的內(nèi)容為:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
- 然后使用如下命令啟動vnc:
vncserver
啟動的時候會提示輸入連接密碼以及是否提供一個只讀密碼,根據(jù)需要,自行輸入。啟動成功后會得到如下結(jié)果:
ubuntu@awvs:~/.vnc$ vncserver
New 'X' desktop is awvs:1
Starting applications specified in /home/ubuntu/.vnc/xstartup
Log file is /home/ubuntu/.vnc/awvs:1.log
這里面要說明下,vnc的服務(wù)器的端口從5901開始,上面的awvs:1中,awvs是主機(jī)名;1的意思就是端口5901,如果是2的話,端口就是5902了。如果要停止當(dāng)前的vnc服務(wù),使用:
vncserver -kill :1
支持,服務(wù)端的配置算完成了。一般的介紹中,后面會介紹客戶端的安裝。比較常見的有tightnvc、vncviewer等,隨便選擇安裝一款即可。比如我在windows上安裝的就是tightvnc。
使用的時候,從程序里面找到tightvnc viewer進(jìn)行啟動,然后輸入我們vnc服務(wù)的ip和地址,比如上文的192.168.10.49:5901:
啟動后輸入我們在執(zhí)行vncserver的時候設(shè)定的密碼:
,就可以看到遠(yuǎn)程桌面了:
novnc的安裝和使用
上文我們說到,使用vnc的時候必須安裝服務(wù)端和客戶端,其中服務(wù)端是必不可少的,客戶端有可以不必安裝的解決方案,這里介紹下novnc:https://github.com/novnc/noVNC??聪鹿俜降慕榻B:
noVNC is both a HTML VNC client JavaScript library and an application built on top of that library. noVNC runs well in any modern browser including mobile browsers (iOS and Android).
簡單翻譯下:noVNC是一個使用HTML的VNC客戶端javascript的庫和基于該庫之上的應(yīng)用。noVNC運行在所有的現(xiàn)代瀏覽器當(dāng)中(包括iOS和安卓)。
Many companies, projects and products have integrated noVNC including OpenStack, OpenNebula, LibVNCServer, and ThinLinc.
再來看看典型客戶:許多、項目和產(chǎn)品都在其中集成了noVNC,包括OpenStack, OpenNebula(OpenNebula是專門為云計算打造的開源系統(tǒng),用戶可以使用Xen、KVM、VMware等虛擬化軟件一起打造企業(yè)云。利用OpenNebula可以輕松構(gòu)建私有云、混合云、公開云)、LibVNCServer(一個實現(xiàn)了vnc服務(wù)器端的庫)等。
簡單總結(jié)下:NoVNC是一個js庫,在云計算等iaas層有著典型的應(yīng)用。這與我在上面提到的測試必須掌握一定的運維知識相符合:)
- 首先在ubuntu上開啟snap:
sudo apt install snapd
sudo systemctl enable --now snapd.socket
- 然后通過snap安裝novnc應(yīng)用:
sudo snap install novnc
- 接下來使用如下的命令創(chuàng)建一個novnc的服務(wù):
sudo snap set novnc services.n6081.listen=6081 services.n6081.vnc=localhost:5901
簡單解釋下,該novnc的服務(wù)名稱為services.n6081,監(jiān)聽的端口為6081,所監(jiān)聽的vnc服務(wù)為locahost:5901,如果連接的是其他服務(wù)器,將localhost改為對應(yīng)的ip或者主機(jī)名即可。
- 使用如下的命令查看服務(wù)的狀態(tài):
sudo snap get novnc services.n6081
- 接著,我們使用瀏覽器打開http://192.168.10.49:6081/vnc.html:
點擊其中的“鏈接”按鈕,輸入我們啟動vnc時候的密碼,見證奇跡的時刻到了:
我們在瀏覽器上實現(xiàn)了通過vnc協(xié)議對服務(wù)器的鏈接和管理,有么有:)
- 如果我們想停止掉某個監(jiān)聽服務(wù)器,直接運行如下命令:
sudo snap set novnc services.n6081.listen='' services.n6081.vnc=''
就是把監(jiān)聽的端口和vnc服務(wù)都設(shè)置為空串就行了,這個時候在訪問http://192.168.10.49:6081/vnc.html發(fā)現(xiàn)已經(jīng)鏈接不上了,而且通過snap get命令發(fā)現(xiàn)服務(wù)有如下輸出:
是不是很方便:)
總結(jié)與擴(kuò)展
文章介紹了ubuntu上vnc服務(wù)的搭建以及通過novnc不安裝vnc客戶端情況下使用瀏覽器訪問和管理vnc服務(wù)器的步驟,非常方便,很有實戰(zhàn)價值。
我的落地應(yīng)用,主要是在selenium集群做ui自動化測試時,每個selenium客戶端上安裝了vnc server,然后通過測試平臺的界面,使用novnc訪問這些客戶端,從而可以實時進(jìn)行自動化測試用例的調(diào)試和監(jiān)控。關(guān)于selenium的自動化測試,后續(xù)撰文再說。
(正文已結(jié)束)
推薦閱讀:科技情報網(wǎng)
免責(zé)聲明及提醒:此文內(nèi)容為本網(wǎng)所轉(zhuǎn)載企業(yè)宣傳資訊,該相關(guān)信息僅為宣傳及傳遞更多信息之目的,不代表本網(wǎng)站觀點,文章真實性請瀏覽者慎重核實!任何投資加盟均有風(fēng)險,提醒廣大民眾投資需謹(jǐn)慎!