python - 通过 PyVim/PyVmomi API 在主机上启用 SSH

标签 python vsphere vcenter

有没有办法在 ESXi 主机上启用 SSH?我环顾四周,但一无所获。我正在编写一个脚本,需要能够在主机上启用和禁用 SSH。

最佳答案

是的,有多种方法可以在 ESXi 主机上启用 SSH。

使用 Pyvmomi API

from pyVim.connect import SmartConnect, Disconnect
import ssl
import atexit
from pyVmomi import vim


def connect():
    context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
    context.verify_mode = ssl.CERT_NONE

    si = SmartConnect(host='0.0.0.0', user='user', pwd='pass', port=443, sslContext=context)
    atexit.register(Disconnect, si)
    content = si.RetrieveContent()
    return content

def get_obj(content, vimtype, name):
    """
    Return an object by name, if name is None the
    first found object is returned
    """
    obj = None
    container = content.viewManager.CreateContainerView(
        content.rootFolder, vimtype, True)
    for c in container.view:
        if name:
            if c.name == name:
                obj = c
                break
        else:
            obj = c
            break

    container.Destroy()
    return obj

content = connect()

host_system = get_obj(content, [vim.HostSystem], 'NAME_OF_HOSTSYSTEM')
service_system = host_system.configManager.serviceSystem
ssh_service = [x for x in service_system.serviceInfo.service if x.key == 'TSM-SSH'][0]
if not ssh_service.running:
   service_system.Start(ssh_service.key)

# Fun, Profit
service_system.Stop(ssh_service.key) # Stop SSH service.

并使用 Ansible 的 vmware_host_service_manager模块

- name: Start SSH service setting for an ESXi Host in given Cluster
  vmware_host_service_manager:
    hostname: '{{ vcenter_hostname }}'
    username: '{{ vcenter_username }}'
    password: '{{ vcenter_password }}'
    esxi_hostname: esxi_name
    service_name: TSM-SSH
    state: present

关于python - 通过 PyVim/PyVmomi API 在主机上启用 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44729507/

相关文章:

python - SQLAlchemy 强制 in_() 使用文字

python - flask/sqlalchemy _init_() 添加数据库条目时出现类型错误?

linux - 如何使用 ESXi 5.1 运行/测试 VMware Perl SDK?

java - 获取无法生成DH key 对异常

Python - 如何以编程方式生成 Index.HTML 文件来列出上传文件夹的内容?

terraform - 使用 Terraform 在 vSphere 上部署 CoreOS 虚拟机

java - 如何获取虚拟机网卡的IP?

powershell - 在调用vcenter connect服务器之前在powershell中加密密码

ansible - Ansible vmware_guest 模块中的自定义值对象是什么?

Python 相当于 Scala 的 exists() 函数?