溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python怎么遠(yuǎn)程控制Windows服務(wù)器

發(fā)布時(shí)間:2022-05-20 09:11:35 來(lái)源:億速云 閱讀:180 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(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)地址

    1. 被控端 windows

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

    具體操作步驟如下:

    啟動(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ò)類型設(shè)置異常

    Python怎么遠(yuǎn)程控制Windows服務(wù)器

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

    Python怎么遠(yuǎn)程控制Windows服務(wù)器

    檢查 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 = **

    查看 winrm 配置信息(可選)

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

    # 全部
    winrm get winrm/config
    
    # Client
    winrm get winrm/config/client
    
    # Service
    winrm get winrm/config/service

    配置 winrm client

    # 配置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 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 」依賴包即可

    # 控制端安裝依賴包
    pip3 install pywinrm

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

    做為以上準(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í)!

    向AI問(wèn)一下細(xì)節(jié)

    免責(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)容。

    AI