Я пытаюсь найти хороший способ хвостать файл на удаленном хосте. Это во внутренней сети машин Linux. Требования:Как я могу забрать удаленный файл?
Должен быть хорошо себя (без дополнительного процесса прокладки вокруг, или продолжения вывода)
не может требовать от кого-то модуля животного Perl.
Может быть вызван через Perl.
Если возможно, не требуют пользовательского встроенного скрипта или программы на удаленном компьютере (обычные Linux утилиты отлично)
Решения я пытался, как правило, такого рода
ssh remotemachine -f <some command>
"некоторые команды" были:
tail -f logfile
Базовый хвост Безразлично» t, потому что удаленный процесс продолжает записывать вывод на терминал после того, как локальный процесс 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 $_;
}
Это работает лучше, потому что нет никакого вывода на экран после того, как местные выходы процесса, но удаленный процесс не понять, что его гнездо вниз, и он живет на неопределенный срок.
Приведенный выше код не имеет абсолютно никакого смысла. Можете ли вы опубликовать реальную вещь? –
Что вы подразумеваете под «удаленным процессом продолжает извергать»? Когда обе стороны ssh-соединения умирают, другая тоже должна умереть ... * puzzled * –
Да, я видел, что сеансы ssh умирают, и все, что бежало через них, тоже хрипит, если они не работают в сеансах отдельного экрана или что-то – warren