<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用 Python 遠(yuǎn)程控制 Windows 服務(wù)器,太好用了!

          共 2791字,需瀏覽 6分鐘

           ·

          2022-05-17 05:46

          在很多企業(yè)會(huì)使用閑置的 Windows?機(jī)器作為臨時(shí)服務(wù)器,有時(shí)候我們想遠(yuǎn)程調(diào)用里面的程序或查看日志文件

          Windows 內(nèi)置的服務(wù)「 winrm 」可以滿(mǎn)足我們的需求

          它是一種基于標(biāo)準(zhǔn)簡(jiǎn)單對(duì)象訪(fǎng)問(wèn)協(xié)議( SOAP )的防火墻友好協(xié)議,允許來(lái)自不同供應(yīng)商的硬件和操作系統(tǒng)進(jìn)行互操作

          官網(wǎng):

          https://docs.microsoft.com/en-us/windows/win32/winrm/portal

          1. 被控端 windows

          這里以 Windows 10 系統(tǒng)機(jī)器為例

          具體操作步驟如下:

          1-1?啟動(dòng) winrm 服務(wù)

          以管理員權(quán)限打開(kāi) CMD 命令窗口,輸入下面命令啟動(dòng) winrm 服務(wù)

          #?啟動(dòng)winrm服務(wù)
          winrm?quickconfig?-q

          如果運(yùn)行報(bào)錯(cuò),提示網(wǎng)絡(luò)類(lèi)型設(shè)置異常

          可以快捷鍵 win+i 進(jìn)入到網(wǎng)絡(luò)和 Internet,更改網(wǎng)絡(luò)配置文件,由公用切換為專(zhuān)用

          1-2? 檢查 winrm 服務(wù)監(jiān)聽(tīng)狀態(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?=?**

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

          通過(guò)以下命令可以查看 winrm 全部配置信息、client 客戶(hù)端配置信息、service 服務(wù)端配置信息

          #?全部
          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 后,我們通過(guò)通過(guò)步驟 1-3 查看配置文件,確保配置文件已生效

          #?配置winrm?service
          winrm?set?winrm/config/service?@{AllowUnencrypted="true"}

          winrm?set?winrm/config/service/auth?@{Basic="true"}

          2. 控制端

          在控制端,比如:Mac OSX、Linux,我們只需要安裝「?pywinrm?」依賴(lài)包即可

          #?控制端安裝依賴(lài)包
          pip3?install?pywinrm

          3. 實(shí)戰(zhàn)一下

          做為以上準(zhǔn)備后,我們就可以編寫(xiě)代碼對(duì) Windows 進(jìn)行控制了

          首先,我們需要?ip 地址、端口號(hào)、用戶(hù)名、密碼連接 Windows 被控端

          #?連接windows
          import?winrm

          ...
          # ip地址:端口號(hào)
          #?winrm?server端口號(hào)
          # auth:用戶(hù)名和密碼
          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)

          4. 總結(jié)

          除了可以遠(yuǎn)程查看 Windows 的文件外,還可以執(zhí)行 bat 批處理文件,又或者是模擬命令行輸入,根據(jù)返回值進(jìn)行其他騷操作

          我已經(jīng)將文中全部代碼上傳到后臺(tái),回復(fù)關(guān)鍵字「 winrm 」獲取完整源碼

          如果你覺(jué)得文章還不錯(cuò),請(qǐng)大家?點(diǎn)贊、分享、留言?下,因?yàn)檫@將是我持續(xù)輸出更多優(yōu)質(zhì)文章的最強(qiáng)動(dòng)力!

          往期推薦
          1、神器!竟能把圖片視頻無(wú)損清晰放大N倍!
          2、Python 字符串深度總結(jié)
          3、瀏覽器可以運(yùn)行 Python 代碼了,Python 也許會(huì)變成前后端通吃的語(yǔ)言
          4、Python 你可能從未聽(tīng)說(shuō)過(guò)的5種隱藏技巧
          5、用Python寫(xiě)個(gè)魂斗羅
          點(diǎn)擊關(guān)注公眾號(hào),閱讀更多精彩內(nèi)容
          瀏覽 33
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色婷婷免费在线视频 | 台湾无码在线观看 | 91人妻人人澡人人爽精品萌萝社 | 中文字幕无码A | 777婷婷天堂综合区色吧 |