2014-05-20 61 views
0

Python腳本被設計爲與高架憑據運行,不幸的是腳本無法讀取密碼

  1. 它仍然提示我輸入密碼
  2. 當我輸入正確的密碼,這是行不通的

這裏是腳本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) 

這裏我小號SCRIPT2

進口SYS,子進程,插座,串 進口WMI,WIN32API,win32con

用於在args [item.strip( '發送器IP ='),用於在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中沒有創建

任何想法?

編輯

我也看了這個線程,How to supply password to runas command when executing it from java

但無論我怎麼努力我不斷收到錯誤

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. 
+0

如果你打印出來,你會得到什麼? –

+0

@pss - 我在哪裏保留「打印出」 – Glowie

+0

第5行最後一行是'out,error = pst.communicate()' –

回答

1

講起當時的問題之一。

1.它仍然提示我輸入密碼

在行

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

你到script2提供密碼。 runas命令仍然需要密碼,因爲它試圖以另一個用戶的身份運行程序。

2.當我輸入正確的密碼,這是行不通的

嗯...該代碼does'n工作是十分明顯的。但是,在提問時你必須更加具體。現在看看你的代碼,我可以看到你正在嘗試在遠程機器上執行ping

可能遠程機器有防火牆嗎? 您是否嘗試過手動操作ping

編輯:此output.txt文件不被創建,並運行該腳本不告訴你一無所知的錯誤書面方式文件,顯然你的代碼被擊中sys.exit()線之一。

+0

沒有創建output.txt文件,並且運行腳本不會告訴你寫錯文件的任何信息,顯然你的代碼正在碰到'sys.exit()'行之一。 –

+0

我能夠手動ping遠程機器。當我使用提升的憑證手動打開命令提示符並運行script2時,它可以很好地工作。爲了簡化問題,我更改了script2 ...所有機器都可以ping到 – Glowie

+0

以解決問題1:我如何爲runas命令提供密碼。這是我的問題。 – Glowie

0

您可以使用PSEXEC https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

您可以提供用戶名和密碼,並執行並不需要提升到管理員:

PSEXEC [\計算機[1,計算機[,... ] | @文件]] \ [-u user [-p psswd] [-ns] [ - r servicename] [ - h] [ - l] [ - s | -e] [ - x] [ - i [session] ] [ - c [-f | -v]] [ - w目錄] [ - d] [ - ] [ - an,n,...] cmd [參數]

使用-e開關與Runas/netonly相同的結果:

-e不加載指定的帳戶的配置文件。