python远程windows执行命令_python 的 pywinrm 模块远程连接 windows 执行 dos 命令

本文介绍了如何在Windows服务器上配置WinRM服务,以便从Linux系统进行远程管理。步骤包括启用WinRM服务,配置基础设置,允许非加密连接,并通过Python的`pywinrm`库进行远程命令执行。这样可以提高多台服务器的管理效率。
摘要由CSDN通过智能技术生成

最近遇到项目需要使用 windows 服务器,之前分开部署,先需求 linux 连接 windows,使用 winrm 即可

—-A 机器远程连接 B—-

在 A 机器(Linux)上安装模块:

pip install pywinrm

在 B 机器上配置 winrm 服务的相关配置,使其支持远程控制:

(winrm 服务是 windows 一种方便远程管理的服务;开启 winrm service, 便于在日常工作中,远程管理服务器,或通过脚本,同时管理多台服务器,来提高工作效率;)

一、配置 windows winrm

1. 运行如下,如果没有返回,则没有开启 winrm

PS C:\Users\Administrator> winrm enumerate winrm/config/listener

2. 配置 winrm 基础配置

PS C:\Users\Administrator> winrm quickconfig

已在此计算机上运行 WinRM 服务。

WinRM 没有设置成为了管理此计算机而允许对其进行远程访问。

必须进行以下更改:

在 HTTP://* 上创建 WinRM 侦听程序接受 WS-Man 对此机器上任意 IP 的请求。

配置 LocalAccountTokenFilterPolicy 以远程向本地用户授予管理权限。

执行这些更改吗 [y/n]? y

WinRM 已经进行了更新,以用于远程管理。

在 HTTP://* 上创建 WinRM 侦听程序接受 WS-Man 对此机器上任意 IP 的请求。

已配置 LocalAccountTokenFilterPolicy 以远程向本地用户授予管理权限。

3. 查看 windows 的 winrm service listener

PS C:\Users\Administrator> winrm e winrm/config/listener

Listener

Address = *

Transport = HTTP

Port = 5985

Hostname

Enabled = true

URLPrefix = wsman

CertificateThumbprint

ListeningOn = 127.0.0.1, 172.18.232.248, ::1, fe80::5efe:172.18.232.248%12, fe80::4963:ce66:e004:e54%17

4. 配置 winrm auth

PS C:\Users\Administrator> winrm set winrm/config/service/auth '@{Basic="true"}'

Auth

Basic = true

Kerberos = true

Negotiate = true

Certificate = false

CredSSP = false

CbtHardeningLevel = Relaxed

5. 配置 winrm service 加密方式为允许非加密

PS C:\Users\Administrator> winrm set winrm/config/service '@{AllowUnencrypted="true"}'

Service

RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)

MaxConcurrentOperations = 4294967295

MaxConcurrentOperationsPerUser = 1500

EnumerationTimeoutms = 240000

MaxConnections = 300

MaxPacketRetrievalTimeSeconds = 120

AllowUnencrypted = true

Auth

Basic = true

Kerberos = true

Negotiate = true

Certificate = false

CredSSP = false

CbtHardeningLevel = Relaxed

DefaultPorts

HTTP = 5985

HTTPS = 5986

IPv4Filter = *

IPv6Filter = *

EnableCompatibilityHttpListener = false

EnableCompatibilityHttpsListener = false

CertificateThumbprint

AllowRemoteAccess = true

二、在 linux 连接

1.python 脚本

#!/usr/bin/python

import winrm

win2008 = winrm.Session('http://B主机的ip地址:5985/wsman',auth=('administrator','xxxx'))

r = win2008.run_cmd('cd .. & dir')

print r.std_out.decode()

print r.std_err

2. 运行

# python winP.py

Volume in drive C has no label.

Volume Serial Number is 50E1-E273

Directory of C:\Users

2018/07/10 10:10

2018/07/10 10:10

2018/07/06 08:57

2009/07/14 12:57

2018/07/11 18:21

0 File(s) 0 bytes

5 Dir(s) 252,649,209,856 bytes free

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值