Script Simple Shell para registrar o espaço em disco

4

Estou trabalhando para automatizar a coleta de espaço em disco em um grupo de servidores.

Em um terminal padrão, se eu executar:

ssh server1 ssh server2 df -h 

Então eu recebo a saída do comando, muito bem.

No entanto, se eu tentar esse método de dentro de um script usando um For Loop. Então isso falha.

Exemplo de script:

#!/bin/bash

GROUP="server1 server2"

for s in $GROUP; do 
    ssh bastion1 ssh ${s} df -h
done

No último exemplo, não recebo saída (ou erros). Eu tentei vários escapando e citando, mas ainda sem sorte ... Eu tenho a sensação de que é algo descaradamente óbvio que estou negligenciando. Alguma ponteira?

    
por Awhitehatter 19.03.2013 / 23:56

2 respostas

1

Você tem dois métodos

Método 1:

Groups="server1 server2"
echo $Groups | xargs -n1 |  xargs  -I'{}' echo ssh '{}' df

Nota: - Se a saída é boa do comando acima, então basta remover echo no último, em seguida, ele irá executar comandos em servidores remotos. não use variável no CAPS porque é usado para variável de ambiente

Método 2:

Você pode consultar abaixo o script

#!/bin/bash
# ssh password less login is required

# mention below remote server seperated by space

remote_srv=( 127.0.0.1 127.0.0.2 127.0.0.3 )

do_ssh() {
    ssh $s "$@"
    echo -e
}

header() {
    echo "#==================={$@}==========================#"
}

n=${#remote_srv[@]} # number of ip's in array

for (( i=0;i<$n;i++)); do
            echo -e
            echo "$(tput bold)$(tput setaf 2)* Connected Server: ${remote_srv[$i]}  @@ $(date) @@"
            echo "* Fetching info...$(tput sgr 0)"
            s=${remote_srv[$i]}

            header "Memory Usage"
            do_ssh free -m

            header "Disk Usage"
            do_ssh df -h
done

## EOF
    
por 20.03.2013 / 04:07
0

O UNIX tem uma solução melhor para você, você não precisa executar o ssh e executar o df ou du ou etc ...

você pode usar tmux command no servidor e fechar sessões, mas você não fechou seus programas se abrir via tmux . tmux funciona como o comando screen, mas é muito complexo e útil.

    
por 20.03.2013 / 19:35