Linux 在perl中的SSH中执行第二个SSH
我必须从我使用Net::SSH::Perl登录的远程计算机执行SSH,即下面代码中传递给$SSH->cmd的“cmd”是另一个SSH(例如username@hostname). 有没有办法传递第二个SSH的密码,然后在第二个远程机器上执行命令。 此外,我不能使用ssh密钥对登录或sshpass之类的工具。有人能帮忙吗Linux 在perl中的SSH中执行第二个SSH,linux,git,perl,ssh,Linux,Git,Perl,Ssh,我必须从我使用Net::SSH::Perl登录的远程计算机执行SSH,即下面代码中传递给$SSH->cmd的“cmd”是另一个SSH(例如username@hostname). 有没有办法传递第二个SSH的密码,然后在第二个远程机器上执行命令。 此外,我不能使用ssh密钥对登录或sshpass之类的工具。有人能帮忙吗 use Net::SSH::Perl; my $hostname = "hostname"; my $username = "username"; my
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;
我的$hostname=“hostname”;
我的$username=“username”;
我的$password=“password”;
我的$cmd=;
我的$ssh=Net::ssh::Perl->new(“$hostname”,debug=>0);
$ssh->login(“$username”,“$password”);
my($stdout,$stderr,$exit)=$ssh->cmd($cmd”);
打印$stdout;
Net::SSH::Perl受到严重限制。如果可能的话,我建议你改用。它支持代理命令和隧道,使其易于使用
如果Net::SSH是您唯一的选择,那么恐怕唯一的方法就是使用某种类似expect的行为,例如Net::SSH::expect。我想起了一个相关的问题。你真的要这么做吗,ssh在链子里?为什么不退回到主机并再次从主机进行ssh?只能从第一台远程机器执行到第二台远程机器的ssh。也可以使用以下答案中的方法创建链ssh命令: