Мой подпроцесс работает как диск, но это не так. Фикс? - PullRequest
0 голосов
/ 16 января 2020

Я делаю скрипт в Python 3.7, используя интерпретатор Spyder, который использует модуль подпроцесса для сопоставления удаленного сетевого диска с компьютерами, а затем проверяет, существует ли файл на этом диске. Например, я сопоставляю диск на моем компьютере как «S: \», но он соответствует «C: \» на их. Он проверяет, существует ли файл "nircmd.exe" в их C: \. Когда я запускаю свой код, все, что я получаю, это:

[-] Could not connect to 10.98.80.142
[-] Could not connect to 10.98.80.147

Когда я печатаю: b''
Когда я печатаю ошибку: 'System error 85 has occurred.\r\n\r\nThe local device name is already in use.\r\n\r\n' Теперь я понимаю, что это должно означать, что у меня уже есть диск подключен, но я нет.

from subprocess import Popen, PIPE
from os import path

def detectNircmd(computers):
    NIRCMD = "Windows\\System32\\nircmd.exe"
    valids = []
    invalids = []
    for computer in computers:
        try:
            p = Popen(['net', 'use', 'S:', '\\\%s\\c$' % computer],stderr=PIPE,stdin=PIPE,stdout=PIPE)
            out, err = p.communicate()
            if 'success' in out:
                if path.isfile("S:\\%s" % NIRCMD):
                    valids.append(computer)
                    p = Popen(['net', 'use', 'S:', '/delete'],stderr=PIPE,stdin=PIPE,stdout=PIPE)
                else:
                    invalids.append(computer)
                    p = Popen(['net', 'use', 'S:', '/delete'],stderr=PIPE,stdin=PIPE,stdout=PIPE)
            else:
                invalids.append(computer)
                p = Popen(['net', 'use', 'S:', '/delete'],stderr=PIPE,stdin=PIPE,stdout=PIPE)

        except:
            print("[-] Could not connect to %s" % computer)
    print(valids, invalids)

tests = ['10.98.80.142', '10.98.80.147']
detectNircmd(tests)

1 Ответ

0 голосов
/ 17 января 2020

Ну, я понял, что что-то пошло не так с использованием операторов try / исключением, поэтому я переписал алгоритм без них, и теперь он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...