linux - 为什么 sudo 用户时 pssh 命令不起作用?
问题描述
以下是我的脚本的一部分,但我正在努力寻找解决方案。我正在使用 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
解决方案
我很确定你的报价是不完整的,即你$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
我认为您所缺少的只是引用 the $
too,即。
$ pssh -h /tmp/hosts -i 'echo $(echo ), $(uptime|awk '\''{print \$3}'\'')'
要获得正确的报价,您可能必须使用\
.
推荐阅读
- r - 从 SparkR ML RF 中提取向量概率而不将 SparkDataFrame 强制转换为 R data.frame
- python-3.x - 模块日志记录的属性 funcName 返回一个默认的 Levelname
- python - python中大型数据集的多处理(查找重复项)
- css - css预处理器的less文件样式中~的符号是什么意思
- php - 如何在php中合并选择选项名称
- azure - Azure 应用程序网关能否将请求分发到特定 URL?
- sql - 在可能“领先”或“落后”的情况下使用案例
- javascript - 后台同步未在服务人员中触发事件
- sql - 如何防止在我的查询中发生延迟假脱机?
- python - 在 Excel 中删除 Pandas 条件格式