脚本无法读取密码
这个Python脚本是为了以更高的权限运行的,但不幸的是:
- 它还是会让我输入密码。
- 当我输入正确的密码时,它却不工作。
这是脚本1,它用更高的权限调用脚本2:
import os
import sys, subprocess, socket, string
import wmi, win32api, win32con
import win32com.shell.shell as sh
ASADMIN = '/user:DOMAIN\username'
os.system('"runas /user:DOMAIN\username "D:/Python27/python.exe script2.py sender-ip=10.10.10.10 < password.txt""')
sys.exit(0)
if sys.argv[-1] != ASADMIN:
script = os.path.abspath(sys.argv[0])
params = ''.join([ASADMIN] + ['D:\Python27\python.exe',script] + sys.argv[1:])
sh.ShellExecuteEx(lpVerb='runas',lpFile=sys.executable,lpParameters=params)
sys.exit(0)
这是脚本2:
import sys, subprocess, socket, string
import wmi, win32api, win32con
对于从命令行传入的参数,我会去掉每个参数前面的'sender-ip=':
userIP = args
userloggedon = ""
# perform system lookup of IP address
userIP = "\\\\" + userIP
pst = subprocess.Popen(
["D:\pstools\psloggedon.exe", "-l", "-x", userIP],
stdout = subprocess.PIPE,
stderr = subprocess.PIPE
)
out, error = pst.communicate()
userLoggedOn = out.split('\n')[1].strip()
print 'userId={}'.format(userLoggedOn)
f = open('D:\SymantecDLP\Protect\plugins\output.txt', 'w')
f.write('userId={}'.format(userLoggedOn))
output.txt文件没有被创建。
有什么想法吗?
编辑:
我还看了这个帖子,如何在从Java执行时提供runas命令的密码
但是无论我尝试什么,我总是会遇到这个错误:
Attempting to start c:\test.bat as user "DOMAIN\username" ...
RUNAS ERROR: Unable to run - c:\test.bat
1326: Logon failure: unknown user name or bad password.
2 个回答
你可以使用 PsExec 工具,具体信息可以查看这个链接:https://learn.microsoft.com/en-us/sysinternals/downloads/psexec
你可以输入用户名和密码来执行命令,而且不需要提升到管理员权限:
psexec [\电脑名[,电脑名2[,...] | @文件]]\ [-u 用户名 [-p 密码] [-n 秒数][-r 服务名][-h][-l][-s|-e][-x][-i [会话]][-c [-f|-v]][-w 目录][-d][-][-a n,n,...] 命令 [参数]
使用 -e 这个选项可以得到和 Runas /netonly 一样的效果:
-e 不加载指定账户的配置文件。
我们一个一个问题来聊。
1. 它还是让我输入密码
在这行代码中:
os.system('"runas /user:DOMAIN\username "D:/Python27/python.exe script2.py sender-ip=10.10.10.10 < password.txt""')
你给了script2
一个密码。runas
命令还是需要密码,因为它是想以另一个用户的身份来运行程序。
2. 当我输入正确的密码时,它还是不工作
嗯……代码不工作是很明显的。不过,你在提问时需要更具体一些。现在我看你的代码,发现你是在尝试对一台远程机器进行ping
操作。
那台远程机器可能有防火墙吗?你有没有尝试手动进行ping
?
编辑:output.txt文件没有被创建,运行脚本也没有告诉你关于写文件的错误,显然你的代码遇到了某个sys.exit()
的地方。