#??一??Python連接win方案介紹
>遠程操作Win機器有如下兩種方式:
>
>方式一:使用WinRM(Windows Remote Management)windows遠程管理
>
>方式二:服務(wù)器上搭建SSH sever,通過ssh遠程連接,python有個專門ssh模塊
>
>下面我們使用如下兩種方式操作
# 二 使用WinRM操作
## 2.1 WinRM(Windows Remote Management)介紹
>WinRM(Windows Remote Management)windows遠程管理,這個是基于powershell的功能,一個形象的類比就是ssh之于linux。這些年windows在server端上也極力向linux看齊,有興趣的可以去了解下Windows Server Version 1709,就是一個只有Server Core,沒有GUI的windows,Server Core和普通的帶GUI圖形界面的Windows Server 的主要區(qū)別如下:
>
>-1 資源管理器沒有了。我們熟悉的Windows Explorer,無法出現(xiàn)在Server Core里。
>-2 所有依賴MMC的控制臺界面沒有了。也就是說運行*.msc將不會工作。例如:我們無法通過運行devmgmt.msc打開設(shè)備管理器了。
>-3 除了區(qū)域和語言及時間,其他的控制面板選項也沒有了。
>-4 比較”著名”的IE也沒有了
>
>根據(jù)微軟的說法:它可以提供強大的優(yōu)勢,如硬件要求較低、攻擊面更小并且減小了更新需求。回到當(dāng)前的主題,說下我的需求,之所以開WINRM,是內(nèi)部一臺主機跑有內(nèi)部系統(tǒng),系統(tǒng)運行在hyper-v上面的虛機里,平時出于安全是關(guān)閉的,只有在臨時用的時候開下。目前想做的就是想一鍵搞定虛擬的關(guān)閉和開啟
## 2.2 win機器開啟WinRM(被管理的win機器)
### 2.2.1 開啟WinRM
>1 查看winRM服務(wù)狀態(tài),默認都是未啟動狀態(tài)
>
>
> winrm e winrm/config/listener
>
>2 winRM服務(wù)啟動
>
>
>winrm quickconfig
>
>3 為winrm service 配置auth
>
>
>winrm set winrm/config/service/auth????"@{Basic="true"}"
>
> 4 為winrm service 配置加密方式為允許非加密(這個不配置,遠程連接會出錯)
>
>winrm set winrm/config/service????"@{AllowUnencrypted="true"}"
>
>5 查看winrm配置
>
> winrm get winrm/config
>
>我的配置如下:
### 2.2.2 注意一:更改網(wǎng)絡(luò)為專用網(wǎng)絡(luò)
### 2.2.3 注意二:遠程連接的用戶要有密碼
> 比如我的
>
> 用戶:liuqingzheng
>
> 密碼:123
## 2.3 使用Python遠程連接執(zhí)行命令
### 2.3.1 安裝winrm模塊
>pip3 install winrm
>
>或者:
>
>pip3 install pywinrm
>
>他倆是一樣的,git地址為:https://github.com/diyan/pywinrm/
### 2.3.2 遠程執(zhí)行命令
```python
import winrm
# 居然用http連接,那就是起了一個web服務(wù)唄
session = winrm.Session('http://10.0.0.5:5985/wsman', auth=('liuqingzheng', '123'))
res = session.run_cmd('dir')
print(res.status_code)
print(res.std_out.decode('gbk'))
```
### 2.3.3 如果報錯如下
> the specified credentials were rejected by the server
>
> 原因就是密碼錯誤,
>
> 沒有設(shè)置密碼,
>
> 再就是winrm set winrm/config/service????"@{AllowUnencrypted="true"}"沒有設(shè)置
# 三 使用SSH sever方式
## 3.1 先在服務(wù)器上搭建SSH sever
### 3.1.1 下載
用的是freesshd,下載鏈接:[freeSSHd.exe](http://www.freesshd.com/?ctt=download)
下載完,一路下一步,安裝即可
### 3.1.2 配置
**用戶配置**開啟ssh必須要配置用戶
依次選擇--->Users--->Add--->添加一個lqz用戶,選用用戶密碼方式(還有公鑰私鑰方式)--->選中可以使用的功能--->確定
**端口,地址配置**
我改成了88端口,我的22端口被占用了,監(jiān)聽 0.0.0.0地址
**啟動**看到綠色,就是啟動成功了
## 3.2 使用python遠程操作執(zhí)行命令
```python
import paramiko
import re
#創(chuàng)建SSH對象
ssh = paramiko.SSHClient()
# 允許連接不在know_hosts文件中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
# 連接服務(wù)器
ssh.connect(hostname='10.0.0.5',port=88,username='lqz',password='123')
# 執(zhí)行命令
stdin,stdout,stderr = ssh.exec_command('ipconfig')
# 獲取命令結(jié)果
result = stdout.read().decode('gbk')
print(result)
```
## 3.3 注意一個大坑
**一定要以管理員身份運行reeSSHd**
以上內(nèi)容部分摘自互聯(lián)網(wǎng),感謝原作者