网络编程
位置:首页>> 网络编程>> Python编程>> Python远程控制Windows服务器的方法详解

Python远程控制Windows服务器的方法详解

作者:星安果  发布时间:2023-07-13 13:14:03 

标签:Python,远程控制,Windows,服务器

在很多企业会使用闲置的 Windows 机器作为临时服务器,有时候我们想远程调用里面的程序或查看日志文件

Windows 内置的服务「 winrm 」可以满足我们的需求

它是一种基于标准简单对象访问协议( SOAP )的防火墙友好协议,允许来自不同供应商的硬件和操作系统进行互操作

官网地址

1. 被控端 windows

这里以 Windows 10 系统机器为例

具体操作步骤如下:

启动 winrm 服务

以管理员权限打开 CMD 命令窗口,输入下面命令启动 winrm 服务

# 启动winrm服务
winrm quickconfig -q

如果运行报错,提示网络类型设置异常

Python远程控制Windows服务器的方法详解

可以快捷键 win+i 进入到网络和 Internet,更改网络配置文件,由公用切换为专用

Python远程控制Windows服务器的方法详解

检查 winrm 服务监听状态

继续在命令行输入下面命令,查看 winrm 服务的状态

PS:注意这里的端口号 Port 值后面连接会用到

# 查看winrm服务的状态
winrm e winrm/config/listener

# 结果
Listener
    Address = *
    Transport = HTTP
    Port = 5985
    Hostname
    Enabled = true
    URLPrefix = wsman
    CertificateThumbprint
    ListeningOn = **

查看 winrm 配置信息(可选)

通过以下命令可以查看 winrm 全部配置信息、client 客户端配置信息、service 服务端配置信息

# 全部
winrm get winrm/config

# Client
winrm get winrm/config/client

# Service
winrm get winrm/config/service

配置 winrm client

# 配置winrm client
winrm set winrm/config/client @{AllowUnencrypted="true"}</code>
<code>winrm set winrm/config/client @{TrustedHosts="*"}</code>
<code>winrm set winrm/config/client/auth @{Basic="true"}

配置 winrm service

在配置完 winrm service 和 winrm client 后,我们通过通过步骤 1-3 查看配置文件,确保配置文件已生效

# 配置winrm service
winrm set winrm/config/service @{AllowUnencrypted="true"}

winrm set winrm/config/service/auth @{Basic="true"}

2. 控制端

在控制端,比如:Mac OSX、Linux,我们只需要安装「 pywinrm 」依赖包即可

# 控制端安装依赖包
pip3 install pywinrm

3. 实战一下

做为以上准备后,我们就可以编写代码对 Windows 进行控制了

首先,我们需要 ip 地址、端口号、用户名、密码连接 Windows 被控端

# 连接windows
import winrm

...
# ip地址:端口号
# winrm server端口号
# auth:用户名和密码
self.session = winrm.Session("192.168.**.**:5985", auth=('username', 'password'), transport='ntlm')
...

这样,我们就可以通过对象的「 run_cmd 」和「 run_ps 」函数模拟 CMD、PowerShell 输入命令了 

这里以查看 Windows 某个硬盘目录下的日志文件为例

# 连接windows
import winrm
import codecs
...
 def exec_cmd(self, cmd):
        """
        执行cmd命令,获取返回值
        :param cmd:
        :return:
        """
        # CMD
        result = self.session.run_cmd(cmd)
        # powerShell
        # result = self.session.run_ps(cmd)
        # 返回码
        # code为0代表调用成功
        code = result.status_code

        # 根据返回码,获取响应内容(bytes)
        content = result.std_out if code == 0 else result.std_err

        # 转为字符串(尝试通过UTF8、GBK进行解码)
        # result = content.decode("utf8")
        # result = codecs.decode(content,'UTF-8')
        try:
            result = content.decode("utf8")
        except:
            result = content.decode("GBK")

        print(result)
        return result
...
# 打开文件D:/py/log/trade.log
# windows使用type命令,查看文件内容
result = self.exec_cmd('D: &cd py\\log &type trade.log')

# 查看结果
print(result)

4. 总结

除了可以远程查看 Windows 的文件外,还可以执行 bat 批处理文件,又或者是模拟命令行输入,根据返回值进行其他骚操作

来源:https://mp.weixin.qq.com/s/VsV2mrixY8cykfboWKG45A

0
投稿

猜你喜欢

  • 数据库文件在使用过程中,日志文件会越来越大。小则几个G,大的可能几十上百G都有可能,有时实在是没有必要为它浪费太大的硬盘存储空间。所以可以把
  • 内容摘要:MySQL易学易用,附带丰富的技术文档,这两个因素使之被广泛应用。然而,随着MySQL发展加快,即使一个MySQL老手有时也会为该
  • EXISTS该函数返回集合中第一个元素的索引,如果集合为空,返回NULLNULLNULLCollection.EXISTS(index)CO
  • vbscript脚本中,fso对象CreateTextFile方法调用时可能会报“无效的过程调用或参数”错误,在使用ASP生成静态页面时,如
  • 因为即将开始淘宝的项目,在前端方面必然要深入了解taobao ued规范,规范还是比较全的,只是对taobao.com的编码和字符集的选择有
  •  这是个删除非空目录的例子test.asp要执行删除你需要对该目录具有修改权限<% dim fso,tmpfold
  • 遵循Web标准的思想,网页要表现出一种亲和力。那么,针对残障用户来说,其“阅读”器可不能读取图像上传递的信息的。所以我们会采用一种Using
  • Monster是Alipay UED推出的网站代码分析、质量检测及评分的浏览器扩展,它能智能分析CSS、JS、HTML内容并生动形象展示网页
  • froglt 的站点:http://www.go2here.net  欢迎转载,请注明出处,未经作者允许,禁止一切商业应用。这是即
  • 昨天,系统管理员告诉我,我们一个内部应用数据库所在的磁盘空间不足了。我注意到数据库事件日志文件XXX_Data.ldf文件已经增长到了3GB
  • CSS 文件的大小和所引起的 HTTP 的请求数是 CSS 性能的最关键因素回流(reflow)和渲染时间(非常!)没那么重要副本(dupl
  • 比如说点的是图片的左边,还是右边,上边还是下边?点击图片左右显示上下张,我怎么知道?这样就可以做出像QQ空间那样,打开上一个图片和下一个图片
  • 我们在前面的几节中分别讲了提高网站性能中内容、服务器、JavaScript和CSS等方面的内容。除此之外,图片和Coockie也是我们网站中
  • 本文给出了MySQL数据库中定义外键的必要性、具体的定义步骤和相关的一些基本操作,供大家参考!定义数据表假如某个电脑生产商,它的数据库中保存
  • 我们在设计网站的时候,有的时候需要根据页面元素的属性来制作不同的样式,比如,对于不同的链接类型,显示不同的链接图标。CSS的选择器是个很有用
  • 在现在的项目里,不管是电商项目还是别的项目,在管理端都会有导出的功能,比方说订单表导出,用户表导出,业绩表导出。这些都需要提前生成excel
  • 当然有其它工具可以做这件事,但如果客户不允许你在服务器乱装东西时这个脚本就会有用了。 代码如下:DECLARE @tbImportTable
  • 个人网站如有会员注册模块+动网论坛的话,那网站要与动网论坛系统整合,实现不同Web系统之间的用户信息同步更新、登录等操作就不是件容易的事了,
  • 内容摘要:本文介绍了对数据库的基本操作:数据记录筛选(select),更新数据库(update),删除记录(delete),添加数据记录(i
  • mysql优化了所以先说说这个,其实这个,很复杂,对于不同的网站,其在线,访问量,帖子数量,网络情况,以及机器配置都有关系,优化不是一次可以
手机版 网络编程 asp之家 www.aspxhome.com