当前位置: 首页 > 后端技术 > Python

用Python远程控制Windows服务器,太好用了!

时间:2023-03-26 11:09:44 Python

在很多企业中,闲置的Windows机器被用作临时服务器。有时我们想远程调用程序或查看日志文件。Windows内置服务“winrm”可以满足我们的需求。它是一种基于标准的简单对象访问协议(SOAP)防火墙友好协议,允许来自不同供应商的硬件和操作系统进行互操作。在命令窗口输入以下命令启动winrm服务#Startwinrmservicewinrmquickconfig-q运行时报错,提示网络类型设置异常。可以通过快捷键win+i进入网络和Internet,更改网络配置文件,由公共切换为私有1-2查看winrm服务的监听状态继续在命令行输入以下命令即可查看winrm服务状态PS:注意这里的端口号会在连接后使用#查看winrm服务状态winrmewinrm/config/listener#ResultListenerAddress=*Transport=HTTPPort=5985HostnameEnabled=trueURLPrefix=wsmanCertificateThumbprintserviceListeningOn=**1-3查看winrm配置信息(可选)可以查看所有winrm配置信息,client客户端配置信息,Server配置信息#allwinrmgetwinrm/config#Clientwinrmgetwinrm/config/client#Servicewinrmgetwinrm/config/service1-4Configurewinrmclient#配置winrmclientwinrmsetwinrm/config/client@{AllowUnencrypted="true"}winrmsetwinrm/config/client@{TrustedHosts="*"}winrm设置winrm/配置/client/auth@{Basic="true"}1-5配置winrm服务配置完winrm服务和winrm客户端后,我们通过1-3步检查配置文件,确保配置文件已经生效#Configurewinrmservicewinrmsetwinrm/config/service@{AllowUnencrypted="true"}winrmsetwinrm/config/service/auth@{Basic="true"}2.control端在control端,比如:MacOSX,Linux,我们只需要安装“pywinrm”依赖包就够了#在控制端安装依赖包pip3installpywinrm3。经过以上准备工作,我们就可以编写控制Windows的代码了。首先我们需要ip地址,端口号,连接Windows的用户名和密码控制终端#connectwindowsimportwinrm...#ip地址:端口号#winrm服务器端口号#auth:用户名和密码self.session=winrm.Session("192.168.**.**:5985",auth=('username','password'),transport='ntlm')...这样我们就可以使用run_cmd和run_ps模拟CMD和PowerShell输入命令的对象功能这里查看硬盘下的Windows目录以日志文件为例#Connectwindowsimportwinrmimportcodecs...defexec_cmd(self,cmd):"""执行cmd命令并获取返回值:paramcmd::return:ult"""resultrun.dCMDslf=secmd)#powerShell#result=self.session.run_ps(cmd)#ReturnCode#code=0表示调用成功code=result.status_code#根据返回码,得到响应内容(字节)#content=result.std_outifcode==0else将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)returnresult...#打开文件D:/py/log/trade.log#Windows使用type命令查看文件contentresult=self.exec_cmd('D:&cdpy\log&typetrade.log')#查看结果print(result)4.总结除了远程查看Windows文件,还可以执行bat批处理文件,或者模拟命令行输入,根据返回值做其他花样。