следующая команда выглядит цитироваться и спасся:цитирование и избежать из командной SSH линии
$ echo -e ssh -q rmthost 'bash -c "ps -ef|grep '\'''\\\<'defunct'\\\>''\''|grep -v grep|awk '\'''{print \$1}''\'' "'
ssh -q sbpsvrwm757 bash -c "ps -ef|grep '\<defunct\>'|grep -v grep|awk '{print $1}' "
, но при выполнении, то результат не то, что ожидается:
$ ssh -q rmthost 'bash -c "ps -ef|grep '\'''\\\<'defunct'\\\>''\''|grep -v grep|awk '\'''{print \$1}''\'' "'
root16986 16982 0 - ? 0:01 <defunct>
AWK команда Didn Кажется, чтобы извлечь правую колонку.
Теперь я последовал за ссылку, предоставленную Siguza и придумал:
$ echo ssh -q rmthost "'"bash -c '"ps -ef|grep '"'\<defunct\>'|grep -v grep|awk '{print \$1}'"'"'"'"
ssh -q rmthost 'bash -c "ps -ef|grep '\<defunct\>'|grep -v grep|awk '{print $1}'"'
, который выглядит совершенно сбежавшего тоже, но все еще не работает:
$ ssh -q rmthost "'"bash -c '"ps -ef|grep '"'\<defunct\>'|grep -v grep|awk '{print \$1}'"'"'"'"
Missing }
или,
$ echo ssh -q rmthost bash -c '"ps -ef|grep '"'\<defunct\>'|grep -v grep|awk '{print \$1}'"'"'
ssh -q rmthost bash -c "ps -ef|grep '\<defunct\>'|grep -v grep|awk '{print $1}'"
$ ssh -q rmthost bash -c '"ps -ef|grep '"'\<defunct\>'|grep -v grep|awk '{print \$1}'"'"'
root 16986 16982 0 - ? 0:01 <defunct>
или,
$ echo ssh -q rmthost "bash -c \"ps -ef |grep '\<defunct\>'|grep -v grep| awk '{print \$1}'\""
ssh -q rmthost bash -c "ps -ef |grep '\<defunct\>'|grep -v grep| awk '{print $1}'"
$ ssh -q rmthost "bash -c \"ps -ef |grep '\<defunct\>'|grep -v grep| awk '{print \$1}'\""
root 16986 16982 0 - ? 0:01 <defunct>
любая идея почему?
Обратите внимание, что мне нужно bash -c, чтобы включить перенаправление вывода в стиле bash как> /var/tmp/1.ouy 2> & 1 для команды.
Ваша помощь приветствуется.
Спасибо. Я следую этому правилу, но все равно не могу заставить его работать. см. обновление выше – AlexL
Что не так с 'ssh rmthost" ps -ef | grep \ "\ \" | grep -v grep | awk '{print \ $ 1}' "' - или я что-то упустил? т. е. путем переноса аргумента в ssh в двойных кавычках, вы избегаете всей неловкости. –
Также 'bash -c' избыточен здесь. ssh отправит командную строку в оболочку, которая сохранит вам весь уровень экранирования. –