Я пытаюсь скопировать указанный файл c с удаленного сервера на мой локальный компьютер, используя Paramiko в Python 3.
Справочная информация: на конечном компьютере существует каталог mydir
198.18 .2.2, который содержит много каталогов отметок времени, которые начинаются с имени 2020...
Целевой компьютер: 198.18.2.2
Исходный компьютер: 198.18.1.1
Пока мне удалось Чтобы построить команду для выполнения следующим образом -
cd "$(ls -1d /mydir/20* | tail -1)"; scp -o StrictHostKeyChecking=no email_summary.log root@198.18.1.1:/mydir/work/logs/email_summary_198.18.2.2.log
Код:
def remote_execute(dest_ip, cmd):
"""API to execute command on remote machine"""
result = []
sys.stderr = open('/dev/null')
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh_client.connect(dest_ip, username='root')
stdin, stdout, stderr = ssh_client.exec_command(cmd)
for line in stdout.readlines():
result.append(line.strip())
ssh_client.close()
return result
except paramiko.AuthenticationException:
print("Authentication with the remote machine failed")
return
except paramiko.SSHException:
print("Connection to remote machine failed")
return
except paramiko.BadHostKeyException:
print("Bad host key exception for remote machine")
return
Вызов: remote_execute('198.18.1.1', cmd)
Проблема ls -1d /mydir/20* | tail -1
всегда дает мне последняя папка с метками времени. Но если файл email_summary.log
отсутствует в этой папке, я хотел бы просмотреть следующую последнюю папку с отметкой времени, в которой находится файл email_summary.log
.
По сути, scp файл из последней папки метки времени, которая содержит файл "email_summary.log". Может кто-нибудь помочь мне с этим?
Заранее спасибо.