为啥 sudo 用户时 pssh 命令不起作用?

Posted

技术标签:

【中文标题】为啥 sudo 用户时 pssh 命令不起作用?【英文标题】:why pssh command not working when sudo user?为什么 sudo 用户时 pssh 命令不起作用? 【发布时间】:2019-06-27 09:46:35 【问题描述】:

以下是我的脚本的一部分,但我正在努力寻找解决方案。 我正在使用 pssh 命令和 awk 从用户输入 OS 命令中过滤特定列。 使用 pssh 命令的 awk 只有在对任何用户执行 sudo 时才会出现问题。

下面提供正确的输入。

pssh -h /tmp/hosts -i 'echo $(echo ), $(uptime|awk '\''print $3'\'')'
[1] 13:15:40 [SUCCESS] Host1
, 75
[2] 13:15:40 [SUCCESS] Host2
, 59
[3] 13:15:40 [SUCCESS] Host3
, 147

但是当 sudo 到 quser 时,下面提供了不正确的输入(给出 uname -a 的输出)。

sudo -i -u quser pssh -h /tmp/hosts -i 'echo $(echo ), $(uptime|awk '\''print $3'\'')'
[1] 13:16:11 [SUCCESS] host1
, 13:16pm up 147 days 4:48, 1 user, load average: 0.02, 0.05, 0.01
[2] 13:16:11 [SUCCESS] host2
, 13:16pm up 59 days 3:04, 0 users, load average: 0.52, 0.29, 0.22
[3] 13:16:11 [SUCCESS] host3
, 13:16pm up 75 days 3:38, 0 users, load average: 0.03, 0.02, 0.00

【问题讨论】:

echo $(echo ), 应该达到什么目的? 【参考方案1】:

我很确定您的引用不完整,即您的 $3 迷路了,而您得到了这个:

 $ echo $(echo ), $(uptime|awk 'print')
 , 16:54:39 up 7 days, 1:36, 14 users, load average: 0.30, 0.27, 0.27

在这种情况下,我总是建议启用 shell 调试,即

$ set -x; echo $(echo ), $(uptime|awk 'print')
++ echo
++ uptime
++ awk 'print'
+ echo , 16:56:14 up 7 days, 1:37, 14 users, load average: 0.16, 0.25, 0.26
, 16:56:14 up 7 days, 1:37, 14 users, load average: 0.16, 0.25, 0.26

我认为你所缺少的只是引用$,即。

$ pssh -h /tmp/hosts -i 'echo $(echo ), $(uptime|awk '\''print \$3'\'')'

要获得正确的引用,您可能必须使用\ 的数字。

【讨论】:

以上是关于为啥 sudo 用户时 pssh 命令不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥将文件向上移动多个级别时“mv”命令不起作用[关闭]

为啥作曲家更新后php artisan命令不起作用

当`sudo`和`bypass`不起作用时如何避免macOS上的“不允许操作”

解锁系统偏好设置不起作用

为啥通知组件不起作用

linux iptables 命令为啥不起作用,请求大侠解答,谢谢!