为windows开启winrm service, 以便进行远程管理:https://jingyan.baidu.com/article/9158e0006b27dfa254122813.htmlhttps://jingyan.baidu.com/article/9158e0006b27dfa254122813.html
python 远程windows系统执行cmd命令
如果你的服务器是windows系统,不想一台一台mstsc远程到桌面上去操作,python是有模块可以远程处理的:winrm
pip install pywinrm 安装模块即可
windows系统服务器需要开启 winrm 服务
具体开启方法:
cmd命令行输入:
# 开启服务
1.winrm quickconfig
会有两次确认
# 查看监听端口等信息
2.winrm e winrm/config/listener
# 授权
3.winrm set winrm/config/service/auth @{Basic="true"}
# 不加密模式
4.winrm set winrm/config/service @{AllowUnencrypted="true"}
λ winrm enumerate winrm/config/listener
Listener
Address = *
Transport = HTTP
Port = 5985
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn = 10.116.0.30, 69.176.89.133
上面的cmd命令可以写成一个.bat文件,在服务器上直接执行即可:
bat命令:
echo y| winrm quickconfig
echo y| winrm quickconfig
winrm e winrm/config/listener
winrm set winrm/config/service/auth @{Basic="true"}
winrm set winrm/config/service @{AllowUnencrypted="true"}
因为有两次手动确认的过程,写了两个echo y|解决。
以上准备工作做好就可以在python里操作了
举个例子:
1 # -*- coding = utf-8 -*-
2 # ------------------------------
3 # @time: 2020/9/1 17:54
4 # @Author: drew_gg
5 # @File: mstsc_windows.py
6 # @Software: api_locust
7 # ------------------------------
import winrm
# 注意:5985/wsman”每台服务器上应该都是固定相同的。
con = winrm.Session('http://49.37.168.224:5985/wsman', auth=("administrator", "23423423***"))
# 杀掉进程
con.run_cmd("taskkill /f /pid 6748")
关于winrm再扩展一些知识: 执行以下命令能够以每组多达50个实例的速度获取实例 winrm set winrm/config @{MaxBatchItems="50"} 通过增大分配的最大封包大小和超时设置,提高性能 winrm set winrm/config @{MaxEnvelopeSizekb="150"} winrm set winrm/config @{MaxTimeoutms ="60000"} 获取当前winRM配置 winrm g winrm/config TrustedHosts 是一个数组,用于指定可信的远程计算机的列表;同一工作组中的其他计算机或不同域中的计算机均应添加到此列表中;执行以下命令可将所有计算机都纳入TrustedHosts winrm s winrm/config/Client @{TrustedHosts="*"} 将客户端计算机设置为使用基本身份验证 winrm s winrm/config/Client/Auth @{Basic="true"}