簡(jiǎn)介
在很多企業(yè)會(huì)使用閑置的 Windows 機(jī)器作為臨時(shí)服務(wù)器,有時(shí)候我們想遠(yuǎn)程調(diào)用里面的程序或查看日志文件。
Windows 內(nèi)置的服務(wù)「 winrm 」可以滿足我們的需求。
它是一種基于標(biāo)準(zhǔn)簡(jiǎn)單對(duì)象訪問協(xié)議( SOAP )的防火墻友好協(xié)議,允許來自不同供應(yīng)商的硬件和操作系統(tǒng)進(jìn)行互操作。
被控端 windows——這里以 Windows 10
系統(tǒng)機(jī)器為例
具體操作步驟如下:
1.啟動(dòng) winrm 服務(wù)
以管理員權(quán)限打開 CMD 命令窗口,輸入下面命令啟動(dòng) winrm 服務(wù)
#啟動(dòng)winrm服務(wù)
winrm quickconfig -q
如果運(yùn)行報(bào)錯(cuò),提示網(wǎng)絡(luò)類型設(shè)置異常
可以快捷鍵 win+i 進(jìn)入到網(wǎng)絡(luò)和 Internet,更改網(wǎng)絡(luò)配置文件,由公用切換為專用。
2.檢查 winrm 服務(wù)監(jiān)聽狀態(tài)
繼續(xù)在命令行輸入下面命令,查看 winrm 服務(wù)的狀態(tài)
PS:注意這里的端口號(hào) Port 值后面連接會(huì)用到
#查看winrm服務(wù)的狀態(tài)
winrm e winrm/config/listener
#結(jié)果
Listener
Address = *
Transport = HTTP
Port = 5985
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn = **
3.查看 winrm 配置信息(可選)
通過以下命令可以查看 winrm 全部配置信息、client 客戶端配置信息、service 服務(wù)端配置信息
# 全部
winrm get winrm/config
# Client
winrm get winrm/config/client
# Service
winrm get winrm/config/service
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"}
5.配置 winrm service
在配置完 winrm service 和 winrm client 后,我們通過通過步驟 3 查看配置文件,確保配置文件已生效
# 配置winrm service
winrm set winrm/config/service @{AllowUnencrypted="true"}
winrm set winrm/config/service/auth @{Basic="true"}
控制端
在控制端,比如:Mac OSX、Linux,我們只需要安裝「 pywinrm 」依賴包即可
# 控制端安裝依賴包
pip3 install pywinrm
實(shí)戰(zhàn)一下
做為以上準(zhǔn)備后,我們就可以編寫代碼對(duì) Windows 進(jìn)行控制了
首先,我們需要 ip 地址、端口號(hào)、用戶名、密碼連接 Windows 被控端
# 連接windows
import winrm
...
# ip地址:端口號(hào)
# winrm server端口號(hào)
# auth:用戶名和密碼
self.session = winrm.Session("192.168.**.**:5985", auth=('username', 'password'), transport='ntlm')
...
這樣,我們就可以通過對(duì)象的「 run_cmd 」和「 run_ps 」函數(shù)模擬 CMD、PowerShell 輸入命令了
這里以查看 Windows 某個(gè)硬盤目錄下的日志文件為例
# 連接windows
import winrm
import codecs
...
def exec_cmd(self, cmd):
"""
執(zhí)行cmd命令,獲取返回值
:param cmd:
:return:
"""
# CMD
result = self.session.run_cmd(cmd)
# powerShell
# result = self.session.run_ps(cmd)
# 返回碼
# code為0代表調(diào)用成功
code = result.status_code
# 根據(jù)返回碼,獲取響應(yīng)內(nèi)容(bytes)
content = result.std_out if code == 0 else result.std_err
# 轉(zhuǎn)為字符串(嘗試通過UTF8、GBK進(jìn)行解碼)
# 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命令,查看文件內(nèi)容
result = self.exec_cmd('D: &cd py\\log &type trade.log')
# 查看結(jié)果
print(result)
如果你對(duì)Python感興趣,想要學(xué)習(xí)python,這里給大家分享一份Python全套學(xué)習(xí)資料,都是我自己學(xué)習(xí)時(shí)整理的,希望可以幫到你,一起加油!
??有需要的小伙伴,可以V掃描下方二維碼免費(fèi)領(lǐng)取??

1??零基礎(chǔ)入門
① 學(xué)習(xí)路線
對(duì)于從來沒有接觸過Python的同學(xué),我們幫你準(zhǔn)備了詳細(xì)的學(xué)習(xí)成長(zhǎng)路線圖??梢哉f是最科學(xué)最系統(tǒng)的學(xué)習(xí)路線,你可以按照上面的知識(shí)點(diǎn)去找對(duì)應(yīng)的學(xué)習(xí)資源,保證自己學(xué)得較為全面。
② 路線對(duì)應(yīng)學(xué)習(xí)視頻
還有很多適合0基礎(chǔ)入門的學(xué)習(xí)視頻,有了這些視頻,輕輕松松上手Python~
③練習(xí)題
每節(jié)視頻課后,都有對(duì)應(yīng)的練習(xí)題哦,可以檢驗(yàn)學(xué)習(xí)成果哈哈!
2??國(guó)內(nèi)外Python書籍、文檔
① 文檔和書籍資料
3??Python工具包+項(xiàng)目源碼合集
①Python工具包
學(xué)習(xí)Python常用的開發(fā)軟件都在這里了!每個(gè)都有詳細(xì)的安裝教程,保證你可以安裝成功哦!
②Python實(shí)戰(zhàn)案例
光學(xué)理論是沒用的,要學(xué)會(huì)跟著一起敲代碼,動(dòng)手實(shí)操,才能將自己的所學(xué)運(yùn)用到實(shí)際當(dāng)中去,這時(shí)候可以搞點(diǎn)實(shí)戰(zhàn)案例來學(xué)習(xí)。100+實(shí)戰(zhàn)案例源碼等你來拿!
③Python小游戲源碼
如果覺得上面的實(shí)戰(zhàn)案例有點(diǎn)枯燥,可以試試自己用Python編寫小游戲,讓你的學(xué)習(xí)過程中增添一點(diǎn)趣味!
4??Python面試題
我們學(xué)會(huì)了Python之后,有了技能就可以出去找工作啦!下面這些面試題是都來自阿里、騰訊、字節(jié)等一線互聯(lián)網(wǎng)大廠,并且有阿里大佬給出了權(quán)威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。文章來源:http://www.zghlxwxcb.cn/news/detail-811576.html
5??Python兼職渠道
而且學(xué)會(huì)Python以后,還可以在各大兼職平臺(tái)接單賺錢,各種兼職渠道+兼職注意事項(xiàng)+如何和客戶溝通,我都整理成文檔了。文章來源地址http://www.zghlxwxcb.cn/news/detail-811576.html
到了這里,關(guān)于【python】用 Python 遠(yuǎn)程控制 Windows 服務(wù)器,簡(jiǎn)直太方便了~的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!