manejo de inicio de sesión en un script de respaldo automatizado
Pregunta
Necesito escribir un script de shell para que se programe para ejecutarse diariamente para hacer una copia de seguridad de un directorio usando mercurial. He realizado la mayoría de los casos de uso, excepto que puedo encontrar una manera de iniciar sesión automáticamente mientras se ejecuta el script.
for REPOSITORY in $@
do
cd $REPOSITORY
# commit the changes
hg commit -A -m "Commit changes `date`"
# push the changes to the remote repository
if hg push
then
logger hg push success
else
logger hg push failure
fi
done
la solicitud de inicio de sesión se muestra después de emitir el comando hg push.
Solución
Mercurial le permite poner el nombre de usuario y la contraseña en la URL del repositorio:
hg push http://username:password@hg.myco.com/repo
Si no desea poner la URL en la línea de comando, puede editar el hgrc
para el repositorio local y coloque el nombre de usuario y la contraseña en la URL default-push
:
default-push = http://username:password@hg.myco.com/repo
Esto significa que cualquier hg push
usará el nombre de usuario especificado en el archivo hgrc
.
Otros consejos
Acepto que debe configurar su script de respaldo para inicios de sesión no interactivos. Una forma es usar claves SSH y una solución más simple es incluir la contraseña directamente en la URL.
Mercurial 1.3 hace que sea mucho más fácil incluir contraseñas HTTP en sus archivos de configuración. Ahora tengo un
[auth]
bb.prefix = https://bitbucket.org/mg/
bb.username = mg
bb.password = pw
en mi archivo de configuración. Esto significa que puede evitar almacenar sus contraseñas en varios archivos y solo concentrarse en asegurar un archivo.
De hecho, estoy usando otra función nueva para evitar poner la contraseña en ~ / .hgrc
, ya que es posible que desee mostrar ese archivo a otros. En cambio tengo
%include .hgauth
en ~ / .hgrc
y ~ / .hgauth
tiene la sección [auth]
anterior y solo yo puedo leerla.