использование sudo su
, скорее всего, потеряет все разрешения.
Установите аутентификацию ключа ssh, затем используйте ssh -AY user2@localhost
(или ssh -AY user2@localhost xterm
)
Кавычки не вложены. Вы пытаетесь передать ssh
удаленную команду в виде строки с двойными кавычками, содержащей аргумент в одинарных кавычках для awk
, а внутри этого аргумента несколько строк с двойными кавычками. Но оболочка воспринимает каждую из этих двойных кавычек как начало или конец строки с двойными кавычками, что вносит путаницу.
В частности, когда вы используете "df -khP | column -t | awk '{print $5 " " $1 " " $2}'"
в списке аргументов к ssh
, он разбирается на несколько отдельных строк с кавычками. Первая - "df -khP | column -t | awk '{print $5'
, и поскольку $variable
подстановка производится внутри строк с двойными кавычками, а скрипт не получил 5 аргументов, часть $5
заменяется ничем, давая "df -khP | column -t | awk '{print ". Следующим является " $1 "
, который расширяется до "192.168.5.210" (потому что это первый аргумент скрипта). Наконец, есть " $2}'"
, который расширяется до " }'", потому что второго аргумента нет. ssh
затем вставляет их вместе с пробелами между ними, выдавая `df -khP | column -t | awk '{print 192.168.5.210 }' в качестве выполняемой команды. Совсем не то, что вы хотели.
Чтобы все работало правильно, вам нужно экранировать (с помощью обратных слешей) определенные символы внутри того, что должно быть одной длинной строкой с двойными кавычками. В частности, все двойные кавычки (чтобы они не завершали строку в кавычках) и знаки доллара (чтобы они не расширялись как параметры или что-то еще). Любые обратные кавычки или обратные слэши также должны быть экранированы, если они есть. Таким образом, вот команда, которая вам нужна:
ssh 192.168.5.209 ssh root@$STRIP "df -khP | column -t | awk '{print \$5 \" \" \$1 \" \" \$2}'"
BTW, если я правильно понял, причина, по которой awk
выводит то, что он делает, заключается в том, что он разбирает 192.168.5.210 как три действительных числа, 192.168, .5 и .210, и печатает их (с ведущими нулями, добавленными там, где это необходимо, и с отстающими нулями, которые не имеют значения) как "192.168", "0.5" и "0.21". Но он не печатает пробелы между ними, поэтому получается "192.1680.50.21".