gpt4 book ai didi

linux - 在 perl 中的 SSH 中执行第二个 SSH

转载 作者:太空狗 更新时间:2023-10-29 12:12:49 24 4
gpt4 key购买 nike

我必须从我使用 Net::SSH::Perl 登录的远程机器执行 SSH,即下面代码中传递给 $ssh->cmd 的“cmd”是另一个 SSH(比如 username@主机名)。有没有办法为第二个 SSH 传递密码,然后在第二个远程机器上执行命令。此外,我无法使用 ssh key 对登录或 sshpass 等工具。有人可以帮忙吗?

use Net::SSH::Perl;

my $hostname = "hostname";
my $username = "username";
my $password = "password";

my $cmd = <command to be executed on remote machine>;

my $ssh = Net::SSH::Perl->new("$hostname", debug=>0);
$ssh->login("$username","$password");
my ($stdout,$stderr,$exit) = $ssh->cmd("$cmd");
print $stdout;

最佳答案

Net::SSH::Perl 受到严重限制。我建议你使用 Net::OpenSSH相反,如果可能的话。它支持代理命令和隧道,使其易于使用 jump host .

如果 Net::SSH 是您唯一的选择,那么恐怕唯一的方法就是使用某种类似预期的行为,例如Net::SSH::Expect.

关于linux - 在 perl 中的 SSH 中执行第二个 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36147089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com