我正在使用 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";