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