pywinrm 技术文档

pywinrm 技术文档

pywinrm Python library for Windows Remote Management (WinRM) pywinrm 项目地址: https://gitcode.com/gh_mirrors/py/pywinrm

pywinrm 是一个专为 Windows 远程管理服务(WinRM)设计的 Python 客户端库,它使得从任何运行着 Python 的机器上向目标 Windows 主机发起命令成为可能。通过 WinRM,用户可以远程执行各种管理任务,如批处理脚本、PowerShell 脚本和查询WMI变量等,是集成到自动化工具(如Ansible)中以支持Windows系统的核心组件。

安装指南

基础安装

如果你只需要基本的认证方式(比如基础、证书、NTLM),可以通过以下命令进行安装:

pip install pywinrm

加载可选依赖以使用高级认证

对于Kerberos认证:

Debian/Ubuntu 系列:
sudo apt-get install gcc python3-dev libkrb5-dev
pip install pywinrm[kerberos]
RHEL/CentOS 系列:
sudo dnf install gcc krb5-devel krb5-workstation python3-devel
pip install pywinrm[kerberos]

对于CredSSP认证:

pip install pywinrm[credssp]

使用说明

基本使用示例

以下代码演示了如何连接到一台远程Windows主机并执行ipconfig /all命令:

import winrm

s = winrm.Session('windows-host.example.com', auth=('用户名', '密码'))
r = s.run_cmd('ipconfig', ['/all'])
print(r.status_code)
print(r.std_out.decode())

PowerShell脚本执行

如果你想在远程主机上执行PowerShell脚本,可以这样做:

ps_script = """
$strComputer = $Host
$RAM = WmiObject Win32_ComputerSystem
"Installed Memory: " + [int]($RAM.TotalPhysicalMemory / 1MB) + " MB"
"""

s = winrm.Session('windows-host.example.com', auth=('用户名', '密码'))
r = s.run_ps(ps_script)
print(r.status_code)
print(r.std_out.decode())

低级API示例

如果你想有更细致的控制,比如禁用HTTPS证书验证:

from winrm.protocol import Protocol

p = Protocol(
    endpoint='https://windows-host:5986/wsman',
    transport='ntlm',
    username='域名\\用户名',
    password='密码',
    server_cert_validation='ignore')

# 后续步骤同上,使用open_shell(), run_command(), get_command_output()等方法

项目API使用文档

pywinrm提供了几个核心类和方法来实现其功能,主要包括Session类用于建立会话,以及在该会话下进行命令的执行(通过run_cmdrun_ps)。Protocol类提供更为底层的操作接口,允许手动控制shell的生命周期和命令执行。

  • Session对象

    • __init__(endpoint, auth=None, transport=None, **kwargs)
    • run_cmd(command, args)
    • run_ps(ps_command)
  • Protocol对象

    • 提供更多的自定义设置,如初始化时的endpoint, transport, username, password等,并且提供了更详细的错误处理和配置选项。

高级特性与配置

  • 传输协议与加密:pywinrm支持多种认证类型,包括basic, plaintext, certificate, ssl, kerberos, ntlm, 和 credssp。默认情况下,WinRM通信需要加密,可通过使用HTTPS或特定的认证机制保证安全。

  • 消息加密:可以设置message_encryption参数来控制是否和何时使用消息层加密,以适应不同的安全需求。

  • 启用WinRM服务:在目标Windows主机上,可能需要配置或启动WinRM服务,尤其是当首次使用或在严格的安全环境中时。

确保在生产环境中遵循最佳实践,特别是在处理认证信息和加密设置时,避免不安全的配置,如无加密的HTTP通讯。通过本文档,用户应能够全面了解并有效运用pywinrm来满足远程管理系统的需求。

pywinrm Python library for Windows Remote Management (WinRM) pywinrm 项目地址: https://gitcode.com/gh_mirrors/py/pywinrm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罗梓惠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值