Вы упомянули ftp, telnet и sftp.Они могут быть написаны с помощью чего-то вроде ожидаемого или с помощью некоторого, возможно, сложного сценария на A. Однако вы можете использовать этот трюк Unix, чтобы сделать все это из A. Вам нужно будет иметь возможность ssh из A в Bи от B до C. Вам потребуется настройка аутентификации личности, так что для этих соединений пароль не требуется.(Вы можете использовать переадресацию идентификатора агентом на A для обоих соединений.) Затем запустите что-то вроде этого на A:
cat file-on-a | ssh B "ssh C 'cat > file-on-c'"
, который переместит файл из A в C, через B, без сохранения файлана B.
Я делал подобные вещи в Windows перед использованием ssh и cat, которые являются частью Cygwin.Я не знаю, насколько хорошо это будет работать с другими инструментами Windows ...
РЕДАКТИРОВАТЬ: Я должен был сказать пару слов о том, как работает эта команда.Программа ssh предоставляет своего рода трубу для перемещения данных между локальной и удаленной машинами.Обычно этот pipe подключен к оболочке на удаленном конце и служит для тех же целей, что и telnet, за исключением обеспечения большей безопасности.Однако эту трубу можно использовать для чего угодно.Утилита sftp использует этот канал для перемещения файлов.Команда ssh может принять команду для выполнения в удаленной системе.Например, ssh B ls
подключится к B, запустит ls и отправит результаты обратно вам.Вышеприведенная команда выполняет команду ssh для B и просит B запустить ssh, соединяющийся с C. Это дает нам pipe от A, к B и C. Теперь, что делать на обоих концах?Программа cat
читает файлы и записывает их в стандартный формат.Если имена файлов не указаны, он читает стандартное значение. cat file-on-a
читает файл на компьютере A
и записывает его в команду ssh
.cat > file-on-c
читает данные, отправленные ему, а часть > file-on-c
(благодаря оболочке) записывает это в файл file-on-c
.
Опять же, не уверен, что это вариант в вашей среде.Надеюсь, это поможет.