gpt4 book ai didi

perl - 如何使用 Net::SSH::Any 模块执行一系列命令?

转载 作者:行者123 更新时间:2023-12-02 04:10:11 25 4
gpt4 key购买 nike

我想在使用 Net::SSH::Any 连接到服务器后在同一 session 中执行多个命令。

我的示例代码如下:

use strict;
use warnings;

use Net::SSH::Any;

my $host = "ip address";
my $user = "user";
my $passwd = "pass";
my $cmd1 = 'cd /usr/script';

my $ssh = Net::SSH::Any->new($host, user => $user, password => $passwd);
$ssh->system($cmd1);
my $pwd = $ssh->capture("pwd");
print $pwd;

我期望以下输出:

/usr/script

但我得到的是:

/home/user

如何在单个 session 中执行多个命令?

最佳答案

您必须像这样在远程 shell 中链接命令:

my $cwd = $ssh->capture( q{cd /usr/script && pwd} );
<小时/>

您必须这样做,因为即使当前支持的 Net::SSH::Any 后端都提供了其他方法来执行此操作(Net::OpenSSH 有 open2pty 和 Net::SSH2 有 channels ),Net::SSH::Any API 不会公开这些。

例如,system 调用 Net::OpenSSH 的 system 方法或创建 Net::SSH2::Channel 并调用 process('exec' = > $cmd)(每个 channel 仅限一个命令)。

关于perl - 如何使用 Net::SSH::Any 模块执行一系列命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32012122/

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