python3通过winrm远程执行windows服务器dos命令

本文介绍如何在Windows服务器上启用WinRM服务实现远程管理,并利用Python的pywinrm库执行CMD及PowerShell命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Background

  • 在实际项目中,一般使用Linux作为生产服务器,但有时就会出现一些特殊情况,你只能使用windows作为作为服务器,比如说一个用fortran编写的仿真程序,编译环境用的intel的oneAPI,按理说这个编译器是是支持windows、linux和mac平台的,但是不同平台的编译命令还不一样,无法找到相应的编译参数,没办法,只能使用windows作为服务器了。
  • python3中远程控制库中,像远程控制linux服务器的paramiko,同样也有远程控制windows服务器的pywinrm,可以远程执行 cmd、powerSehll命令。不过,需要在被控端 windows 开启 winrm 服务
  • pywinrm官方文档

1、在被控端 windows 开启 winrm 服务

  • 以管理员启动cmd
    在这里插入图片描述

  • 启动 winrm 服务

如果遇到网络设置问题如下图1,可以win+i,然后按照下图2进行操作设置。

winrm quickconfig -q

在这里插入图片描述
在这里插入图片描述

  • 查看winrm服务的状态
winrm e winrm/config/listener
# 或者
winrm enumerate winrm/config/listener

在这里插入图片描述

  • 为winrm service 配置auth
winrm set winrm/config/service/auth '@{Basic="true"}'

在这里插入图片描述

  • 为winrm service 配置加密方式为允许非加密
winrm set winrm/config/service '@{AllowUnencrypted="true"}'

在这里插入图片描述

2、在控制端需要安装pywinrm库

pip3 install pywinrm

3、通过 pywinrm 远程执行 cmd、powerSehll命令

import winrm


def win_cmd(cmd: str):
    """远程调用 windows 执行命令"""
    hostname = '110.110.110.110'
    username = 'user1'
    password = '123456'
    wintest = winrm.Session('http://' + hostname + ':5985/wsman', auth=(username, password))
    res = wintest.run_cmd(cmd)
    if res.status_code == 0:
        res = res.std_out.decode().replace('\n', '').replace('\r', '')
        return {'sta': 200, 'res': res}
    else:
        return {'sta': 201, 'res': res.std_err}
    

def main():
    """主函数"""
    cmd = 'python3 -V'
    print(win_cmd(cmd))


if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

WaiSaa

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

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

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

打赏作者

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

抵扣说明:

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

余额充值