Script para ver / mysqlshare está presente em todos os servidores de listas, fazendo apenas a primeira iteração

1

Eu preciso de obter /mysqlshare detalhes de todos os servidores MySQL. Eu escrevi um script usando um while read loop, mas está obtendo os detalhes apenas do primeiro servidor,

#!/bin/ksh
file="/home/mysqladm/server_list/server_list.txt"
# while loop
while IFS= read -r a
do
        # display line or do something on $line
        output='ssh $a df -h | grep mysqlshare'
#echo $a,$output
echo $a ,$output >> /home/mysqladm/server_list/output.txt
done < "$file"

Eu tenho o arquivo server_list.txt no qual existem dois servidores,

server_name1,
server_name2,

está indo para server_name1 e fazendo df -h e saindo do script. Por que o loop não está funcionando?

    
por harinath 16.12.2015 / 07:06

1 resposta

0

O SSH tenta ler todo o stdin restante, então quebra o loop. Você precisa conectar seu stdin a null com < /dev/null ou fazer algo assim.

Aqui está como eu escreveria script para conseguir isso:

#!/bin/bash
IFS=,
file=servers.txt
logfile=log.txt
while read server
do
        ssh $server<<<"df -h | grep mysqlshare" 2>&1>>$logfile
done < $file
    
por 16.12.2015 / 09:46