uptime Script help [closed]

2

Estou procurando criar um script que faça login em vários servidores usando um arquivo host e execute uptime, hostname -I e hostname

Script até agora

echo"" ; 
echo "hostname:" $(ssh $HOST hostname) ;
echo "IP:" $(ssh $HOST hostname -I) ;
echo "uptime" $(ssh $HOST uptime) ;
echo"" ;

Qual seria a melhor maneira de alcançar meu objetivo?

    
por jabur 10.08.2018 / 22:47

2 respostas

1

Supondo que você queira apenas todas as saídas no terminal:

#!/bin/bash

hosts_file=/path/to/file
username=youruser

while read -r host; do
    hostname=$(ssh "${username}@${host}" hostname)
    ip_addr=$(ssh "${username}@${host}" hostname -I)
    uptime=$(ssh "${username}@${host}" uptime)
    echo
    {
        echo "Hostname:?$hostname"
        echo "IP:?$ip_addr"
        echo "uptime:?$uptime"
    } | column -s\? -t
    echo
done <"$hosts_file"

Isto irá percorrer cada linha do seu arquivo_hosts, atribuindo a linha inteira a host . Em seguida, ele definirá os hostname , ip_addr e uptime para os resultados correspondentes na máquina remota. Em seguida, ele repetirá esses resultados em um formato em colunas.

    
por 10.08.2018 / 23:20
0

Tente (supondo que seus hosts em hostlist tenham uma configuração de autenticação correta)

while read HOST
  do { read HN; read IP; read UP; printf "hostname: %s\nIP: %s\nuptime: %s\n" "$HN" "$IP" "$UP"; } <<< "$(ssh $HOST  "hostname; hostname -I; uptime")"
  done < hostlist
    
por 10.08.2018 / 23:32