SFTP для отправки файла с помощью скрипта bash

Я использую проверку ключа, поэтому пароль не является проблемой. У меня есть файл, имя которого я знаю, и я просто хочу отправить его на другую машину через sftp.

Я пробовал искать, но не мог найти этот (казалось бы, простой) вопрос где угодно. Возможно, мой Google-фу просто не справляется со мной сегодня.

Короче: я нахожусь на своей локальной машине, хочу отправить файл (test.txt) на удаленную машину. Авторизованные ключи уже предоставлены. В основном я хочу автоматизировать эти три этапа:

sftp [email protected]:/root/dropoff
put test.txt
quit

Есть ли простая команда bash, которую я могу использовать для автоматизации этого? Единственный вариант, который я видел, это использование сценария bash для выполнения put/quit и использование опции -b для его запуска. Есть ли что-то более чистое? (Я не заинтересован в использовании других приложений/инструментов.)

Благодарю!

Ответ 1

Вы сказали, что вас не интересуют другие инструменты, но scp - гораздо лучший выбор для автоматической передачи файлов. Вот пример scp:

scp test.txt [email protected]:/root/dropoff

Ответ 2

Я знаю, что это старый, но вы также можете передать аргументы команде с документом Here

Вы можете поместить в скрипт следующее:

# The following is called a HERE document
sftp <user>@<remote> << SOMEDELIMITER 
  put test.txt
  ... # any commands you need to execute via sftp
  quit
SOMEDELIMITER

каждая дополнительная команда будет передаваться в команду, SOMEDELIMTER << и SOMEDELIMTER может быть все, что вы хотите.

scp - отличный вариант, однако sftp был единственным инструментом, который я смог получить при нажатии из linux в windows, и вы застряли с помощью FreeSSHD в сервисном режиме!