IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 用 Python 远程控制 Windows 服务器,太好用了 -> 正文阅读

[系统运维]用 Python 远程控制 Windows 服务器,太好用了

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

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

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

1-3?查看 winrm 配置信息(可选)

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

#?全部
winrm?get?winrm/config

#?Client
winrm?get?winrm/config/client

#?Service
winrm?get?winrm/config/service

1-4??配置 winrm client

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

1-5??配置 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 批处理文件,又或者是模拟命令行输入,根据返回值进行其他骚操作

python学习】
学Python的伙伴,欢迎加入新的交流【君羊】:1020465983
一起探讨编程知识,成为大神,群里还有软件安装包,实战案例、学习资料?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-27 17:26:00  更:2022-05-27 17:26:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:51:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码