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

使用winRM远程访问Windows系统,并执行指定命令,或调用执行指定bat文件

一、安装依赖

用阿里镜像源下载,这里下载依赖时为pywinrm 而不是winrm

 pip install pywinrm -i https://mirrors.aliyun.com/pypi/simple/

二、代码实现

import winrm# from pywinrm import WinRMShell# 配置远程连接信息
remote_ip = "10.1.1.1"  # 替换为目标IP
username = "user"   # 管理员账号
password = "pwd"   # 密码
bat_path = r"D:\user\test_bat\test.bat"  # 远程主机上的BAT路径try:# 创建WinRM会话session = winrm.Session(remote_ip,auth=(username, password),transport="ntlm",server_cert_validation="ignore"  # 忽略证书验证(测试用))# 执行BAT脚本# command = f"cmd /c call {bat_path}"# result = session.run_ps(command)  # 使用PowerShell包装执行command = "cmd /c 'java -version 2>&1'"  # 将 stderr 重定向到 stdoutresult = session.run_ps(command)output = result.std_out.decode("gbk")print("Java版本信息:", output)# 输出结果print(f"Exit Code: {result.status_code}")print("Output:", result.std_out.decode("gbk"))  # Windows中文用GBK编码print("Error:", result.std_err.decode("gbk"))except Exception as e:print(f"远程执行失败: {str(e)}")

三、输出示例:

Exit Code: 0
Output: java version "1.8.0_341"
Java(TM) SE Runtime Environment (build 1.8.0_341-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)Error: Process finished with exit code 0

相关文章:

  • 【jzxxoj编程:4420: 寻找自我3】2022-1-30
  • 嵌入式开发学习日志(linux系统编程--文件读写函数)Day24
  • spdlog高性能日志库
  • c语言刷题之实际问题
  • HTML页面渲染过程
  • VMD查看蛋白质-配体的分子动力学模拟轨迹
  • Oracle如何解决LATCH:CACHE BUFFERS CHAINS
  • 阿里云服务器Ubuntu的git clone失败问题解决方案
  • 什么是防抖和节流?有什么区别?如何实现?
  • 新闻媒体发稿:社会实践返家乡主题如何选择
  • jvm对象压缩
  • 【工具变量】地级市健康城市试点政策数据集(2007-2024年)
  • web基础
  • 系统架构设计(十五):质量效用树
  • unipp === 状态管理 Pinia 使用
  • Mermaid 使用快速入门
  • MinerU可视化界面程序部署(Windows环境)
  • RSA加解密实战指南:Java与JavaScript实现详解 + 在线工具推荐
  • 探索付费社群的成功之道:生财与群响的深度解析
  • Pandas:Series和DataFrame的概念、常用属性和方法
  • 以色列“全面接管”加沙“雷声大雨点小”:援助政策引内讧,美欧失去耐心
  • 在深化教育科技人才一体发展上打头阵、当尖兵!陈吉宁调研复旦大学
  • 钱进已任外交部新闻司副司长
  • 两名游客刻划八达岭长城,被拘5日罚200元
  • 《中华人民共和国经济史(1949—1978年)》教材出版发行
  • 西藏普兰县公安局网安大队向自媒体人宣传网络安全知识