【发布时间】:2012-09-20 21:49:00
【问题描述】:
我正在使用 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>
由于 CU sudo 一次不允许超过 1 个选项,我在提供命令之前提供 -k。
请注意,这个 sudo 版本没有 -S 开关来使用标准输入传递密码。所以它需要来自终端的密码。你能帮忙吗?谢谢。
$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";
【问题讨论】:
-
您是否尝试运行要求您通过 Net::OpenSSH 连接使用 sudo 的命令?如果是这样,您应该修改您的问题标题以更准确地反映您的问题“perl sudo ...”听起来您正在尝试使用 Perl Sudo 模块search.cpan.org/~landman/Sudo-0.21/lib/Sudo.pm
-
你好 Andrew,我要去结帐 sudo.pm 我会报告发现了什么。如果你有任何使用经验请分享
-
可能作为 sudo.pm 工作似乎提供了一些远程机制,尽管它自 2007 年以来一直没有更新。与 perl - timtowtdi 一样。无论哪种方式最适合您,我只回答了对我来说最简单且需要最少依赖性的方法。