Я пробовал модули perl Net :: SSH: Perl и Net :: OpenSSH безрезультатно. Пересылка X11 действительно работает, потому что если я делаю «ssh root @ host» и выполняю приложение X, такое как «xterm», я получаю окно назад.SSH с пересылкой X11 в Perl
Вот некоторые вещи, которые я пробовал:
$self->{'ssh'} = Net::OpenSSH->new("root:[email protected]".$hostname);
print $self->{'ssh'}->capture("env"); #The display variable is not set so it won't work
print $self->{'ssh'}->capture("xterm");
Неа
$self->{'ssh'} = Net::OpenSSH->new("root:[email protected]".$hostname, master_opts => ['-X' => '']);
print $self->{'ssh'}->capture("env"); #The display variable is not set so it won't work
print $self->{'ssh'}->capture("xterm"); #Nope
print $self->{'ssh'}->capture({master_opts => ['-X']}, "xterm"); #Nope
Нет, теперь Net :: SSH :: Perl
$self->{'ssh'} = Net::SSH::Perl->new("$hostname", debug=>0);
$self->{'ssh'}->login("root","pass");
my ($stdout, $stderr, $exit) = $self->{'ssh'}->cmd("xterm"); #Nope
Неа
$self->{'ssh'} = Net::SSH::Perl->new("$hostname", debug=>0, options=>["ForwardX11 yes"]);
$self->{'ssh'}->login("root","pass");
my ($stdout, $stderr, $exit) = $self->{'ssh'}->cmd("xterm"); #Nope
Единственное, что на самом деле работает, это если я сделаю следующее, поэтому я знаю, что пересылка X11 работает в Perl.
`ssh [email protected] xterm`
я скорее получить бы модули работать, если это возможно, но если я могу как-то открыть двунаправленную трубу, общаться с SSH и получать данные, когда я хочу (подобно тому, как я могу $ себя -> { 'SSH '} -> cmd() и получать вывод в любое время в моем скрипте), я сделаю это. Я просто не знаю, с чего начать. Кто-нибудь еще это делал раньше?
«Нет» означает, никакое новое окно не открывается, но вы не получите сообщение об ошибке? – innaM
Не открывается окно. Ошибка всегда относится к переменной DISPLAY. Когда переадресация X11 работает, SSH создает псевдо-дисплей, такой как localhost: 400, который является SSH-туннелем и соответствующим образом устанавливает переменную DISPLAY. –