Intereting Posts
Создание временного файла vs подстановка процесса и расширение переменной? Использование sed (или что-нибудь полезное) для замены строк относительным содержимым восстановить lvm после потери таблицы разделов В Debian, какой пакет отвечает за создание / etc / default / grub? Можем ли мы получить информацию о компиляторе из двоичного файла эльфа? bash не изменяет размер в интерактивном контейнере Docker Открытый файл размера блока NFS Маршрутизировать весь HTTP-трафик через polipo GNU / Linux: как определить сопоставления жесткого диска? Как автоматически изменить фон терминала на основе имени ssh? Есть ли способ перенаправить запросы от foo.com на виртуальную машину на этом сервере? изменить формат даты и сохранить в переменной с помощью awk OpenBSD, NVIDIA и Xorg Как найти файл в пакетах apk Каков наиболее эффективный способ регистрации ошибок сценария оболочки crontab с ошибкой?

SSH дважды и запустить команду, экранируя символ?

Я могу получить желаемый результат, выполнив эту команду на терминале:

top -bn 1 | grep "^ " | awk '{ printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s\n", $1, $2, $9, $10, $6, $11, $12); }' | head -n 6 

И я могу SSH дважды и получить имя хоста, запустив это на терминале:

 ssh 192.168.5.209 "ssh 192.168.5.210 exec \"hostname\"" 

209 работает как что-то вроде портала, поэтому я могу только SSH от 209 до 210. Но проблема в том, как заменить «hostname» на верхнюю команду, которую я пишу выше? Слишком много специальных символов.

Я пишу сценарий для выполнения из PHP.

grep, awk и head могут быть объединены и выполняться локально

  ssh 192.168.5.209 "ssh 192.168.5.210 top -bn 1 " | awk '/^ / { printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s\n", $1, $2, $9, $10, $6, $11, $12); c++ ; if (c==6) exit ;} 

где

  • /^ / поиск строки, начинающейся с пробела
  • c++ ; if (c==6) exit ; выйдет из awk после 6 строк.