vSphere开发指南1——vSphere Automation API
前言
VMware vCenter Server是VMware虛擬化管理平臺(tái),廣泛的應(yīng)用于企業(yè)私有云內(nèi)網(wǎng)中。站在滲透測(cè)試工具開(kāi)發(fā)的角度,我們需要通過(guò)命令行實(shí)現(xiàn)vCenter Server同虛擬機(jī)的交互。
本系列文章將要比較多種不同的API,介紹實(shí)現(xiàn)細(xì)節(jié),開(kāi)源代碼,實(shí)現(xiàn)以下功能:
· 讀取虛擬機(jī)的配置
· 查看虛擬機(jī)文件
· 刪除虛擬機(jī)文件
· 向虛擬機(jī)上傳文件
· 從虛擬機(jī)下載文件
· 在虛擬機(jī)中執(zhí)行命令
簡(jiǎn)介
本文將要介紹以下內(nèi)容:
· 基礎(chǔ)知識(shí)
· vSphere Automation API開(kāi)發(fā)細(xì)節(jié)
· 開(kāi)源代碼vSphereAutomationAPI_Manage.py
基礎(chǔ)知識(shí)
1.VMware vSphere
VMware vSphere是整個(gè)VMware套件的商業(yè)名稱,而不是特定的產(chǎn)品或軟件。
VMware vSphere的兩個(gè)核心組件是ESXi服務(wù)器和vCenter Server。
2.ESXi
ESXi是hypervsior,可以在其中創(chuàng)建和運(yùn)行虛擬機(jī)和虛擬設(shè)備。
3.vCenter Server
vCenter Server是用于管理網(wǎng)絡(luò)中連接的多個(gè)ESXi主機(jī)和池主機(jī)資源的服務(wù)。
vCenter Server可安裝至Linux系統(tǒng)中,通過(guò)安裝vCenter Server Appliance(VCSA)實(shí)現(xiàn)。
vCenter Server也可安裝至Windows系統(tǒng)中,通過(guò)安裝Vmware Integrated Management(VIM)實(shí)現(xiàn)。
vSphere Automation API開(kāi)發(fā)細(xì)節(jié)
為了能夠通過(guò)命令行實(shí)現(xiàn)vCenter Server同虛擬機(jī)的交互,我們需要使用vSphere Automation API中的vSphere REST API部分。
VMware在vSphere 6.0版本中引入了REST API,從vSphere7.0U2開(kāi)始,VMware宣布棄用舊的REST API,使用新的REST API。
經(jīng)過(guò)對(duì)比,發(fā)現(xiàn)舊的REST API(低于vSphere7.0U2)不支持以下操作:
· 查看虛擬機(jī)文件
· 刪除虛擬機(jī)文件
· 向虛擬機(jī)上傳文件
· 從虛擬機(jī)下載文件
· 在虛擬機(jī)中執(zhí)行命令
而新的REST API能夠滿足需求,所以在開(kāi)發(fā)上我們需要先對(duì)vCenter的版本進(jìn)行判斷,如果滿足要求(不低于vSphere7.0U2),那么才使用vSphere Automation API。
1.已有的開(kāi)源代碼
Windows環(huán)境加載該腳本的示例命令如下:
腳本執(zhí)行失敗,提示如下:
測(cè)試環(huán)境2:192.168.1.2(vCenter 7.0.2)
Windows環(huán)境加載該腳本的示例命令如下:
腳本執(zhí)行成功。
經(jīng)過(guò)更多的測(cè)試后,印證結(jié)論:vSphere Automation API在低版本(低于vSphere7.0U2)無(wú)法實(shí)現(xiàn)以下操作:
· 查看虛擬機(jī)文件
· 刪除虛擬機(jī)文件
· 向虛擬機(jī)上傳文件
· 從虛擬機(jī)下載文件
· 在虛擬機(jī)中執(zhí)行命令
2.參考文檔用原始數(shù)據(jù)包實(shí)現(xiàn)
在實(shí)現(xiàn)上,首先需要發(fā)送用戶名和明文口令獲得Session,使用Session作為登錄憑據(jù),進(jìn)行后續(xù)的操作。
具體實(shí)現(xiàn)細(xì)節(jié)如下:
(1)判斷vCenter的版本
獲得粗略版本的方法:
瀏覽器訪問(wèn):https://<server_hostname >/sdk/vimServiceVersions.xml
返回結(jié)果為xml數(shù)據(jù),無(wú)法獲得具體的版本。
獲得詳細(xì)號(hào)版本的方法:
訪問(wèn):https://<server_hostname>/sdk/
正文內(nèi)容如下:
注:
vSphere 7.0U2對(duì)應(yīng)對(duì)build屬性為17630552
(2)Create_Session
添加Header:
其中,dXNlcm5hbWU6cGFzc3dvcmQ為username:password作Base64編碼后的結(jié)果。
返回結(jié)果格式:響應(yīng)碼201,格式為application/json類型。
(3)List_Guest_Processes
請(qǐng)求正文需要json格式的數(shù)據(jù)作為憑據(jù),用來(lái)登錄虛擬機(jī)。
格式示例:
(4)vCenter同虛擬機(jī)傳輸文件
官方文檔描述的不夠詳細(xì)
這里給出我經(jīng)過(guò)測(cè)試得出的結(jié)論:
1.將文件從本地發(fā)送至虛擬機(jī),即向虛擬機(jī)發(fā)送該文件,先調(diào)用Create_Temporary_Guest_Filesystem_Files創(chuàng)建指定文件對(duì)應(yīng)的uri
發(fā)送的內(nèi)容格式如下;
不帶有size屬性。
發(fā)送成功后返回該文件對(duì)應(yīng)的uri,使用PUT方法訪問(wèn)uri,data字段為發(fā)送的文件內(nèi)容。
2.將該文件從虛擬機(jī)發(fā)送至本地,即讀取虛擬機(jī)中的文件,先調(diào)用Create_Temporary_Guest_Filesystem_Files創(chuàng)建指定文件對(duì)應(yīng)的uri。
發(fā)送的內(nèi)容格式如下;
必須帶有size屬性。
發(fā)送成功后返回該文件對(duì)應(yīng)的uri,使用GET方法訪問(wèn)uri,在獲取文件內(nèi)容時(shí)需要區(qū)分文本格式和二進(jìn)制格式,文本格式可以使用r.text讀取,二進(jìn)制格式可以使用r.content讀取。
開(kāi)源代碼
代碼適用版本:vSphere 7.0U1+
支持以下功能:
· 讀取虛擬機(jī)的配置
· 查看虛擬機(jī)文件
· 刪除虛擬機(jī)文件
· 向虛擬機(jī)上傳文件
· 從虛擬機(jī)下載文件
· 在虛擬機(jī)中執(zhí)行命令
具體命令如下:
· ListVM
· GetVMConfig
· ListHost
· ListVMProcess
· CreateVMProcess
· KillVMProcess
· ListVMFolder
· DeleteVMFile
· DownloadFileFromVM
· UploadFileToVM
其中,對(duì)于虛擬機(jī)的操作,支持Windows和Linux系統(tǒng)
小結(jié)
本文介紹了通過(guò)vSphere Automation API實(shí)現(xiàn)vCenter Server同虛擬機(jī)交互的方法,開(kāi)源實(shí)現(xiàn)代碼vSphereAutomationAPI_Manage.py,記錄開(kāi)發(fā)細(xì)節(jié)。
對(duì)于vSphere Automation API,有些操作不支持低版本的vCenter(<vSphere7.0U2),導(dǎo)致通用性不夠,所以下篇文章將要介紹更為通用的實(shí)現(xiàn)方法。
【想學(xué)網(wǎng)絡(luò)安全嗎,點(diǎn)一下】
總結(jié)
以上是生活随笔為你收集整理的vSphere开发指南1——vSphere Automation API的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 老板问我桌面演练(TTX)是什么,我直接
- 下一篇: 你知道吗,NukeSped 通过 Bun