Назад | Перейти на главную страницу

Инициирование передачи файлов между серверами с помощью заблокированного сценария bash

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

Есть ли способ передать открытый ключ в scp и начать передачу через скрипт bash? Тогда откажитесь от сценария bash и выключите терминал?

Какие еще варианты есть, чтобы использовать его на заднем плане?

Я не уверен, что понимаю, что вы ищете. Вы хотите запустить сценарий Bash на локальном компьютере, который ничего не делает, кроме вызова scp (который обрабатывает аутентификацию ключа с помощью ssh внутренности)? Или вы хотите запустить свой скрипт на удаленном сервере? Или вы, возможно, хотите использовать конкретный открытый ключ?

Ответ

Чтобы запустить команду или скрипт в фоновом режиме, не допуская остановки процесса при получении сигнала SIGHUP от вашего терминала (т.е. когда вы его закрываете), вы можете использовать nohup <command or script> &.


Предполагая, что ваш скрипт назван script.sh, вы можете запустить его с nohup script.sh &. Сценарий может запускать следующую команду (если вы хотите принудительно использовать конкретный открытый ключ):

#!/bin/sh
scp -B -i /home/user/.ssh/id_rsa_key.pub /path/to/your/files username@remote.host:.

Если вам не нужно использовать файл сценария или упрощать команду, вы всегда можете использовать свой ~/.ssh/config файл для этого:

Host RemoteServer
  Hostname remote.host
  User username
  IdentityFile ~/.ssh/id_rsa_key.pub # If you need to force a particular key
  Port 22 # Not necessary either, port 22 is default

Таким образом, команда для запуска может быть такой же «простой» для запуска, как nohup scp /path/to/your/files RemoteServer:. &

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