gpt4 book ai didi

python - 使用python和pywinrm从linux通过ssl连接到powershell

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:39 27 4
gpt4 key购买 nike

我正在尝试使用来自 docker 容器的 pywinrm 让 python 远程 powershell 工作但是撞到了连接远程主机的墙我从文档中拼凑出来的内容和我对 python 的基本理解,希望有人能看到我哪里出错了

我检查过的东西

  • 我检查过我可以使用 Enter-PSSession -ComputerName x.x.x.x -UseSSL -Credential $creds;
  • 通过另一台 Windows 机器连接
  • 我试过同时使用 python3 和 python2,但都出现了同样的错误
  • 我试过这个例子 here即使我从 Windows 机器安装我的自签名证书(使用接受的答案 here 添加证书),这也会让我在帖子中出现同样的错误,没有它并不令人惊讶,因为没有 server_cert_validation='ignore'参数,但有点奇怪
  • 我已经尝试使用 base64 编码密码,因为文档提到它需要它,但从未在任何示例中使用它
  • 我试过将领域/机器名称添加到用户名(顺便说一句,不是在域上)

以下是 python3 尝试的详细信息。

版本

python3 --version
Python 3.4.2

pip --version
pip 9.0.1 from /usr/local/lib/python3.4/dist-packages (python 3.4)

pip show pywinrm
Name: pywinrm
Version: 0.2.2
Summary: Python library for Windows Remote Management
Home-page: http://github.com/diyan/pywinrm/
Author: Alexey Diyan
Author-email: alexey.diyan@gmail.com
License: MIT license
Location: /usr/local/lib/python3.4/dist-packages
Requires: six, xmltodict, requests, requests-ntlm

Python 代码 (open_winrm.py)

#!/usr/bin/env python3

import winrm
import base64

p = winrm.protocol.Protocol(
endpoint='https://<some_ip_here>:5986/wsman',
transport='ssl',
username='<some_username_here>',
password='<some_password_here>',
server_cert_validation='ignore')

shell_id = p.open_shell()
command_id = p.run_command(shell_id, 'ipconfig', ['/all'])
std_out, std_err, status_code = p.get_command_output(shell_id, command_id)
p.cleanup_command(shell_id, command_id)
p.close_shell(shell_id)

结果

File "./open_winrm.py", line 13, in <module>
shell_id = p.open_shell()
File "/usr/local/lib/python3.4/dist-packages/winrm/protocol.py", line 132, in open_shell
res = self.send_message(xmltodict.unparse(req))
File "/usr/local/lib/python3.4/dist-packages/winrm/protocol.py", line 207, in send_message
return self.transport.send_message(message)
File "/usr/local/lib/python3.4/dist-packages/winrm/transport.py", line 190, in send_message
raise InvalidCredentialsError("the specified credentials were rejected by the server")
winrm.exceptions.InvalidCredentialsError: the specified credentials were rejected by the server

码头文件

FROM node:7.7.3

ENV DEBCONF_NONINTERACTIVE_SEEN="true" \
DEBIAN_FRONTEND="noninteractive"

RUN apt-get update && \
apt-get -y upgrade && \
apt-get -y autoremove && \
apt-get clean

RUN apt-get install -y etherwake locales locales-all python3 && \
curl https://bootstrap.pypa.io/get-pip.py | python3 && \
python3 -m pip install pywinrm

最佳答案

最后我放弃了 pywinrm,因为我永远无法连接它并使用 ruby​​ 和 winrm gem第一次尝试就成功了

关于python - 使用python和pywinrm从linux通过ssl连接到powershell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43476272/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com