Estou tentando criar um script que se conecte a vários servidores e execute um comando, rotule a coluna de saída com o nome do host e classifique-os dependendo do nome do processo (dinâmico, alguns servidores terão processos diferentes em execução, viu nome bruto expandirá dependendo disso), mas o nome bruto é o nome do processo e a coluna é o host com o núcleo em que o processo está sendo executado.
Eu comecei com o seguinte, que se conecta a todos os hosts e pega a saída em uma tela
#!/bin/bash
for ssh_host in $(cat ssh_hosts.txt)
do
echo $ssh_host
ssh -q $ssh_host 'ps -eo pid,comm,lastcpu'
done
A saída de um único host
hosttest1:
PID COMMAND C
1 init 0
2 kthreadd 1
3 migration/0 0
4 ksoftirqd/0 0
5 stopper/0 0
6 watchdog/0 0
7 migration/1 1
8 stopper/1 1
9 ksoftirqd/1 1
10 watchdog/1 1
11 migration/2 2
12 stopper/2 2
13 ksoftirqd/2 2
14 watchdog/2 2
15 migration/3 3
16 stopper/3 3
17 ksoftirqd/3 3
18 watchdog/3 3
19 migration/4 4
20 stopper/4 4
21 ksoftirqd/4 4
22 watchdog/4 4
23 migration/5 5
24 stopper/5 5
25 ksoftirqd/5 5
26 watchdog/5 5
27 migration/6 6
28 stopper/6 6
29 ksoftirqd/6 6
30 watchdog/6 6
31 migration/7 7
32 stopper/7 7
33 ksoftirqd/7 7
Estou interessado em
hosttest1
COMMAND = ProcessName
C = Process Core
O arquivo de saída final, ele irá mesclar todos os dados de todos os servidores para este formato
o 0, 1, 2,3 .... 23 são os núcleos da CPU
command hosttest1 hosttest2 hosttest3 ...... hosttest100
init 0 0 9
kthreadd 1 2 3
stopper 0 1
watchdog 0 1
migration 1 3
stopper 1 10 3
migration 2 1
stopper 2 2
ksoftirqd 2 3
watchdog 3 2
migration 4
ksoftirqd 5
watchdog 5
stopper 7 2
ksoftirqd 7 23
.
.
DynamicApendNewCmd
Tags ssh linux scripting shell-script