Pergunta

Eu tenho um script que se conecta a um servidor usando ssh. Enquanto em um loop, ele não consegue se conectar ao servidor segundo após a conexão com o primeiro. Eu acho que eu tenho que sair desse servidor para voltar para o script de chamada. Como faço para sair da sessão ssh?

while read dbname myip
do
ssh root@$myip "mysqldump - some command " | mysql -hhost -u -p myLocalDatabase > /dev/null 2>&1
done << iplist
db1 111.111.111.111
xyz 222.222.222.222
iplist
Foi útil?

Solução

redirecionamento stdin para / dev / null

while  read -r dbname myip
do
 0</dev/null ssh ...... <whatever> .........
done < "iplist"

Outras dicas

Em um nível ligeiramente superior de abstração, você pode estar interessado em, por exemplo Chef :

Chef é um framework de integração de sistemas, construídos para levar os benefícios do gerenciamento de configuração para toda a sua infra-estrutura. Com Chef, você pode:

  • Gerencie seus servidores escrevendo código, não executando comandos. (Via Cookbooks)
  • Integrar firmemente com suas aplicações, bancos de dados, diretórios LDAP, e muito mais. (Via Bibliotecas)
  • aplicações configurar facilmente que requerem conhecimento sobre toda a sua infra-estrutura ( "Que sistemas estão executando o meu pedido?" "O ??que é o servidor de banco de dados mestre atual?")

Se você quiser emitir o mesmo comando em vários hosts SSH, você pode usar DSH :

DSH é uma implementação de um invólucro para a execução de shell remoto múltipla (rsh / remsh / ssh) comandos.

Se você não tem espaço em branco nas linhas de arquivo "dbname", você pode usar isto:

for myip in $(cat dbname); do
   ...
done

(ou o uso de tecido: http://docs.fabfile.org/en/latest/)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top