Передать файл или пароль по 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

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: