我正在使用Spyder解释器在Python 3.7中编写一个脚本,该解释器使用子流程模块将远程网络驱动器映射到计算机,然后检查该驱动器中是否存在文件。例如,我正在将我的计算机上的驱动器映射为“S:\”,但在他们的计算机上它映射为“C:\”。它正在检查C:\上是否存在文件“nircmd.exe”。当我运行代码时,我得到的是:
[-] 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)
我发现使用try/except语句时出现了一些问题,所以我在没有它们的情况下重写了算法,现在它可以工作了
相关问题 更多 >
编程相关推荐