成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

VMware環境中根據虛擬機IP找尋所在ESXi主機

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

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

假設目標IP為10.95.48.11,首先我們從與目標IP位于相同二層網絡內的虛擬機上獲取10.95.48.11對應的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。

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

首先進入虛擬機的存儲目錄,不同環境中數據存儲的名字可能不同:

  1. cd /vmfs/volumes/datastore1/ 

該目錄存儲的是各個虛擬機的相關文件,一個虛擬機對應一個目錄,如:

  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文件中存儲了系統為虛擬網卡生成的MAC地址,如:

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

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

  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” 

若是環境中ESXi主機非常多,一臺一臺搜索非常低效,我們可以基于VMware官方提供的SDK來編寫程序來找到相應的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() 

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

程序的執行結果,如下:

  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’) 
責任編輯:武曉燕 來源: just4coding博客
相關推薦

2009-08-18 10:48:33

2009-04-16 19:54:59

2011-11-15 11:37:59

虛擬化虛擬機VMware

2012-04-05 09:40:10

虛擬化vmware虛擬機

2009-08-07 11:16:28

2010-10-13 10:16:44

備份VMware vS虛擬機

2011-07-06 09:38:45

VMware虛擬機主機資源

2010-02-22 17:39:22

CentOS vmwa

2010-02-24 16:37:27

Ubuntu VMwa

2013-01-18 14:04:58

VMwareWorkstation

2012-03-19 21:19:14

vmwarekvm

2009-10-27 11:29:44

linux虛擬機

2009-11-17 10:41:28

2009-12-11 14:00:09

VMware虛擬機

2009-09-09 08:05:51

優化VMware Se

2014-02-21 11:20:34

KVMXen虛擬機

2012-10-17 14:32:52

Ubuntu 12.0VMWare

2019-01-15 09:15:23

VMware虛擬機備份

2024-07-23 16:22:54

2012-01-04 09:31:05

虛擬化桌面虛擬化vmware
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩不卡一区二区三区 | 午夜看看| 欧美日韩在线电影 | 日韩在线欧美 | 国产精品mv在线观看 | 亚洲自拍偷拍免费视频 | 精品欧美乱码久久久久久1区2区 | 91中文字幕在线 | 久久久九九 | 天天成人综合网 | 国户精品久久久久久久久久久不卡 | 中文字幕亚洲视频 | 色在线免费视频 | 国内久久| 天天艹日日干 | 国产高清精品在线 | 久久99国产精品 | 国产1区2区在线观看 | 中文字幕av网址 | 久久久久国产 | 欧美色成人 | 一本色道久久综合亚洲精品高清 | 精品国产乱码久久久久久中文 | 亚洲一区视频在线播放 | 美女黄网站 | 一级黄色av电影 | 在线日韩 | 人干人操 | 天天久久 | 91精品国产91久久久久久最新 | 成人 在线| 91精品国产乱码久久久久久 | 91精品国产高清一区二区三区 | 免费看91 | 精品在线免费观看视频 | 看特级黄色片 | 日韩高清国产一区在线 | 欧美激情久久久久久 | 亚洲一区二区三区免费在线观看 | 日韩成人在线视频 | 亚洲国产精品成人 |