Я получаю сообщение об ошибке «Отказано в доступе», когда я задаю локальный путь к моей файловой системе Windows с помощью метода get (Paramiko). Кто-нибудь сталкивался с этим или знает как решить? Я вошел в систему как администратор. Ниже приведен код и ошибка трассировки. Спасибо!
Код:
import paramiko
import sys
import os
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('10.5.48.72', username='root', password='******')
apath = '/var/log'
apattern = '"*.log"'
rawcommand = 'find {path} -name {pattern}'
command = rawcommand.format(path=apath, pattern=apattern)
stdin, stdout, stderr = ssh.exec_command(command)
filelist = stdout.read().splitlines()
Это правильный код. Он ищет на сервере Ubuntu в корневом каталоге все журналы и текстовые файлы, а также извлекает файлы и сохраняет их в локальном каталоге (c: \ Extracted):
sim_ip = raw_input('Host: ')
pattern = r"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
if re.match(pattern, sim_ip):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(sim_ip, username='root', password='*****')
apath = '/'
apattern = '"*.txt" -o -name "*.log"'
rawcommand = 'find {path} -name "*.txt" -o -name "*.log"' #{pattern}
command = rawcommand.format(path=apath, pattern=apattern)
stdin, stdout, stderr = ssh.exec_command(command)
filelist = stdout.read().splitlines()
ftp = ssh.open_sftp()
for afile in filelist:
(head, filename) = os.path.split(afile)
print(filename)
ftp.get(afile, 'c:\\Extracted\\' + filename) #'./'+filename)
ftp.close()
ssh.close()
else:
print "You entered an invalid IP Address!!!"