【问题标题】:trigger host custom shell command using VMware SDK使用 VMware SDK 触发主机自定义 shell 命令
【发布时间】:2019-01-28 11:26:12
【问题描述】:

我正在寻找一种方法来使用 VMware Web 服务 SDK 在连接到 vCenter 的所有 ESXi 主机上运行自定义 shell 命令,例如pyvmomi

【问题讨论】:

  • 要求我们推荐或查找工具、软件库、教程或其他非现场资源的问题是off-topic for Stack Overflow,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述您的具体问题以及迄今为止为解决该问题所做的工作。谢谢!
  • 问题我正在寻找在所有 ESXi 主机上运行 shell 命令的方法,而不知道 ESXi 主机的 root 密码我正在通过使用 HostLocalAccountManager 创建本地用户解决方法,但是您需要添加权限使用 VMware SDK 中的 AuthorizationManager 我找不到仅适用于 ESXi 主机的子 AuthorizationManager 我可以访问在 esxi 上看不到本地用户的 vCenter 的那个。那么有没有办法通过使用 vCenter SSO 将服务实例直接连接到主机?

标签: pyvmomi vmware-sdk


【解决方案1】:

我在这里看到了 2 个主要构建块:

  1. 您需要确保启用 SSH 进行远程访问(在 EXSi 服务器上可能默认禁用它。可以通过 SDK 启用它)

  2. 您需要一个 python SSH 客户端来通过 SSH 连接并执行远程命令


我是一个名为vmwc(基于pyvmomi 的高级VMware SDK 客户端)的python 包的作者。将它与诸如paramiko 之类的 SSH 库相结合将为您提供一个简单的解决方案。

安装

pip install vmwc paramiko 

用法:

#!/usr/bin/env python

from vmwc import VMWareClient
import paramiko


def main():
    host = '192.168.1.1'
    username = '<username>'
    password = '<password>'
    remote_ssh_command = 'touch /tmp/hello-world' # Your remote command

    with VMWareClient(host, username, password) as client:
        client.enable_ssh()

        ssh = paramiko.SSHClient()
        ssh.connect(host, username=username, password=password)
        ssh.exec_command(remote_ssh_command)

        client.disable_ssh() # optional in case you want to close the ssh access


if __name__ == '__main__':
    main()

【讨论】:

  • 感谢 Jossef,但我相信这是假设您直接连接到 ESXi 主机并且您知道 root 密码。我的问题是如何在 vCenter 清单中的任何主机上运行 shell/cli 命令不一定通过 ssh 使用,所以在我的用例中,我将智能连接到 vCenter,然后创建 ESXi 主机的视图,我需要在每个主机上运行特定于主机的 cli,举个更相关的例子,假设您想从 MOB 方法将文件上传到所有 esxi 主机到 tmp,我可以请求通用服务票证,我可以在不知道 root 密码的情况下将文件上传到 ESXi 时在 auth 标头中使用它
  • 那么我们有什么方法可以在 MOB 上用于在 ESXi 主机上运行命令,或者在无需 root 密码直接智能连接到 ESXi 主机时可以给我令牌或票证的方法吗?
猜你喜欢
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多