您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Python怎么遠(yuǎn)程控制Windows服務(wù)器”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Python怎么遠(yuǎn)程控制Windows服務(wù)器”吧!
在很多企業(yè)會(huì)使用閑置的 Windows 機(jī)器作為臨時(shí)服務(wù)器,有時(shí)候我們想遠(yuǎn)程調(diào)用里面的程序或查看日志文件
Windows 內(nèi)置的服務(wù)「 winrm 」可以滿足我們的需求
它是一種基于標(biāo)準(zhǔn)簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議( SOAP )的防火墻友好協(xié)議,允許來(lái)自不同供應(yīng)商的硬件和操作系統(tǒng)進(jìn)行互操作
官網(wǎng)地址
這里以 Windows 10 系統(tǒng)機(jī)器為例
具體操作步驟如下:
以管理員權(quán)限打開(kāi) 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ò)配置文件,由公用切換為專用
繼續(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 = **
通過(guò)以下命令可以查看 winrm 全部配置信息、client 客戶端配置信息、service 服務(wù)端配置信息
# 全部 winrm get winrm/config # Client winrm get winrm/config/client # Service winrm get winrm/config/service
# 配置winrm client winrm set winrm/config/client @{AllowUnencrypted="true"}</code> <code>winrm set winrm/config/client @{TrustedHosts="*"}</code> <code>winrm set winrm/config/client/auth @{Basic="true"}
在配置完 winrm service 和 winrm client 后,我們通過(guò)通過(guò)步驟 1-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
做為以上準(zhǔn)備后,我們就可以編寫(xiě)代碼對(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') ...
這樣,我們就可以通過(guò)對(duì)象的「 run_cmd 」和「 run_ps 」函數(shù)模擬 CMD、PowerShell 輸入命令了
這里以查看 Windows 某個(gè)硬盤(pán)目錄下的日志文件為例
# 連接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)為字符串(嘗試通過(guò)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 ... # 打開(kāi)文件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怎么遠(yuǎn)程控制Windows服務(wù)器”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。