简介
在很多企业会使用闲置的 Windows 机器作为临时服务器,有时候我们想远程调用里面的程序或查看日志文件。
Windows 内置的服务「 winrm 」可以满足我们的需求。
它是一种基于标准简单对象访问协议( SOAP )的防火墙友好协议,允许来自不同供应商的硬件和操作系统进行互操作。
被控端 windows——这里以 Windows 10
系统机器为例
具体操作步骤如下:
1.启动 winrm 服务
以管理员权限打开 CMD 命令窗口,输入下面命令启动 winrm 服务
#启动winrm服务winrm quickconfig -q
如果运行报错,提示网络类型设置异常
可以快捷键 win+i 进入到网络和 Internet,更改网络配置文件,由公用切换为专用。
2.检查 winrm 服务监听状态
继续在命令行输入下面命令,查看 winrm 服务的状态
PS:注意这里的端口号 Port 值后面连接会用到
#查看winrm服务的状态winrm e winrm/config/listener#结果Listener Address = * Transport = HTTP Port = 5985 Hostname Enabled = true URLPrefix = wsman CertificateThumbprint ListeningOn = **
3.查看 winrm 配置信息(可选)
通过以下命令可以查看 winrm 全部配置信息、client 客户端配置信息、service 服务端配置信息
# 全部winrm get winrm/config# Clientwinrm get winrm/config/client# Servicewinrm get winrm/config/service
4.配置 winrm client
# 配置winrm clientwinrm set winrm/config/client @{AllowUnencrypted="true"}winrm set winrm/config/client @{TrustedHosts="*"}winrm set winrm/config/client/auth @{Basic="true"}
5.配置 winrm service
在配置完 winrm service 和 winrm client 后,我们通过通过步骤 3 查看配置文件,确保配置文件已生效
# 配置winrm servicewinrm set winrm/config/service @{AllowUnencrypted="true"}winrm set winrm/config/service/auth @{Basic="true"}
控制端
在控制端,比如:Mac OSX、Linux,我们只需要安装「 pywinrm 」依赖包即可
# 控制端安装依赖包pip3 install pywinrm
实战一下
做为以上准备后,我们就可以编写代码对 Windows 进行控制了
首先,我们需要 ip 地址、端口号、用户名、密码连接 Windows 被控端
# 连接windowsimport winrm...# ip地址:端口号# winrm server端口号# auth:用户名和密码self.session = winrm.Session("192.168.**.**:5985", auth=('username', 'password'), transport='ntlm')...
这样,我们就可以通过对象的「 run_cmd 」和「 run_ps 」函数模拟 CMD、PowerShell 输入命令了
这里以查看 Windows 某个硬盘目录下的日志文件为例
# 连接windowsimport winrmimport 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)
如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!
😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓
1️⃣零基础入门
① 学习路线
对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
② 路线对应学习视频
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
③练习题
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
2️⃣国内外Python书籍、文档
① 文档和书籍资料
3️⃣Python工具包+项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
②Python实战案例
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
③Python小游戏源码
如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
4️⃣Python面试题
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
5️⃣Python兼职渠道
而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。