#python #paramiko
Вопрос:
Я использую следующий код для выполнения команд на удаленной машине через paramiko.
commands = [[r"1st commands goes in here", "remote path", "localpath"],
[r"2nd commands goes in here", "remote path", "localpath"]]
for command in commands:
# create a new session
try:
server = ShellHandler(ip_address, "admin", admin_pw)
open_ftp = server.ftp()
except:
sys.exit("something went wrong, please try again")
cmd = server.execute("cd /home/admin/automated")
cmd = server.execute(command[0])
open_ftp.get(command[1], command[2])
# end the current session
avamar.ssh.close()
open_ftp.close()
Я создаю новое соединение для каждой команды, перенаправляю вывод в файл и загружаю этот файл с помощью pramiko .get
Я получаю противоречивый вывод из этого кода, иногда он работает просто отлично и захватывает файлы, а иногда выдает эту ошибку:
Traceback (most recent call last):
File "Z:gdrivepythonprojectsautomationalphaloop.py", line 726, in <module>
open_ftp.get(remote_path, local_path)
File "C:Usersadam4AppDataLocalProgramsPythonPython38-32libsite-packagesparamikosftp_client.py", line 811, in get
size = self.getfo(remotepath, fl, callback, prefetch)
File "C:Usersadam4AppDataLocalProgramsPythonPython38-32libsite-packagesparamikosftp_client.py", line 783, in getfo
with self.open(remotepath, "rb") as fr:
File "C:Usersadam4AppDataLocalProgramsPythonPython38-32libsite-packagesparamikosftp_client.py", line 372, in open
t, msg = self._request(CMD_OPEN, filename, imode, attrblock)
File "C:Usersadam4AppDataLocalProgramsPythonPython38-32libsite-packagesparamikosftp_client.py", line 822, in _request
return self._read_response(num)
File "C:Usersadam4AppDataLocalProgramsPythonPython38-32libsite-packagesparamikosftp_client.py", line 874, in _read_response
self._convert_status(msg)
File "C:Usersadam4AppDataLocalProgramsPythonPython38-32libsite-packagesparamikosftp_client.py", line 905, in _convert_status
raise IOError(errno.EACCES, text)
PermissionError: [Errno 13] Permission denied
есть идеи, что здесь не так!
Ответ №1:
эта ошибка связана с разрешением на файл на вашем компьютере.
Комментарии:
1. спасибо, оказывается, я получал эту ошибку, когда файл принадлежал root.
2. я добавил cmd = avamar.execute(«администратор chown:администратор {}».формат(команда[2])), и это устранило проблему