perl モジュールの Net::SSH:Perl と Net::OpenSSH を試しましたが、うまくいきませんでした。「ssh root@host」を実行して「xterm」などの X アプリケーションを実行すると、ウィンドウが返されるため、X11 転送は機能します。
ここに私が試したいくつかのことがあります:
$self->{'ssh'} = Net::OpenSSH->new("root:PW@".$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:PW@".$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 root@host xterm`
可能であればモジュールを動作させたいのですが、どうにかして双方向パイプを開き、SSH と通信して、必要なときにデータを受信できるのであれば ($self->{'ssh'}->cmd()私のスクリプトでいつでも出力を受け取ります)、私はそれを行います。どこから始めたらいいのかわからない。他の誰かが前にこれをしましたか?