日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
VMware環(huán)境中根據(jù)虛擬機IP找尋所在ESXi主機

VMware環(huán)境中根據(jù)虛擬機IP找尋所在ESXi主機

作者:Just For Coding 2017-10-16 14:42:20

云計算

虛擬化 在VMware vSphere虛擬環(huán)境中我們有時需要找尋某IP所在的虛擬機及ESXi宿主機。若VMware虛擬機安裝了VMware tools, 則可以通過API直接查找該IP所在位置,但我們的環(huán)境中并不是所有的虛擬機都已安裝,因而我們只能通過MAC地址來查找。

創(chuàng)新互聯(lián)的客戶來自各行各業(yè),為了共同目標,我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領(lǐng)域包括成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。

在VMware vSphere虛擬環(huán)境中我們有時需要找尋某IP所在的虛擬機及ESXi宿主機。若VMware虛擬機安裝了VMware tools, 則可以通過API直接查找該IP所在位置,但我們的環(huán)境中并不是所有的虛擬機都已安裝,因而我們只能通過MAC地址來查找。

假設(shè)目標IP為10.95.48.11,首先我們從與目標IP位于相同二層網(wǎng)絡(luò)內(nèi)的虛擬機上獲取10.95.48.11對應(yīng)的MAC地址:

  
 
 
 
  1. [root@localhost ~]# ping 10.95.48.11 -c 2 
  2. PING 10.95.48.11 (10.95.48.11) 56(84) bytes of data. 
  3. 64 bytes from 10.95.48.11: icmp_seq=1 ttl=64 time=0.141 ms 
  4. 64 bytes from 10.95.48.11: icmp_seq=2 ttl=64 time=0.137 ms 
  5.  
  6. --- 10.95.48.11 ping statistics --- 
  7. 2 packets transmitted, 2 received, 0% packet loss, time 999ms 
  8. rtt min/avg/max/mdev = 0.137/0.139/0.141/0.002 ms 
  9. [root@localhost ~]# ip neighbor |grep 10.95.48.11 
  10. 10.95.48.11 dev eth0 lladdr 00:0c:29:26:18:c8 REACHABLE 

獲取到MAC地址為00:0c:29:26:18:c8。

若是環(huán)境中ESXi主機較少,可以通過SSH直接登錄ESXi主機挨個進行查找。

首先進入虛擬機的存儲目錄,不同環(huán)境中數(shù)據(jù)存儲的名字可能不同:

  
 
 
 
  1. cd /vmfs/volumes/datastore1/ 

該目錄存儲的是各個虛擬機的相關(guān)文件,一個虛擬機對應(yīng)一個目錄,如:

  
 
 
 
  1. [root@esxi-01:/vmfs/volumes/595b7497-d8849df8-8d7c-6c92bf585d10] ls -l 
  2. total 176 
  3. drwxr-xr-x    1 root     root           420 Sep 14 02:30 centos-68 
  4. drwxr-xr-x    1 root     root          1820 Oct  9 09:55 dev01-10.95.48.11 
  5. drwxr-xr-x    1 root     root          3080 Sep 14 03:37 dev02-10.95.48.12 

每臺虛擬機目錄中的vmx文件中存儲了系統(tǒng)為虛擬網(wǎng)卡生成的MAC地址,如:

  
 
 
 
  1. ethernet0.generatedAddress = "00:0c:29:26:18:c8" 
  2. ethernet0.generatedAddressOffset = "0" 

我們可以從vmx文件中搜索MAC地址,找到相應(yīng)的虛擬機,如:

  
 
 
 
  1. [root@esxi-01:/vmfs/volumes/595b7497-d8849df8-8d7c-6c92bf585d10] find . -name '*.vmx' | xargs grep '00:0c:29:26:18:c8' 
  2. ./dev01-10.95.48.11/dev01-10.95.48.11.vmx:ethernet0.generatedAddress = "00:0c:29:26:18:c8” 

若是環(huán)境中ESXi主機非常多,一臺一臺搜索非常低效,我們可以基于VMware官方提供的SDK來編寫程序來找到相應(yīng)的MAC地址。

VMware提供了Python的SDK: https://github.com/vmware/pyvmomi

我們編寫的程序如下:

  
 
 
 
  1. #!/usr/bin/env python 
  2. import atexit 
  3.  
  4. from pyVim import connect 
  5. from pyVmomi import vmodl 
  6. from pyVmomi import vim 
  7.  
  8. def print_vm_info(virtual_machine): 
  9.     for device in virtual_machine.config.hardware.device: 
  10.         if (device.key >= 4000) and (device.key < 5000): 
  11.             if device.macAddress == '00:0c:29:26:18:c8': 
  12.                 print('device.macAddress==', device.macAddress) 
  13.  
  14.                 summary = virtual_machine.summary 
  15.                 print("Name       : ", summary.config.name) 
  16.                 print("Template   : ", summary.config.template) 
  17.                 print("Path       : ", summary.config.vmPathName) 
  18.                 print("Guest      : ", summary.config.guestFullName) 
  19.                 print("Host       : ", summary.runtime.host.name) 
  20.  
  21. def main(): 
  22.     try: 
  23.         service_instance = connect.SmartConnect(host="10.10.10.10", 
  24.                                                 user="administrator@vsphere.local", 
  25.                                                 pwd="123456", 
  26.                                                 port=443) 
  27.  
  28.         atexit.register(connect.Disconnect, service_instance) 
  29.  
  30.         content = service_instance.RetrieveContent() 
  31.  
  32.         container = content.rootFolder  # starting point to look into 
  33.         viewType = [vim.VirtualMachine]  # object types to look for 
  34.         recursive = True  # whether we should look into it recursively 
  35.         containerView = content.viewManager.CreateContainerView( 
  36.             container, viewType, recursive) 
  37.  
  38.         children = containerView.view 
  39.         for child in children: 
  40.             print_vm_info(child) 
  41.  
  42.     except vmodl.MethodFault as error: 
  43.         print("Caught vmodl fault : " + error.msg) 
  44.         return -1 
  45.  
  46.     return 0 
  47.  
  48. # Start program 
  49. if __name__ == "__main__": 
  50.     main() 

虛擬機的設(shè)備key值位于4000-5000表示網(wǎng)絡(luò)設(shè)備,我們在網(wǎng)絡(luò)設(shè)備的屬性中查找MAC信息。程序中的連接信息可以是ESXi主機信息,也可以是vCenter信息。直接連接vCenter則可以將環(huán)境中所有ESXi主機全部搜索完, 避免一臺一臺主機搜索。

程序的執(zhí)行結(jié)果,如下:

  
 
 
 
  1. [root@vagrant-centos65 samples]# python get_vm_from_mac.py  
  2. ('device.macAddress==', '00:0c:29:26:18:c8') 
  3. ('Name       : ', 'dev01-10.95.48.11') 
  4. ('Template   : ', False) 
  5. ('Path       : ', '[datastore1] dev01-10.95.48.11/dev01-10.95.48.11.vmx') 
  6. ('Guest      : ', 'CentOS 4/5/6/7 (64-bit)') 
  7. ('Host       : ', ‘esxi-01’) 


本文標題:VMware環(huán)境中根據(jù)虛擬機IP找尋所在ESXi主機
網(wǎng)頁鏈接:http://www.dlmjj.cn/article/dpegipc.html