Как направить вывод сценария linux bash на одну строку для каждого хоста - PullRequest
0 голосов
/ 23 октября 2019

Я бы хотел изменить свои сценарии, чтобы вывод команды отделялся запятой и находился в одной строке на хосте. Любые идеи о том, как я могу добиться этого:

1-й сценарий:

#!/bin/bash
for i in `cat ~/hostnames.txt`
do
        ssh -q $i 'bash -s' < server_info.sh
done

2-й сценарий (server_info.sh):

#!/bin/bash
echo -n "Name: "
uname -n
echo -n "CPUs: "
cat /proc/cpuinfo* | grep processor | wc -l
echo -n "Memory (kb): "
cat /proc/meminfo | grep MemTotal: | awk '{print $2}'
echo -n "Current Kernel: "
uname -a | awk '{print $3}'
echo -n "IP: "
hostname -i
echo -e

1 Ответ

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

Изменение вашего 1st script:

#!/bin/bash
for i in cat ~/hostnames.txt
do
        ssh -q $i 'bash -s' < server_info.sh 
done | awk -v RS= '{$1=$1}1'

Примечание: ваш server_info.sh может быть намного более оптимизирован. Например:

cat /proc/meminfo | grep MemTotal: | awk '{print $2}'

может быть изменен на:

awk '/MemTotal:/{print $2}' /proc/meminfo 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...