当前位置: 首页 > news >正文

python 提交 命令到远程windows服务器并获取作业进程id

在Python中,你可以使用多种方式来提交命令到远程Windows服务器并获取作业进程ID。以下是几种常见的方法:

方法1:使用paramiko(SSH库)
paramiko是一个用于进行SSHv2的Python库,可以用来连接到远程服务器并执行命令。

首先,你需要安装paramiko:

pip install paramiko

然后,你可以使用以下代码连接到远程Windows服务器并执行命令:

import paramiko# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接服务器
ssh.connect(hostname='your_server_ip', port=22, username='your_username', password='your_password')# 执行命令并获取输出和进程ID(例如使用Windows的tasklist命令来获取PID)
stdin, stdout, stderr = ssh.exec_command('tasklist /FI "IMAGENAME eq cmd.exe" /FO CSV')
output = stdout.read().decode()
print(output)# 关闭连接
ssh.close()

方法2:使用pypsexec(适用于执行PowerShell命令)
如果你需要执行PowerShell命令或需要更高级的Windows管理任务,可以使用pypsexec。首先,安装pypsexec:

pip install pypsexec

然后,你可以使用以下代码:

from pypsexec import Service, EXECSVC_PORT, EXECSVC_PIPE_NAME, EXECSVC_PIPE_TIMEOUT, EXECSVC_PIPE_BUFSIZE, EXECSVC_PIPE_MAXINSTANCES, EXECSVC_PIPE_FIRSTINSTANCE, EXECSVC_PIPE_ACCESS, EXECSVC_PIPE_SHAREMODE, EXECSVC_PIPE_OPTIONS, EXECSVC_PIPE_MODE, EXECSVC_PIPE_SECURITYATTRIBUTES, EXECSVC_PIPE_CREATIONDISPOSITION, EXECSVC_PIPE_SECURITYQUALITYOFSERVICE, EXECSVC_PIPE_CREATIONDISPOSITION, EXECSVC_PIPE_SECURITYQUALITYOFSERVICE, pypsexec, EXECSVC_PIPE_SECURITYATTRIBUTES, EXECSVC_PIPE_SECURITYQUALITYOFSERVICE, pypsexec.psexec
from pypsexec import pypsexec as psexec
import win32con# 创建远程执行服务对象
service = Service(hostname='your_server', username='your_username', password='your_password')
service.connect()# 执行命令并获取输出和进程ID(例如使用PowerShell获取特定进程的PID)
result = service.execute('Get-WmiObject Win32_Process | Where-Object {$_.Name -eq "notepad.exe"} | Select-Object ProcessId')
print(result)# 关闭连接
service.disconnect()

方法3:使用winrm库(适用于WS-Management协议)
winrm是另一种与Windows远程管理相关的Python库,可以用来执行远程PowerShell命令。首先,安装winrm:

pip install winrm

然后,你可以使用以下代码:

from winrm.protocol import Protocol
import xml.etree.ElementTree as ET  # 用于解析WS-Man返回的XML输出# 创建WinRM会话对象
session = Protocol(endpoint='http://your_server:5985/wsman',  # 可能需要HTTPS和端口5986,取决于你的配置和证书情况transport='ntlm',  # 或者 'kerberos',取决于你的认证方式username='your_username', password='your_password'  # 明文密码或通过Kerberos认证时不需要提供密码(但需要配置Kerberos认证)
)  # 对于Kerberos认证,可能需要额外的配置如realm等。 # session.transport.set_kerberos('<your-kerberos-principal>', '<your-keytab-path>')  # Kerberos配置示例。 注释掉上面的password行。 # session.transport.set_kerberos_realm('<your-kerberos-realm>')  # 如果需要设置Kerberos领域。 注释掉上面的password行。 # session.transport.set_kerberos_config('<path-to-krb5.conf>')  #  如果需要指定Kerberos配置文件路径。 注释掉上面的password行

相关文章:

  • RabbitMQ Topic RPC
  • MS16-075 漏洞 复现过程
  • 小区服务|基于Java+vue的小区服务管理系统(源码+数据库+文档)
  • Java NIO(New I/O)
  • 【实验增效】5 μL/Test 高浓度液体试剂!Elabscience PE Anti-Mouse Ly6G抗体 简化流式细胞术流程
  • 连续空间链式推理与SoftCoT++介绍
  • 邂逅Node.js
  • IEEE 802.1Q协议下封装的VLAN数据帧格式
  • 如何管理和优化内核参数
  • CNBC专访CertiK联创顾荣辉:从形式化验证到AI赋能,持续拓展Web3.0信任边界
  • matlab编写的BM3D图像去噪方法
  • 深入浅出IIC协议 - 从总线原理到FPGA实战开发 -- 第三篇:Verilog实现I2C Master核
  • 【蓝桥杯真题精讲】第 16 届 Python A 组(省赛)
  • 网络安全之网络攻击spring临时文件利用
  • AR 开启昆虫学习新视界,解锁奇妙微观宇宙
  • 流复备机断档处理
  • 当前主流的传输技术(如OTN、IP-RAN、FlexE等)
  • 能管理MySQL、Oracle、达梦数据库的桌面管理软件开源了
  • 【神经网络与深度学习】扩散模型之原理解释
  • 第 84 场周赛:翻转图像、字符串中的查找与替换、图像重叠、树中距离之和
  • 河北省纪委原副书记、省监委原副主任陈玉祥一审获刑十二年
  • 济南一医院救护车未执行紧急任务时违规鸣笛
  • 国家话剧院上海演出季7月重启,《大宅门》等5部大戏来沪
  • 中纪报:强化监督推动过紧日子要求落到实处
  • 李公明 | 一周画记:德里达哲学还是接地气的
  • 不赚“快钱”的佳沛:蒋时杰解密新西兰国果如何在中国“慢养”出43亿生意