Я пытаюсь найти хороший способ связать файл на удаленном хосте. Это во внутренней сети машин Linux. Требования:
-
Должно быть хорошо себя вести (без дополнительного процесса или продолжения выхода)
-
Не может потребоваться чей-то модуль Perl для домашних животных.
-
Может быть вызван через Perl.
-
Если это возможно, не требуется специально созданная script или утилита на удаленном компьютере (обычные утилиты 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 $_;
}
Это работает лучше, потому что на выходе после выхода локального процесса нет выхода, но удаленный процесс не выясняет, что его сокет опущен, и он живет бесконечно.