跟老刘学python

新猿教育老刘带你学习python,学完即可就业。

新猿0基础python教程 Python远程操作Windows服务器

#  一  Python连接win方案介绍

>远程操作Win机器有如下两种方式:

>

>方式一:使用WinRM(Windows Remote Management)windows远程管理

>

>方式二:服务器上搭建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 的主要区别如下:

>

>-1 资源管理器没有了。我们熟悉的Windows Explorer,无法出现在Server Core里。

>-2 所有依赖MMC的控制台界面没有了。也就是说运行*.msc将不会工作。例如:我们无法通过运行devmgmt.msc打开设备管理器了。

>-3 除了区域和语言及时间,其他的控制面板选项也没有了。

>-4 比较”著名”的IE也没有了

>

>根据微软的说法:它可以提供强大的优势,如硬件要求较低、攻击面更小并且减小了更新需求。回到当前的主题,说下我的需求,之所以开WINRM,是内部一台主机跑有内部系统,系统运行在hyper-v上面的虚机里,平时出于安全是关闭的,只有在临时用的时候开下。目前想做的就是想一键搞定虚拟的关闭和开启

## 2.2 win机器开启WinRM(被管理的win机器)

### 2.2.1 开启WinRM

>1 查看winRM服务状态,默认都是未启动状态

>

>

> winrm e winrm/config/listener

>

>2 winRM服务启动

>

>

>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 注意一:更改网络为专用网络

### 2.2.3 注意二:远程连接的用户要有密码

> 比如我的

>

> 用户:liuqingzheng

>

> 密码:123

## 2.3 使用Python远程连接执行命令

### 2.3.1 安装winrm模块

>pip3 install winrm

>

>或者:

>

>pip3 install pywinrm

>

>他俩是一样的,git地址为:https://github.com/diyan/pywinrm/

### 2.3.2 远程执行命令

```python

import winrm

# 居然用http连接,那就是起了一个web服务呗

session = winrm.Session('https://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

>

> 原因就是密码错误,

>

> 没有设置密码,

>

> 再就是winrm set winrm/config/service    "@{AllowUnencrypted="true"}"没有设置

# 三 使用SSH sever方式

## 3.1 先在服务器上搭建SSH sever

### 3.1.1 下载

用的是freesshd,下载链接:[freeSSHd.exe](https://www.freesshd.com/?ctt=download)

下载完,一路下一步,安装即可

### 3.1.2 配置

**用户配置**开启ssh必须要配置用户

依次选择--->Users--->Add--->添加一个lqz用户,选用用户密码方式(还有公钥私钥方式)--->选中可以使用的功能--->确定

**端口,地址配置**

我改成了88端口,我的22端口被占用了,监听 0.0.0.0地址

**启动**看到绿色,就是启动成功了

## 3.2 使用python远程操作执行命令

```python

import paramiko

import re

#创建SSH对象

ssh = paramiko.SSHClient()

# 允许连接不在know_hosts文件中的主机

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)

# 连接服务器

ssh.connect(hostname='10.0.0.5',port=88,username='lqz',password='123')

# 执行命令

stdin,stdout,stderr = ssh.exec_command('ipconfig')

# 获取命令结果

result = stdout.read().decode('gbk')

print(result)

```

## 3.3 注意一个大坑

**一定要以管理员身份运行reeSSHd**

以上内容部分摘自互联网,感谢原作者


评论