Подключите другой компьютер в локальной сети - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь подключить другой компьютер в локальной сети через python (модуль подпроцессов) с помощью этих команд из CMD.exe

  • net use \\\\ip\C$ password /user:username
  • copy D:\file.txt \\ip\C$

Тогда в python это выглядит так, как показано ниже.Но когда я пробую вторую команду, я получаю:

"FileNotFoundError: [WinError 2]"

Встречались ли вы с той же проблемой?Есть ли способ это исправить?

import subprocess as sp

code = sp.call(r'net use \\<ip>\C$ <pass> /user:<username>')
print(code)
sp.call(r'copy D:\file.txt \\<ip>\C$')

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Проблема в том, что copy - это встроенная, а не настоящая команда в Windows.

Эти сообщения Windows ужасны, но "FileNotFoundError: [WinError 2]" не означает, что к одному из исходных и целевых файлов невозможно получить доступ (если не получится copy, вы получите обычное сообщение Windows с явными именами файлов).

Здесь это означает, что команда не может быть доступна.

Так что вам нужно добавить shell=True к вашему вызову подпроцесса, чтобы получить доступ к встроенным модулям.

Но не делайте этого (проблемы безопасности, непереносимость), вместо этого используйте shutil.copy.

Кроме того, используйте check_call вместо call для вашей первой команды, как если бы net use не сработал, остальные тоже не получатся. Лучше иметь ранний провал.

Подводя итог, вот что я бы сделал:

import shutil
import subprocess as sp
sp.check_call(['net','use',r'\\<ip>\C$','password','/user:<username>'])
shutil.copy(r'D:\file.txt,r'\\<ip>\C$')
0 голосов
/ 25 марта 2019

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

...