新猿0基礎(chǔ)python教程 Python遠程操作Windows服務(wù)器

#??一??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),感謝原作者

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容