window 服務需要設定winRM
可以參考:Linux伺服器遠端連線window伺服器並執行cmd命令 執行時候稍微有點錯誤,按下面為準
winRM 使用埠:http 5985 https 5986
1、在Linux伺服器上的處理
首先需要在Linux中安裝python,並且安裝pywinm庫。安裝之前首先需要安裝isodate和xmlwitch兩個依賴包,再安裝pywinrm。下面是安裝時用到的命令。
 安裝依賴包
pip install isodate
pip install xmlwitch
pip install pywinrm
2、在window伺服器上的操作
1)、用管理員許可權開啟windows powershell
2)、首先檢視winrm service的執行狀態,預設情況是沒有開啟的;執行命令為空是沒有啟動。
winrm enumerate winrm/config/listener
// 快速在服務端執行winrm
winrm quickconfig
// 檢視winrm的執行情況
winrm e winrm/config/listener
// 檢視winrm的配置。 這個過程中網路不能是公網的,會報錯,根據提示自己搜尋改動一下就好
winrm get winrm/config
// 將service中的allowUnencrypted設定為true,允許未加密的通訊
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
// 將client中的基本身份驗證設定為true,允許
winrm set winrm/config/client/auth '@{Basic="true"}'
// 將client中的allowUnencrypted設定為true,允許未加密的通訊
winrm set winrm/config/client '@{AllowUnencrypted="true"}'
// 設定主機信任的客戶端地址,這裡可以填你所在的客戶端機器的ip或者主機名
winrm set winrm/config/client '@{TrustedHosts="127.0.0.1, localhost, 192.168.3.109"}'
3、下面是 python 執行cmd命令的原始碼
import winrm
win = winrm.Session('http://192.168.3.109:5985/wsman',auth=('think','123456')) # 賬號密碼改成對應的
r = win.run_cmd(
'C: &'
'cd C:/Users/think/Desktop &'
'ls'
) # 執行cmd命令
print(r.std_out.decode()) # 列印獲取到的資訊
print(r.std_err) # 列印錯誤資訊
複製程式碼
print('hello 測試結束')