Я пытаюсь найти хороший способ сохранить файл на удаленном хосте. Это во внутренней сети Linux-машин. Требования:
Должен вести себя хорошо (никаких дополнительных процессов или продолжающегося вывода)
Не может требоваться чей-то любимый Perl-модуль.
Может вызываться через Perl.
Если возможно, не требуется специально созданный скрипт или утилита на удаленной машине (подойдут обычные утилиты Linux)
Решения, которые я пробовал, обычно такого рода
ssh remotemachine -f <some command>
"какая-то команда" была:
tail -f logfile
Базовый хвост не работает, потому что удаленный процесс продолжает записывать вывод на терминал после того, как локальный процесс ssh умирает.
$socket = IO:Socket::INET->new(...);
$pid = fork();
if(!$pid)
{
exec("ssh $host -f '<script which connects to socket and writes>'");
exit;
}
$client = $socket->accept;
while(<$client>)
{
print $_;
}
Это работает лучше, потому что после выхода локального процесса нет вывода на экран, но удаленный процесс не понимает, что его сокет не работает, и живет бесконечно.