Передать файл или пароль по SFTP в Bash скрипте

Содержание
Введение
Expect
Передача аргументов
Похожие статьи

Введение

Подсоединиться по sftp в bash очень просто sftp user@domain.

Если у вас настроена авторизация по ключу то сразу появится sftp>

Если не настроена, то нужно вводить пароль.

Допустим, нужно передать файл, причём сделать это из скрипта, а не вводом команд с клавиатуры.

Новичка это задание может поставить в тупик, но если воспользоваться expect всё должно получиться.

Expect

expect это язык неидентичный bash , поэтому для него понадобится отдельный скрипт

Будем вызывать этот скрипт из основного bash скрипта

#!/bin/bash # Часть вашего bash скрипта до передачи по sftp # Вызов скрипта на языке expect # В качестве первого аргумента передаём 1 ./expect_sftp_script 1 # Часть вашего bash скрипта после по sftp

Теперь перейдём непосредственно к скрипту на языке expect

Обратите внимание на то, что первой строчкой должен быть #!/usr/bin/env expect а не #!/bin/bash

Именно поэтому нельзя совместить два скрипта в одном файле

#!/usr/bin/env expect # подключимся к серверу spawn sftp root@server expect "sftp>" # Можно начать передавать команды send "lcd /opt/input" # После каждой команды имитируем нажатие Enter send \n expect "sftp>" send "cd /tmp" send \n expect "sftp>" send "put $test_file_sftp" send \n expect "sftp>" send "exit"

Передача аргументов

Из bash скрипта можно передать переменные в expect скрипт

Вызовем expect скрипт с одним аргументом

#!/bin/bash # Часть вашего bash скрипта до передачи по sftp # Вызов скрипта на языке expect # В качестве первого аргумента передаём 1 ./expect_sftp_script 1 # Часть вашего bash скрипта после по sftp

#!/usr/bin/env expect set arg_from_bash [lindex $argv 0] spawn sftp root@server expect "sftp>" send "lcd /opt/input" send \n expect "sftp>" send "cd /tmp" send \n expect "sftp>" send "put $arg_from_bash" send \n expect "sftp>" # Закрываем соединение send "exit"

Похожие статьи
Bash
Основы Bash
alias: Псевдонимы
Bash Scripting
-eq -gt …: Операторы сравнения
if else: Условные операторы
Цикл while
date: Дата
Переход на новую строку
Арифметические операции
sftp: Передать файл или пароль в Bash скрипте
Мониторинг потребления памяти
Работа с файлами в директории
awk
grep
sed
Ошибки Bash
Zsh