VMware 環境の仮想マシン IP に基づいて ESXi ホストを見つける

VMware 環境の仮想マシン IP に基づいて ESXi ホストを見つける

VMware vSphere 仮想環境では、特定の IP が配置されている仮想マシンと ESXi ホストを見つける必要がある場合があります。 VMware 仮想マシンに VMware ツールがインストールされている場合は、API を通じて IP の場所を直接見つけることができますが、環境内のすべての仮想マシンに VMware ツールがインストールされているわけではないため、MAC アドレスを通じてのみ見つけることができます。

ターゲット IP が 10.95.48.11 であると仮定すると、まず、ターゲット IP と同じレイヤー 2 ネットワーク内の仮想マシンから 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)バイトデータ。
  3. 10.95.48.11からの64 バイト: icmp_seq=1 ttl=64時間=0.141 ミリ秒
  4. 10.95.48.11からの64 バイト: icmp_seq=2 ttl=64時間=0.137 ミリ秒
  5.  
  6. --- 10.95.48.11 の ping 統計 ---  
  7. 送信パケット 2 個、受信パケット 2 個、パケット損失 0%、時間999 ミリ秒
  8. rtt最小/平均/最大/ mdev = 0.137/0.139/0.141/0.002 ミリ秒
  9. [root@localhost ~]# ip neighbor |grep 10.95.48.11
  10. 10.95.48.11 dev eth0 lladdr 00:0c:29:26:18:c8 到達可能

取得したMACアドレスは00:0c:29:26:18:c8です。

環境内の ESXi ホストの数が少ない場合は、SSH 経由で ESXi ホストに直接ログインし、1 つずつ検索することができます。

まず、仮想マシンのストレージディレクトリを入力します。データ ストアの名前は環境によって異なる場合があります。

  1. cd /vmfs/volumes/datastore1/

このディレクトリには、各仮想マシンの関連ファイルが格納されます。 1 つの仮想マシンは、次のように 1 つのディレクトリに対応します。

  1. [root@esxi-01:/vmfs/volumes/595b7497-d8849df8-8d7c-6c92bf585d10] ls -l
  2. 合計 176
  3. drwxr-xr-x 1 ルート ルート 420 9月14日 02:30 centos-68
  4. drwxr-xr-x 1 ルート ルート 1820 10月 9日 09:55 dev01-10.95.48.11
  5. drwxr-xr-x 1 ルート ルート 3080 9月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] を見つけます。 -名前  '*.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 ホストがある場合、1 つずつ検索するのは非常に非効率的です。 VMware が公式に提供している SDK に基づいてプログラムを作成し、対応する MAC アドレスを見つけることができます。

VMware は Python SDK を提供しています: https://github.com/vmware/pyvmomi

私たちが書いたプログラムは次のとおりです。

  1. #!/usr/bin/env python
  2. インポート atexit
  3.  
  4. pyVimから接続をインポート 
  5. pyVmomiからvmodlをインポート
  6. pyVmomiからvimをインポート
  7.  
  8. def print_vm_info(仮想マシン):
  9. virtual_machine.config.hardware.deviceデバイスの場合:
  10. (デバイスキー>= 4000)かつ(デバイスキー< 5000) の場合:
  11. if device.macAddress == '00:0c:29:26:18:c8' :
  12. print( 'device.macAddress==' , device.macAddress)
  13.  
  14. サマリー = 仮想マシン.サマリー
  15. print( "名前: " , summary.config.name )
  16. print( "テンプレート: " , summary.config.template)
  17. print( "パス: " , summary.config.vmPathName)
  18. print( "ゲスト: " , summary.config.guestFullName)
  19. print( "ホスト: " , summary.runtime.host.name )
  20.  
  21. main() を定義します:
  22. 試す:
  23. service_instance = connect .SmartConnect(host= "10.10.10.10" ,
  24. ユーザー= "[email protected]"
  25. パスワード= "123456"
  26. ポート=443)
  27.  
  28. atexit.register(接続.切断、service_instance)
  29.  
  30. コンテンツ = service_instance.RetrieveContent()
  31.  
  32. container = content.rootFolder #調べる開始 
  33. viewType = [vim.VirtualMachine] #検索するオブジェクトタイプ 
  34. recursive = True #再帰的調べるかどうか
  35. コンテナビュー = content.viewManager.CreateContainerView(
  36. コンテナ、viewType、再帰的)
  37.  
  38. 子 = containerView.view  
  39. 子供向け:
  40. print_vm_info(子)
  41.  
  42. vmodl.MethodFault をエラーとして除く:
  43. print( "vmodl の障害をキャッチしました: " + error.msg)
  44. -1を返す
  45.  
  46. 0を返す
  47.  
  48. # プログラムを起動
  49. __name__ == "__main__"の場合:
  50. 主要()

仮想マシンのデバイス キー値は 4000 ~ 5000 であり、ネットワーク デバイスを示します。ネットワーク デバイスのプロパティで MAC 情報を検索します。プログラム内の接続情報は、ESXi ホスト情報または vCenter 情報になります。 vCenter に直接接続することで、環境内のすべての ESXi ホストを検索でき、各ホストを 1 つずつ検索する必要がなくなります。

プログラムの実行結果は次のとおりです。

  1. [root@vagrant-centos65 サンプル]# python get_vm_from_mac.py
  2. ( 'device.macAddress==' '00:0c:29:26:18:c8' )
  3. ( '名前:' 'dev01-10.95.48.11' )
  4. ( 'テンプレート: ' False )
  5. ( 'パス: ' , '[データストア1] dev01-10.95.48.11/dev01-10.95.48.11.vmx' )
  6. ( 'ゲスト: ' 'CentOS 4/5/6/7 (64 ビット)' )
  7. ( 'ホスト: ' 、'esxi-01')

<<:  Amazon AWSは最近、4TBのメモリを搭載した仮想マシンをリリースした。

>>:  AWS、EC2とEBSの秒単位課金を発表

推薦する

お前はそのまま進み続けろ、俺たちはただ待つだけだ!

昨日の午後5時半から、誰だか分からないバカがホストモ​​デムにDDoS攻撃をひっきりなしに仕掛けてき...

ウェブサイトの最適化中にウェブサイトがわずかに降格するいくつかの兆候の分析

周知のように、ウェブサイトの最適化と運用のプロセスは、戦略を実行するプロセスであるだけでなく、より重...

SEOブログを運営するには?

私は自分のブログを注意深く研究し、いくつかの問題を発見しました。SEO ブログの問題について、すべて...

サウジアラビアのVPSの推奨:cloudsigma、月額15ドルから、クラウドサーバーはカスタム構成をサポート

Cloudsigma はサウジアラビアの首都リヤドに独自のデータセンターを持ち、パブリック サウジ ...

SEOプロジェクトで留意すべきいくつかのポイント

1. SEOには適切な戦略が必要サイトの内部要因、外部パフォーマンス(検索エンジンでのパフォーマンス...

spryservers: 米国建国記念日、KVM シリーズ VPS が 50% オフ、専用サーバーが 25% オフ

spryserversはHostcatに2度登場しており、主に米国フェニックスとダラスのデータセンタ...

Ctrip の大量コールドデータ シナリオにおける JuiceFS の実践

著者: Miao Cheng は、Ctrip のクラウド ネイティブ R&D エンジニアであ...

空地インターネット産業連盟理事長 王妙:中国の空地インターネット産業の探究と変革

中国電子技術標準化研究所が主催し、51CTOが主催する「第7回中国クラウドコンピューティング標準およ...

「ブロックチェーンシステム」と「分散ストレージシステム」の詳しい説明

データの価値について話すとき、まずデータの量を計算する必要があります。各人が消費するたびに 80 バ...

IaaS = クラウドコンピューティングを有効活用する?いいえ! Xinzhi Cloud クラウドコンピューティング Care+ はあなたを空へ飛ばすお手伝いをします

垂直型ソーシャルアプリが中秋節の期間中にイベントを企画しました。話題は斬新、プレゼントも豊富、インタ...

ウェブサイトの内部リンクの最適化といくつかの一般的な構造最適化手法

月給5,000~50,000のこれらのプロジェクトはあなたの将来ですインターネットの海で何年も過ごし...

servarica: カナダの VPS、4g メモリ/4 コア/200g SSD/無制限トラフィック、ネイティブ IP、Windows をサポート

servarica は非常に古いカナダの VPS ブランドです。主に大容量ハードディスク VPS を...

Baidu がリンク販売を厳しく取り締まる。高品質なコンテンツこそ SEO の真髄

10月末、百度はハイパーリンク不正行為のアルゴリズムを導入しました。リンクを購入したウェブサイトはそ...

5G時代の到来で、SEOはまだ役に立つのでしょうか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスインターネット時代におい...

Hostsailor: 年に一度のハロウィーン VPS 特別プロモーション、ルーマニア/オランダ データセンター

ドバイのホスティング プロバイダーである hostsailor は、毎年恒例の VPS スーパー プ...