Reputation: 19
i wrote the following bash script
#!/bin/bash
serverlist=server_list.txt
for server in `cat $serverlist`
do
out="hostnamectl | egrep 'Kernel|Server|hostname';who -b"
ssh -q $server $out
and I get the following output ~
Static hostname: mshost25
Operating System: Red Hat Enterprise Linux Server 7.9 (Maipo)
Kernel: Linux 3.10.0-1160.31.1.el7.x86_64
system boot 2021-06-24 11:42
I would like the output to be in columns
Static hostname Operating System Kernel: sytem boot
mypc1 Linux Server 7.9 Linux 3.10.0-1160.31.1.el7.x86_64 2021-06-24 11:33
Upvotes: 1
Views: 338
Reputation: 424
here is my attempt to print in columns and worked for me. Can you try this code and inform me?
I treated your output as output.txt;
$ cat output.txt
Static hostname: mshost25
Operating System: Red Hat Enterprise Linux Server 7.9 (Maipo)
Kernel: Linux 3.10.0-1160.31.1.el7.x86_64
system boot 2021-06-24 11:42
here is the code;
sed 's/boot/boot:/' output.txt | awk -F": " '
{
for (i=1; i<=NF; i++) {a[NR,i] = $i}
}
NF>p { p = NF }
END { for(j=1; j<=p; j++) {
str=a[1,j]
for(i=2; i<=NR; i++) {str=str"\t\t"a[i,j];} print str}
}' | column -s $'\t' -t
my output for this code;
Static hostname Operating System Kernel system boot
mshost25 Red Hat Enterprise Linux Server 7.9 (Maipo) Linux 3.10.0-1160.31.1.el7.x86_64 2021-06-24 11:42
Code is basically consists of three section:
:
after word boot
in order to further process it as a delimiter in awk
section. https://askubuntu.com/a/879323Upvotes: 1