Script cannot read password

…衆ロ難τιáo~ 提交于 2019-12-24 21:38:18

问题


Python script is designed to run with elevated credentials, unfortunately

  1. it still prompts me for password
  2. when I enter the correct password it doesn't work

Here is script1, which calls script2 with elevated credentials

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)

Here is script2

import sys, subprocess, socket, string import wmi, win32api, win32con

for args in [item.strip('sender-ip=') for item in sys.argv[1:]]:

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 is not created

Any ideas?

EDIT

I also read this thread, How to supply password to runas command when executing it from java

but no matter what I try I keep getting the error

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.

回答1:


Let's talk about your problems one at the time.

1. It still prompts me for password

In the line

os.system('"runas /user:DOMAIN\username "D:/Python27/python.exe script2.py sender-ip=10.10.10.10 < password.txt""')

you're providing the password to script2. runas command still need a password since is trying to run a program as another user.

2. When I enter the correct password it doesn't work

Well ... The code does'n work that's clear. But, you have to be more specific when asking a question. Right now a look to your code and I can see that you're trying to do ping on a remote machine.

Might the remote machine has a firewall? Have you tryed doing ping manually?

Edit: The output.txt file is not created, and running the script don't tell you nothing about error writting the file, obviously your code is hitting one of the sys.exit() lines.




回答2:


You can use PsExec https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

You can supply a username and password and executing does not need to be elevated to admin:

psexec [\computer[,computer2[,...] | @file]]\ [-u user [-p psswd] [-n s][-r servicename][-h][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-][-a n,n,...] cmd [arguments]

Use the -e switch to give the same results as Runas /netonly:

-e Does not load the specified account’s profile.



来源:https://stackoverflow.com/questions/23767393/script-cannot-read-password

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!