Ssh se sale (break) de un ciclo (loop) en un script bash
Introducción
Uso Rsync time backup para algunos proyectos, pero el caso de uno en particular con más de 8TB de ficheros a mantener en backup, y con múltiples usuarios, prefiero usar una estrategia de copia de seguridad por usuario.
Cuando programé el script bash rápido para hacer este trabajo, me encontré que la finalización del script se alcanzaba tras leer el completar la primera copia de seguridad.
Tras finalizar correctamente el proceso de sincronización.
El problema es que ssh lee desde la entrada estándar, por lo tanto, se come todas las líneas restantes.
Solución al problema en ssh
ssh $USER@$SERVER "COMMAND_IN_REMOTE" < /dev/null
También podemos usar ssh -n
en lugar de la redirección a ninguna parte.
-n' Redirects stdin from /dev/null (actually, prevents reading from stdin). This must be used when ssh is run in the background. A common trick is to use this to run X11 programs on a remote machine. For example, ssh -n shadows.cs.hut.fi emacs & will start an emacs on shadows.cs.hut.fi, and the X11 connection will be automatically forwarded over an encrypted channel. The ssh program will be put in the background. (This does not work if ssh needs to ask for a password or passphrase; see also the -f option.)
Solución en Rsync time backup
En este software no hay posibilidad de modificar o usar el parámetro -n asi que solo se puede hacer via redirección a ninguna parte < /dev/null
while IFS= read -r line
do
case $line in
appdata_ociz9efdik2y|transmission-daemon|updater-ociz9efdik2y)
continue
;;
*)
echo "$line"
/srv/mypath/diwan/rsync-time-backup/rsync_tmbackup.sh --rsync-set-flags "-D -zz --numeric-ids --links --hard-links -rlt --no-perms --no-group --no-owner --itemize-changes" --strate
gy "1:1 7:7 30:30" -p 9999 root@mypath.domain.net:/data/"$line" /srv/storage/mypath/rsync/"$line" < /dev/null
;;
esac
done < "$input"
Agradecimientos
- ssh breaks out of while-loop in bash - duplicate
- While loop stops reading after the first line in Bash
- ssh(1) - Linux man page
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
No Comments