Linux透過計劃任務驅動Windows伺服器執行命令

济南小老虎發表於2024-05-27

Linux透過計劃任務驅動Windows伺服器


背景

有很多需要Windows上面進行測試的場景
之前只是使用 Windows的計劃任務進行處理
但是跟自己的主控臺不一致. 
所以還事項能夠透過Linux的計劃任務進行管理
這樣只有一個控制檯操作簡單很多.

思路

透過 winrm 的python元件進行相關的動作處理 
然後使用linux的crontab 計劃任務進行管理處理

有的機器很簡單就可以實現
但是部分機器可能有bug後者是某些安全加固導致
環境總是無法調通
此時可能是玄學, 不一定一定能解決掉.

Linux的處理

python 需要安裝必備的元件
pywinrm
安裝後才能夠進行相關操作 
python和pip的安裝之前總結過,
此處不再贅述

Windows的處理

很多都是使用 命令列進行處理
但是我這邊總是報錯.
所以計劃cli和gui 都記錄一下
cli的方式
winrm quickconfig
判斷服務是否正常
winrm set winrm/config/service/auth    '@{Basic="true"}'
winrm set winrm/config/service  @{AllowUnencrypted="true"}

第一個是開啟基本認證.
第二個是允許可以不加密訪問

Windows GUI的處理

命令列輸入:
gpedit.msc 
然後依次開啟
計算機設定->管理模板->Windows元件->winrm
手工將 基礎密碼驗證和不加密改為啟用就可以了.

linux命令引數

import winrm

hostip = '10.110.xxx.xx'
username = 'Administrator'
password = 'xxxxxxxx'

session = winrm.Session('http://' + hostip + ':5985/wsman', auth=(username, password))

command = 'c:\somecmmand.cmd'

response = session.run_cmd(command)

print("STDOUT:\n{}".format(response.std_out.decode('gbk')))
print("STDERR:\n{}".format(response.std_err.decode('utf-8')))

呼叫命令

python  some.py 
就可以連線了.

相關文章