Скрипт не может прочитать пароль

Скрипт Python, к сожалению, предназначен для работы с повышенными учетными данными.

  1. он все еще запрашивает у меня пароль
  2. когда я ввожу правильный пароль, он не работает

Вот script1, который вызывает script2 с повышенными учетными данными

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

для аргументов в [item.strip('sender-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 не создается

Есть идеи?

РЕДАКТИРОВАТЬ

Я также читал эту тему, Как предоставить пароль для команды runas при выполнении его из 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.

2 ответа

Решение

Давайте поговорим о ваших проблемах по одному.

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() линий.

Вы можете использовать PsExec https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

Вы можете указать имя пользователя и пароль, а выполнение не нужно повышать до уровня администратора:

psexec [\ computer [, computer2 [,...] | @file]] \ [-u пользователь [-p psswd] [-ns] [- r имя_службы][-h][-l][-s|-e][-x][-i [сессия]][-c [-f|-v]][- каталог w][-d][-][-a n,n,...] cmd [аргументы]

Используйте ключ -e, чтобы получить те же результаты, что и Runas / netonly:

-e Не загружает профиль указанной учетной записи.

Другие вопросы по тегам