Saludos amigos estoy creando un script que debe ejecutarse como usuario zimbra el problema es que no logro hacer que en el script ejecute su - zimbra y luego si inicie la secuencia de ordenes, tengo el script y me toca correrlo manualmente porque debe ser ejecutado con usuario zimbra.
Gracias a todos
Script automático con usuario Zimbra
- pup_seba
- Outstanding Member
- Posts: 687
- Joined: Sat Sep 13, 2014 2:43 am
- Location: Tarragona - Spain
- Contact:
Re: Script automático con usuario Zimbra
Hola,
Prueba con:
$ su - zimbra -c 'comando que quieras'
Prueba con:
$ su - zimbra -c 'comando que quieras'
Re: Script automático con usuario Zimbra
Gracias el.problema es que hay un for antes del comando que deseo ejecutar
- pup_seba
- Outstanding Member
- Posts: 687
- Joined: Sat Sep 13, 2014 2:43 am
- Location: Tarragona - Spain
- Contact:
Re: Script automático con usuario Zimbra
Igual si compartes el script es más fácil de entender porque no veo dónde está el problema. Un "for" no hace que cambie la sintaxis del "su". Suponiendo que uses bash sería por ejemplo así:
$ for i in ls ; do su - zimbra -c "comando que quieras de zimbra" ; done
Haciéndolo así hasta carga las variables de entorno del usuario zimbra que se aplican durante la ejecución (cosa que no pasa por ejemplo con el become_user en ansible).
$ for i in ls ; do su - zimbra -c "comando que quieras de zimbra" ; done
Haciéndolo así hasta carga las variables de entorno del usuario zimbra que se aplican durante la ejecución (cosa que no pasa por ejemplo con el become_user en ansible).
Re: Script automático con usuario Zimbra
Gracias aquí el script
#!/bin/bash
if [ $USER = 'zimbra' ]; then
for i in `zmprov -l gaa`
do
echo ;
echo Preparando la cuenta $i para ser copiada ...;
mb_size=`zmmailbox -z -m $i gms`;
echo Tamano de la cuenta: $mb_size ...;
echo Iniciamos a copiar la cuenta $i ...;
zmmailbox -z -m $i getRestURL "//?fmt=tgz" > /home/backupzimbra/$i.tgz
echo Cuenta $i copiada exitosamente!;
done
echo Fin del script.;
else
echo Ejecute este script como usuario zimbra.
#!/bin/bash
if [ $USER = 'zimbra' ]; then
for i in `zmprov -l gaa`
do
echo ;
echo Preparando la cuenta $i para ser copiada ...;
mb_size=`zmmailbox -z -m $i gms`;
echo Tamano de la cuenta: $mb_size ...;
echo Iniciamos a copiar la cuenta $i ...;
zmmailbox -z -m $i getRestURL "//?fmt=tgz" > /home/backupzimbra/$i.tgz
echo Cuenta $i copiada exitosamente!;
done
echo Fin del script.;
else
echo Ejecute este script como usuario zimbra.
- pup_seba
- Outstanding Member
- Posts: 687
- Joined: Sat Sep 13, 2014 2:43 am
- Location: Tarragona - Spain
- Contact:
Re: Script automático con usuario Zimbra
Suponiendo que ese script que me pasas se llame "backup_mailboxes.sh", lo que se me ocurre es que tengas otro script que lo llame, por ejemplo:
lanza_backup.sh:
#!/bin/bash
su - zimbra -c './lanza_backup.sh'
Te serviría eso? Incluso si te quieres poner fino puedes ponerle un "whoami" al principio por si quieres asegurarte que se lance como root para que pueda hacer el "su - zimbra" sin problemas o puedas hacer otras cosas que requieran más permisos que los del usuario zimbra. "lanza_backup.sh" quedaría así:
#!/bin/bash
if [ "$EUID" -ne 0 ]
then echo "Ejecutar como root"
exit
fi
su - zimbra -c './lanza_backup.sh'
Saludos,
lanza_backup.sh:
#!/bin/bash
su - zimbra -c './lanza_backup.sh'
Te serviría eso? Incluso si te quieres poner fino puedes ponerle un "whoami" al principio por si quieres asegurarte que se lance como root para que pueda hacer el "su - zimbra" sin problemas o puedas hacer otras cosas que requieran más permisos que los del usuario zimbra. "lanza_backup.sh" quedaría así:
#!/bin/bash
if [ "$EUID" -ne 0 ]
then echo "Ejecutar como root"
exit
fi
su - zimbra -c './lanza_backup.sh'
Saludos,
{Solucionado} Re: Script automático con usuario Zimbra
Muchas gracias funciono a la perfección.