почему команда pssh не работает, когда пользователь sudo? - PullRequest
0 голосов
/ 03 февраля 2019

Ниже приведена одна из частей моего сценария, но я изо всех сил пытаюсь найти решение.Я использую команду pssh вместе с awk для фильтрации определенного столбца из пользовательской команды ввода ОС.awk с командой pssh имеет проблему только когда 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

Но ниже предоставьте мне неправильный ввод (дает вывод uname -a), когдаsudo to quser.

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

1 Ответ

0 голосов
/ 03 февраля 2019

Я почти уверен, что ваша цитата неполная, т. Е. Ваша $3 где-то теряется, и вы получаете следующее:

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

В таких случаях я всегда предлагаю включить отладку оболочки, т.е.

$ 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}'\'')'

Чтобы получить правильное цитирование, вам, возможно, придется поиграть с цифрами \.

...