1

我负责管理一个包含多个 Rig 的实验室,并且我正在开发一个用于运行实验的自动化流程。加载实验的触发器是使用特定的用户名。我有一个流程图,可以识别登录时的行为,这样当一个钻机被预订到特定的用户名并且没有其他人登录时,它就会接管并在夜间运行实验等。

我需要能够使用 python 运行批处理文件来注销用户(除非有我可以使用的 python 命令)。我已经编写了一个执行此操作的批处理文件(LogOffIP.bat)。如果我从命令提示符运行批处理文件,它工作正常,用户(由远程 PC 上的会话 ID 选择)被注销,一切都很好。

我有一个 python 脚本,它使用相同的参数调用 bat 文件,命令提示符弹出并运行,但我得到不同的响应,例如“'logoff' 不被识别为内部或外部命令”,quser 也是如此。

请在下面查看我的代码并帮助我找到 python 解决方案。谢谢...

注销IP.bat:

@echo off
echo Logging off Rig %1
echo at IP address %2
echo using session ID %3
echo.
echo.
logoff %3 /server:%2
echo Done...
echo
quser /server:%2
pause
rem exit

从蟒蛇...

我努力了:

import os os.system(r"path\LogOffIP.bat G 100.100.100.100 12")

这使“注销”无法识别。

我努力了:

import subprocess
answer = subprocess.call([path\LogOffIP.bat, G, 100.100.100.100, 1'])

this gives WindowsError: [Error 2] The system cannot find the file specified in python.

我努力了: answer = subprocess.Popen([r'path','LogOffIP.bat','G 100.100.100.100 1'])

this gives WindowsError: [Error 5] Access is denied in python

我在示例中使用了伪造的 IP 地址来保护真实的 IP 地址。

我预计会有短暂的延迟,并且从命令提示符运行批处理文件时可以看到用户已注销。os.system 似乎并不支持所有的 dos 命令。

4

0 回答 0