Добавление имени хоста удаленного сервера в отформатированный ответ команды ssh - PullRequest
0 голосов
/ 23 октября 2018

Если я запускаю эту команду напрямую (через терминал ssh) на удаленном сервере REHL: w -uh | awk -vhostname="$(hostname)" '{print "On "hostname ,$1,"is connected with IP: "$3} '

Я получаю вывод, подобный этому:

Вклимя учетной записи remote.server1.address.com связано с IP: 8.8.8.8

Однако, если я запускаю эту команду удаленно с помощью команд SSH в сценарии (для проверки нескольких серверов): ssh account@remote.server.address.com w -uh | awk -vhostname="$(hostname)" '{print "On "hostname ,$1,"is connected with IP: "$3} '

В результате выполнения команды вместо имени удаленного сервера будет указано имя хоста локального компьютера:

На local.machine.address.com имя учетной записи связано с IP: 8.8.8.8

На local.machine.address.com имя учетной записи связано с IP: 0.0.0.0

На local.machine.address.com имя учетной записи связано с IP: 255.255.255.255 *

Я ищу результат, как показано ниже.

На remote.server1.address.com имя учетной записи связано с IP: 8.8.8.8

На удаленномИмя учетной записи .server2.address.com связано с IP-адресом: 0.0.0.0

При удаленном доступе к учетной записи remote.server3.address.comtname связан с IP: 255.255.255.255 *

1 Ответ

0 голосов
/ 23 октября 2018

Это происходит потому, что команда hostname выполняется на вашем локальном компьютере.Вам нужно передать всю команду в кавычках, таких как:

ssh account@remote.server.address.com "w -uh | awk -v hostname=\$(hostname) '{print \"On \"hostname ,\$1,\"is connected with IP: \"\$3}'"
...