1

Я пытаюсь автоматизировать передачу данных с помощью sftp.

У меня есть хакерский сценарий ожидания, который захватывает файл данных. К сожалению, в процессе передачи файл неожиданно обрезается. Когда я пытался выполнить одну и ту же команду вручную, она всегда передает весь файл.

Первая строка моего ожидаемого сценария:

spawn  sftp -o ConnectTimeout=120 username@boxAddress

У меня сложилось впечатление, что установка «-o ConnectTimeout = 120» предотвратит истечение времени ожидания соединения, если оно остановилось менее чем на две минуты.

Что мне нужно сделать, чтобы скрипт загрузил весь файл?

Другой, гораздо менее важный вопрос: я бы предпочел аутентификацию с использованием ключей (но это не обязательно, так как я получаю данные только с внешнего сервера). Я не думаю, что мог бы поставить ключ на этот внешний сервер (потому что он не находится под моим контролем), но (когда я использовал FileZilla для подключения к нему), я заметил, что FileZilla принял ключ от него. Как я могу настроить свой скрипт для запроса и использования этого ключа?

1 ответ1

0

Вам не нужен expect скрипт, чтобы просто захватить некоторые файлы через SFTP; то же самое можно сделать из командной строки:

sftp username@boxAddress:/path/to/datafile

извлечет файл datafile в текущий каталог.


Чтобы ответить на второй вопрос (который должен был быть опубликован отдельно), вы путаете два разных типа ключей.

  • Когда FileZilla или sftp принимают ключ от сервера, это «ключ хоста », используемый для проверки личности сервера .
  • Когда вы используете ключ для аутентификации, это ключ аутентификации пользователя , используемый для проверки вашей личности.

Обычно вам не нужно никакого дополнительного контроля над сервером, чтобы включить последний; просто добавьте ваш открытый ключ в ~/.ssh/authorized_keys . Это можно сделать любым способом, включая get и put SFTP.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .