Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Net::Openssh的perl sudo不工作_Perl_Sudo - Fatal编程技术网

使用Net::Openssh的perl sudo不工作

使用Net::Openssh的perl sudo不工作,perl,sudo,Perl,Sudo,我正在使用salvas的Net::Openssh模块,但不知道如何使用sudo。我尝试了以下方法,但不起作用 结果中没有打印任何内容。像ls,pwd这样的单字命令也不会产生任何结果 目标系统上的sudo版本: $ /usr/local/bin/sudo -V CU Sudo version 1.5.7p2 $ /usr/local/bin/sudo -h CU Sudo version 1.5.7p2 usage: /usr/local/bin/sudo -V | -h | -l | -v |

我正在使用salvas的Net::Openssh模块,但不知道如何使用sudo。我尝试了以下方法,但不起作用

结果中没有打印任何内容。像
ls
pwd
这样的单字命令也不会产生任何结果

目标系统上的sudo版本:

$ /usr/local/bin/sudo -V
CU Sudo version 1.5.7p2

$ /usr/local/bin/sudo -h
CU Sudo version 1.5.7p2
usage: /usr/local/bin/sudo -V | -h | -l | -v | -k | -H | [-b] [-p prompt] [-u username/#uid] -s | <command>


如果您在您的问题中解释了更多您试图完成的任务,那么会更有帮助,但是我假设您正在尝试使用perl中的Net::OpenSSH模块通过ssh运行一个需要sudo的命令

如果是这样的话,你应该考虑尝试一个“世袭”来编写一系列命令。


下面是关于
的-查找区域,您是否正在尝试运行一个命令,该命令要求您通过Net::OpenSSH连接使用sudo?如果是这样,您应该修改您的问题标题,以更准确地反映您的问题“perl sudo…”听起来像是您在尝试使用perl sudo模块您好,Andrew,我要去checkout sudo.pm,我将报告找到的内容。如果您有任何类似sudo.pm的使用经验,它似乎提供了一些远程机制,尽管自2007年以来一直没有更新过。与perl-timtowtdi一样。无论什么最适合你,我只是回答了我认为最简单、依赖性最少的问题。问题是如何将密码传递给sudo。一旦sudoauth完成,运行命令就不难了。你能在这里传递密码吗,博士?我不明白为什么不能,但你自己试试。在标量中创建一个“herdoc”,并通过
$ssh->system()
将其传递给您的Net::OpenSSH连接。但是,如果它不起作用,我列出了可以解决您的问题的其他选项,例如使用ssh连接在远程服务器上执行shell脚本,该脚本可能包含一个herdeoc,以像sudo一样执行操作。我还提到了这样一个事实,即Net::OpenSSH与expect一起工作,expect通常用于为事物提供密码。我也在上面贴了一个问题。。。。
$ssh->system("$sudo_path -k");
my @output = $ssh->capture({tty => 1,
              stdin_data => "$PASS"},
              $sudo_path,
              "-p",'', "$cmd");
print "  result=@output \n";
$ssh->system("$sudo_path -k");
my @output = $ssh->capture({stdin_data => "$PASS"},
              $sudo_path,
              "-p",'', "$cmd");
print "  result=@output \n";