Execute o script em vários hosts [duplicado]

0

Eu tenho abaixo o script que cria a lista de usuários e também filtra o arquivo ignore.txt para ignorar nomes de usuários correspondentes. Eu gostaria de executar este script em vários hosts como hostA, hostB, hostC. Como se eu corresse em um servidor, ele deveria rodar em outros 4 servidores e obter a saída e enviá-la pelo correio.

#!/bin/sh
(
echo List of users in PRD 
echo
date
echo
grep -wvf ignore.txt /etc/passwd | awk -F: -v OFS=: '{print $1,$3,$5}' | sort 
) | tee "$(hostname)"_userlogins.txt |
mailx -s file [email protected]

Por favor, informe, eu sou novo neste mundo de script.

    
por Zaira Zareena 24.04.2015 / 06:32

1 resposta

2

Tente usar o pdsh. Muitos exemplos estão disponíveis na página do projeto

Se você gosta de usar um script bash simples:

#!/bin/bash
HOSTS="host1 host2 host3"
USER=root
CMD="ls"
for host in $HOST; do
  ssh ${USER}:{$host} "$CMD"
done

Em todos os casos, você precisaria ajustar a autenticação sem senha usando as chaves e anexar ao comando ssh : -i /path/to/key

Exemplo para usar:

#!/bin/bash
HOSTS="host1 host2"
N=1
FILE=report.txt
echo "List of users in PRD" > $FILE
date >> $FILE

for host in $HOSTS; do
  ssh $host -l root cat /etc/passwd|cut -d ':' -f 1 >/tmp/temp 2>/dev/null
  echo "====host $host====" >> $FILE
  cat /tmp/temp | tail -n +$N |grep -wvf ignore.txt|sort >> $FILE
done

rm -f /tmp/temp

#mailx -s $FILE [email protected]
    
por 24.04.2015 / 06:52