我有一个ova的300多个ubuntu的虚拟机。 在vm上有5个networking适配器。 我需要从VMware内部重命名VMware ESX命令。
例如,在不同的情况下命名:

我的问题是,lspci | grep“以太网控制器”不显示它们的顺序:
04:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01) 0b:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01) 0c:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01) 13:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01) 1b:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
04:00.0 应该是eth1,但是它是eth4 – 我通过mac比较
这实际上是顺序:/etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:0b:00.0", ATTR{dev_id}=="0x0", NAME="eth1" SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:13:00.0", ATTR{dev_id}=="0x0", NAME="eth2" SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:1b:00.0", ATTR{dev_id}=="0x0", NAME="eth3" SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:04:00.0", ATTR{dev_id}=="0x0", NAME="eth4" SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:0c:00.0", ATTR{dev_id}=="0x0", NAME="eth5"
这是来自ESXi上的ubuntu vm的信息:
cat ubuntu.vmx|grep eth|more ethernet0.present = "TRUE" ethernet0.virtualDev = "vmxnet3" ethernet0.wakeOnPcktRcv = "FALSE" ethernet0.networkName = "_clients_network_1" ethernet0.addressType = "vpx" ethernet1.present = "TRUE" ethernet1.virtualDev = "vmxnet3" ethernet1.wakeOnPcktRcv = "FALSE" ethernet1.networkName = "_servers_network_1" ethernet1.addressType = "vpx" ethernet2.present = "TRUE" ethernet2.virtualDev = "vmxnet3" ethernet2.wakeOnPcktRcv = "FALSE" ethernet2.networkName = "_clients_network_1" ethernet2.addressType = "vpx" ethernet3.present = "TRUE" ethernet3.virtualDev = "vmxnet3" ethernet3.wakeOnPcktRcv = "FALSE" ethernet3.networkName = "_servers_network_1" ethernet3.addressType = "vpx" ethernet4.present = "TRUE" ethernet4.virtualDev = "vmxnet3" ethernet4.wakeOnPcktRcv = "FALSE" ethernet4.networkName = "VM Network" ethernet4.addressType = "vpx" ethernet0.generatedAddress = "00:50:56:a8:66:24" ethernet0.pciSlotNumber = "192" ethernet1.generatedAddress = "00:50:56:a8:32:78" ethernet1.pciSlotNumber = "224" ethernet2.generatedAddress = "00:50:56:a8:7e:2c" ethernet2.pciSlotNumber = "256" ethernet3.generatedAddress = "00:50:56:a8:56:91" ethernet3.pciSlotNumber = "1184" ethernet4.generatedAddress = "00:50:56:a8:67:ad" ethernet4.pciSlotNumber = "1216" ethernet0.generatedAddressOffset = "0" ethernet1.generatedAddressOffset = "10" ethernet2.generatedAddressOffset = "20" ethernet3.generatedAddressOffset = "30" ethernet4.generatedAddressOffset = "40"
虚拟机与主机是相当孤立的,因此devise就是使这种超级检测变得困难。
但是,您可以使用访客信息function来做到这一点。 您需要脚本主机端,以填充客户端硬件拓扑信息(PowerShell等)的映射。 他们使用vmtools从客户端获得这些信息(udev一路黑屏)。
http://www.virtuallyghetto.com/2011/01/how-to-extract-host-information-from.html
我想这个工作,你可能需要首先为虚拟机启用一些东西,但我不知道是什么。
你如何得到下面的命令? 我得到的错误,但上面的链接表明你应该能够获得从虚拟机外部设置的信息。
# vmtoolsd -l –cmd "info-get" [Apr 22 22:30:34.545] [ warning] [vmsvc] Error in the RPC receive loop: RpcIn: Unable to send. [Apr 22 22:30:35.546] [ warning] [vmsvc] Error in the RPC receive loop: RpcIn: Unable to send. ...
您可以使用ethtool --driver IFNAME获取公交信息。 也许这将是最简单的。 这是一个e1000的例子
# ethtool --driver eth0 driver: e1000 version: 7.3.21-k8-NAPI firmware-version: bus-info: 0000:02:00.0 supports-statistics: yes supports-test: yes supports-eeprom-access: yes supports-register-dump: yes supports-priv-flags: no
而对于一个vmxnet3
# ethtool --driver eth0 driver: vmxnet3 version: 1.1.30.0-k-NAPI firmware-version: bus-info: 0000:0b:00.0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: yes supports-priv-flags: no
我不知道是否寄存器转储是有用的…不看起来像,但是hex并没有很大的意义。