Windows中内置的服务“winrm”就可以满足我们的需求。
它是基于标准简单对象访问协议(SOAP) 的防火墙友好协议,允许不同供应商的硬件和操作系统进行互操作。
官方网站:https://docs.microsoft.com/en-us/windows/win32/winrm/portal
1. 被控端 windows
这里我们以Windows 10系统机器为例。
具体步骤如下:
1.1 启动 winrm 服务
以管理员权限打开CMD命令窗口,输入以下命令启动winrm服务。
# 启动winrm服务
如果运行winrm Quickconfig -q,会报错,提示网络类型设置异常。
可以使用快捷键win+i进入网络和Internet,更改网络配置文件,从公共切换到私有。
1.2 检查 winrm 服务监听状态
继续在命令行输入以下命令,查看winrm服务的状态。
PS:注意这里的端口号和Port值在后面的连接中会用到。
# 检查winrm服务的状态
winrm e winrm/config/listener
结果
聆听者
地址=*
传输=HTTP
端口=5985
主机名
启用=真
URL前缀=wsman
证书指纹
ListeningOn=**
1.3 查看 winrm 配置信息(可选)
通过以下命令可以查看所有winrm配置信息、客户端配置信息、业务服务器配置信息。
全部
winrm 获取winrm/config
客户
winrm 获取winrm/config/client
服务
winrm get winrm/config/service
1.4 配置 winrm client
# 配置winrm客户端
winrmsetwinrm/config/client @{AllowUnencrypted='true'}
winrmsetwinrm/config/client @{TrustedHosts='*'}
winrmsetwinrm /config/client/auth @{Basic='true'}
1.5 配置 winrm service
配置好winrm服务和winrm客户端后,我们通过步骤1-3检查配置文件,确保配置文件已经生效。
# 配置winrm服务
winrmsetwinrm/config/service @{AllowUnencrypted='true'}
winrmsetwinrm /config/service/auth @{Basic='true'}
2. 控制端
在控制端,例如Mac OSX和Linux,我们只需要安装“pywinrm”依赖包即可。
# 在控制端安装依赖包
pip3 install pywinrm
3. 实战一下
做好上述准备后,我们就可以编写控制Windows的代码了。
首先,我们需要IP地址、端口号、用户名和密码来连接Windows控制终端。
# 连接窗口
导入winrm
.
#ip地址:端口号
# winrm服务器端口号
# auth: 用户名和密码
self.session=winrm.Session('192.168.**.**:5985',auth=('用户名','密码'),transport='ntlm')
.这样我们就可以通过对象的“run_cmd”和“run_ps”函数来模拟CMD和PowerShell输入命令。
下面以查看Windows某硬盘目录下的日志文件为例:
# 连接窗口
导入winrm
导入编解码器
.
def exec_cmd(自我,cmd):
'''
执行cmd命令并获取返回值
:paramcmd:
:返回:
'''
#CMD
结果=self.session.run_cmd(cmd)
#powerShell
# 结果=self.session.run_ps(cmd)
#返回码
# code 0表示调用成功
代码=结果.status_code
#根据返回码,获取响应内容(字节)
content=result.std_outif 代码==0else result.std_err
# 转换为字符串(尝试通过UTF8、GBK解码)
# 结果=content.decode('utf8')
# 结果=codecs.decode(内容,'UTF-8')
尝试:
结果=content.decode('utf8')
除了:
结果=content.decode('GBK')
打印(结果)
返回结果
.
# 打开文件D:/py/log/trade.log
# Windows使用type命令查看文件内容
result=self.exec_cmd('D: cd py\\log 类型trade.log')
# 查看结果
print(result)
4. 总结
除了远程查看Windows文件外,还可以执行bat批处理文件,或者模拟命令行输入,根据返回值进行其他操作。
如果你还想了解更多这方面的信息,记得收藏关注本站。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/6926.html
用户评论
我现在一直在找这种方法,终于找到了!
有5位网友表示赞同!
对我的工作效率简直是个福音啊!
有19位网友表示赞同!
平时在办公室里操作Windows机器挺麻烦的,这下方便多了!
有5位网友表示赞同!
学Python太值了,这方面的应用真多。
有10位网友表示赞同!
这么厉害的技术,什么时候能用到手机上呢?
有11位网友表示赞同!
有没有其他语言也能远程控制啊?
有5位网友表示赞同!
要怎么做才能远程安装软件呢?
有10位网友表示赞同!
这个技巧看起来超级便捷!
有7位网友表示赞同!
分享链接吗?想赶紧试试看!
有12位网友表示赞同!
太棒了,我之前也想尝试一下远程控制。
有12位网友表示赞同!
学习Python真是一个很好的选择啊。
有13位网友表示赞同!
这篇文章很有用,谢谢分享!
有20位网友表示赞同!
可以远程操控的游戏应该也很酷吧!
有12位网友表示赞同!
请问这个方法安全性高吗?
有9位网友表示赞同!
远程控制能解决好多问题,比如同事电脑卡的时候。
有14位网友表示赞同!
感觉像穿越未来一样!
有9位网友表示赞同!
我还以为这只能出现在科幻片里呢!
有20位网友表示赞同!
可以远程修改文件了吗?
有16位网友表示赞同!
学习这个方法需要多久?
有11位网友表示赞同!
我想了解一下这个在实际应用中的场景。
有10位网友表示赞同!