Перенаправить вывод отладочной информации в OpenSSH - PullRequest
0 голосов
/ 25 июня 2018

Я работаю над программой, которая выполняет интерактивные команды через OpenSSH, и я не могу понять, как я собираюсь перенаправить выходные данные отладки в debug.txt.

Это код:

#!/usr/bin/perl

use strict;                                                 
use Net::OpenSSH;

my ($u_name, $acc_name, $acc_uid);

print "Enter account ID: ";
$acc_uid = <STDIN>;
chomp ($acc_uid);

print "Login as: ";
$u_name = <STDIN>;
chomp ($u_name);

my $createuser = "sudo useradd $acc_uid";

system ("clear");

BEGIN { 
    open (my $out, '>>', '/usr/local/debug.txt') or warn $!;
    $Net::OpenSSH::debug_fh = $out;
    $Net::OpenSSH::debug = 16;
}  

my $ssh = Net::OpenSSH->new( "$u_name\@myserver", strict_mode => 0);

$ssh->system({tty => 1 }, "$createuser") 
                or die "remote command failed: " . $ssh->error;         

Я нашел код для Net :: OpenSSH :: debug в Net :: OpenSSH , и это выводпрограмма:

Enter account ID: usertest
Login as: testuser
# open_ex: ['ssh','-V']
# _waitpid(711) => pid: 711, rc:
testuser@myserver's password:
# open_ex: ['ssh','-O','check','-T','-S','/root/.libnet-openssh-perl/testuser-myserver-344-438107','-l','testuser','myserver','--']
# _waitpid(349) => pid: 349, rc:
# open_ex: ['ssh','-qtt','-S','/root/.libnet-openssh-perl/testuser-myserver-344-438107','-l','testuser','myserver','--','sudo useradd testuser123']
[sudo] password for testuser:
# _waitpid(350) => pid: 350, rc:
# open_ex: ['ssh','-O','exit','-T','-S','/root/.libnet-openssh-perl/testuser-myserver-344-438107','-l','testuser','myserver','--']
# _waitpid(351) => pid: 351, rc:

И когда я проверял debug.txt, он пуст.Спасибо!

1 Ответ

0 голосов
/ 26 июня 2018

Вы сказали:

Версия составляет 0,62.

Как объясняет список изменений :

0.66 11 октября 2015 г.

  • исправление документации (сообщил Алекс Кок)
  • позволяет перенаправлять выходные данные отладки в пользовательский дескриптор файла

$Net::OpenSSH::debug_fh поддерживается только в Net :: OpenSSH 0.66+.В более старых версиях он всегда регистрируется как STDERR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...