广告位联系
返回顶部
分享到

Python远程控制Windows服务器的方法

python 来源:互联网 作者:佚名 发布时间:2024-07-14 09:05:22 人浏览
摘要

开篇小故事 故事要从一只猫说起。 小明是一名 Python 开发者,他有一只聪明的小猫咪叫皮皮。有一天,小明正在服务器上部署项目,突然想起忘记喂皮皮了。但他又不想离开电脑去喂猫,于是

开篇小故事

故事要从一只猫说起。
小明是一名 Python 开发者,他有一只聪明的小猫咪叫“皮皮”。有一天,小明正在服务器上部署项目,突然想起忘记喂皮皮了。但他又不想离开电脑去喂猫,于是他突发奇想:如果能远程控制家里的自动喂食器该多好!

于是,他决定用 Python 远程控制家里的 Windows 服务器,连接到自动喂食器上。经过一番努力,小明不仅成功实现了这个目标,还发现了 Python 远程控制 Windows 服务器的无限可能。

准备工作

在正式开始之前,我们需要做一些准备工作。首先,确保你的 Windows 服务器已经开启远程桌面服务(RDP)。接着,我们需要安装一些必要的库:

1

pip install pywinrm paramiko pypsexec

这些库分别用于不同的远程控制方法,我们会在后续的示例中逐一介绍它们。

二、编程示例

示例一:使用 PyWinRM 远程执行命令

PyWinRM 是一个功能强大的库,可以让我们通过 WinRM(Windows 远程管理)协议来远程执行命令。先来看看如何用它在远程服务器上执行一条简单的命令:

1

2

3

4

5

6

7

8

9

10

import winrm

 

# 连接到远程Windows服务器

session = winrm.Session('http://<你的服务器IP>:5985/wsman', auth=('用户名', '密码'))

 

# 执行命令

result = session.run_cmd('ipconfig')

 

# 打印输出

print(result.std_out.decode('utf-8'))

这个示例非常简单,实际上却非常强大。我们通过 winrm.Session 建立了一个与远程服务器的会话,然后使用 run_cmd 方法在服务器上执行了 ipconfig 命令,并打印了输出结果。你可以尝试更换其他命令,看看结果如何。

Github 项目地址:

https://github.com/diyan/pywinrm

示例二:使用 Paramiko 进行 SSH 连接

虽然 Windows 默认没有 SSH 服务,但你可以安装 OpenSSH Server 来实现 SSH 连接。安装完成后,我们就可以用 Paramiko 来实现远程控制了:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

import paramiko

 

# 创建SSH客户端

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

 

# 连接到远程服务器

client.connect('你的服务器IP', username='用户名', password='密码')

 

# 执行命令

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

 

# 打印输出

print(stdout.read().decode())

 

# 关闭连接

client.close()

通过这个示例,我们可以看到使用 Paramiko 进行 SSH 连接也是非常简单的。只需创建一个 SSH 客户端,连接到远程服务器,然后执行命令并获取输出。这个方法尤其适用于那些已经习惯使用 SSH 的开发者。

Github 项目地址:

https://github.com/paramiko/paramiko

示例三:使用 PsExec 执行高级任务

PsExec 是一个命令行工具,可以让你在远程计算机上执行进程,并与它们交互。通过 pypsexec 库,我们可以在 Python 中方便地使用 PsExec:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

from pypsexec.client import Client

 

# 创建PsExec客户端

client = Client('你的服务器IP', username='用户名', password='密码')

 

# 连接到远程服务器

client.connect()

 

# 开启服务

client.create_service()

 

# 执行命令

stdout, stderr, rc = client.run_executable('cmd.exe', arguments='/c ipconfig')

 

# 打印输出

print(stdout.decode())

 

# 关闭服务并断开连接

client.remove_service()

client.disconnect()

这个示例展示了如何通过 PsExec 在远程服务器上执行命令,并获取输出结果。PsExec 不仅可以执行简单命令,还可以运行复杂的脚本和应用程序。

Github 项目地址:

1

https://github.com/jborean93/pypsexec

示例四:定时任务与自动化

如果你希望定期在远程服务器上执行某些任务,比如清理日志文件或备份数据,你可以结合 Python 的 sched 模块和前面的远程执行方法,实现自动化脚本:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

import time

import sched

import winrm

 

# 创建调度器

scheduler = sched.scheduler(time.time, time.sleep)

 

# 定义任务

def clear_logs():

    session = winrm.Session('http://<你的服务器IP>:5985/wsman', auth=('用户名', '密码'))

    result = session.run_cmd('del C:\\logs\\*.log')

    print(result.std_out.decode('utf-8'))

 

# 安排任务每隔一天执行一次

scheduler.enter(86400, 1, clear_logs)

 

# 开始运行调度器

scheduler.run()

这个示例展示了如何使用调度器来安排定时任务。我们定义了一个 clear_logs 函数,在远程服务器上删除日志文件,并使用调度器每隔一天执行一次这个任务。

示例五:文件传输与管理

远程控制不仅仅是执行命令,文件传输也是非常重要的一部分。我们可以使用 Paramiko 来实现文件的上传和下载:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

import paramiko

from scp import SCPClient

 

# 创建SSH客户端

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

 

# 连接到远程服务器

client.connect('你的服务器IP', username='用户名', password='密码')

 

# 创建SCP客户端

scp = SCPClient(client.get_transport())

 

# 上传文件

scp.put('local_file.txt', 'remote_file.txt')

 

# 下载文件

scp.get('remote_file.txt', 'local_file.txt')

 

# 关闭连接

scp.close()

client.close()

通过这个示例,我们可以看到使用 SCP(安全复制协议)进行文件传输是非常方便的。我们可以将本地文件上传到远程服务器,也可以将远程文件下载到本地。

示例六:图形界面与远程桌面控制

如果你希望用 Python 实现远程桌面的功能,可以使用 pyautogui 库来控制远程服务器的图形界面:

1

2

3

4

5

6

7

8

9

10

11

12

import pyautogui

 

# 模拟按键

pyautogui.typewrite('Hello World!')

pyautogui.press('enter')

 

# 模拟鼠标点击

pyautogui.click(100, 100)

 

# 截屏

screenshot = pyautogui.screenshot()

screenshot.save('screenshot.png')

这个示例展示了如何使用 PyAutoGUI 模拟键盘和鼠标操作,以及截屏。虽然这个方法并不是真正的远程桌面控制,但它可以用来实现一些简单的图形界面操作。

三、总结

通过以上几个示例,我们可以看到 Python 远程控制 Windows 服务器的方法是多种多样的。从简单的命令执行到复杂的图形界面操作,无论你的需求是什么,都可以找到合适的工具和方法。

希望这篇文章能给你带来灵感,让你在 Python 的世界里找到更多有趣的应用场景。无论是实现自动化任务,还是解决日常问题,Python 总能给你带来惊喜。

最后,回到我们的故事。小明通过 Python 成功控制了家里的自动喂食器,不仅解决了皮皮的喂食问题,还让他在编程的道路上迈出了重要的一步。或许在不久的将来,他会用 Python 实现更多的奇思妙想。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • python执行shell并获取结果
    在Python中执行Shell命令并获取其结果,通常可以使用subprocess模块。这个模块允许我们启动新的进程,连接到它们的输入/输出/错误管道,并获
  • Python利用pandas处理CSV文件的用法

    Python利用pandas处理CSV文件的用法
    一、pandas简介 pandas是一个第三方数据分析库,其集成了大量的数据分析工具,可以方便的处理和分析各类数据。这是一个第三方库,使用下
  • Python远程控制Windows服务器的方法
    开篇小故事 故事要从一只猫说起。 小明是一名 Python 开发者,他有一只聪明的小猫咪叫皮皮。有一天,小明正在服务器上部署项目,突然想
  • 使用python生成各种常见条形码及二维码

    使用python生成各种常见条形码及二维码
    条形码和二维码是现代信息交换和数据存储的重要工具,它们将信息以图形的形式编码,便于机器识别和数据处理,被广泛应用于物流、零
  • python的virtualenv虚拟环境常见问题和命令
    常用的venv命令 在Python中,venv是一个用于创建和管理虚拟环境的模块。虚拟环境可以帮助你在项目之间隔离不同的Python包和依赖关系。以下
  • Python中的变量和数据类型使用方式
    变量和数据类型是Python中非常基础的概念,下面是详细介绍: 1. 变量 变量是用于存储数据的容器,可以在程序中多次使用。在Python中,变量
  • Python遍历字典删除元素的五种方法
    在Python中,直接遍历字典并在遍历过程中删除元素可能会导致运行时错误,因为字典在迭代时并不支持修改其大小。但是,我们可以通过一
  • python-redis-lock实现锁自动续期的源码逻辑
    python-redis-lock简介 python-redis-lock是一个python的第三方库,基于Redis,封装了分布式锁的逻辑,提供了更高级的API来简化锁的获取、保持和释放
  • Python引用不确定的函数
    在Python中,引用不确定的函数通常意味着我们可能在运行时才知道要调用哪个函数,或者我们可能想根据某些条件动态地选择不同的函数来
  • 提升Python Web应用性能的10个关键技巧
    提升Python Web应用性能的10个关键技巧 Python作为一种强大的编程语言,在Web开发领域也有着广泛的应用。通过结合Python的灵活性和一些高性能
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计