Pregunta

Tengo un script que se conecta a un servidor usando ssh . Mientras está en un bucle, falla al conectarse al segundo servidor después de conectarse al primero. Supongo que tengo que salir de ese servidor para volver al script de llamada. ¿Cómo salgo de la sesión 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
¿Fue útil?

Solución

redireccionar stdin a / dev / null

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

Otros consejos

En un nivel ligeramente más alto de abstracción, puede interesarte, por ejemplo, Chef :

  

Chef es un marco de integración de sistemas, creado para brindar los beneficios de la administración de la configuración a toda su infraestructura. Con Chef, puedes:

     
      
  • Administre sus servidores escribiendo código, no ejecutando comandos. (a través de libros de cocina)
  •   
  • Integre integradamente con sus aplicaciones, bases de datos, directorios LDAP y más. (a través de bibliotecas)
  •   
  • Configure fácilmente las aplicaciones que requieren conocimiento sobre su infraestructura completa (" ¿Qué sistemas ejecutan mi aplicación? " " ¿Cuál es el servidor de base de datos principal actual? ")
  •   

Si desea emitir el mismo comando en varios hosts SSH, puede usar DSH :

  

dsh es una implementación de un contenedor para ejecutar varios comandos remotos de shell (rsh / remsh / ssh).

Si no tiene espacios en blanco en las líneas del archivo "dbname", puede usar esto:

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

(o use fabric: http://docs.fabfile.org/en/latest/)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top