【问题标题】:ps tool using python使用python的ps工具
【发布时间】:2018-04-11 12:37:48
【问题描述】:

我正在尝试在远程服务器中运行批处理脚本。所以我正在编写这样的代码。

import subprocess
subprocess.call("psExec \\\\11.456.787.8 -u {} -p {} C:\\basicfolder\\".format('user','pwd')+'run_1523448627.15.bat',shell=True)

错误是

PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

Couldn't access 11.456.787.8:
Access is denied.
5

但是我得到了像 Access denied 这样的错误。当我手动尝试 psexec 命令时,它正在连接和执行。但是在 python 中它会抛出错误

【问题讨论】:

  • ipaddress 不是 IP 地址。这是 字符串 ipaddress...
  • 我正在提供服务器的 IP 地址,正在尝试访问
  • 不,您实际上是在传递psExec \\ipaddress ...。而Couldn't access ipaddress: 错误消息就是证明。
  • 代替 ipaddress im 给出 11.456.787.8 并且错误也无法访问 11.456.787.8:
  • 你能粘贴一个在 python 之外工作的命令行吗?

标签: python python-2.7 subprocess


【解决方案1】:

我怀疑用户名或密码中未显示的内容没有被命令行正确转义。您应该使用实际参数重写您的命令:

import subprocess
username = "foo"
password = "whatever"
subprocess.call(["psExec","/accepteula",r"\\11.456.787.8","-u",username,"-p",password,"whateverfile.bat'])

所以:

  • 将命令拆分为参数
  • 删除shell=True
  • 添加 /accepteula 不再弹出新配置文件(奖励)

【讨论】:

  • 仍然是同样的错误我在添加到代码之前在 python 命令行中尝试脚本
猜你喜欢
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 2022-10-21
  • 2019-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多