前段時間,要給一個分布式調度系統寫一個運維腳本,這個分布式調度系統部分子系統部署在window服務器上,這個時候就要想辦法用Linux遠程來連接window服務器,並執行cmd命令。下面是我的解決方法:
1、在Linux服務器上的處理
首先需要在Linux中安裝python,並且安裝pywinm庫。安裝之前首先需要安裝isodate和xmlwitch兩個依賴包,在安裝pywinrm。下面是安裝時用到的命令。
安裝依賴包
pip install isodate
pip install xmlwitch
安裝pywinrm
pip install pywinrm
2、在window服務器上的操作
在window服務器上,要打開winrm服務。下面是操作流程:
第一步:用管理員權限打開windows powershell
第二步:首先查看winrm service的運行狀態,默認情況是沒有開啟的;執行命令為空是沒有啟動。
winrm enumerate winrm/config/listener
第三步:對winrm service進行配置
winrm quickconfig
第四步:為winrm service 配置auth:
winrm set winrm/config/service/auth @{Basic="true"}
第五步:為winrm service 配置加密方式為允許非加密:
winrm set winrm/config/service @{AllowUnencrypted="true"}
3、下面是執行cmd命令的源碼
import winrm win = winrm.Session('http://192.168.0.19:5985/wsman',auth=('wt','635870838')) r = win.run_cmd('ipconfig') #執行cmd命令 print(r.std_out.decode()) # 打印獲取到的信息 print(r.std_err) #打印錯誤信息