Cron ftp

Alguien tiene algún cron que verifique cada cierto tiempo (15 minutos) si existe un archivo en algún directorio y si existe realizar un ftp para enviarlo a otra maquina (hay que tener en cuenta que el ftp puede demorarse más que el cron y por lo tanto no debe volver a realizar ftp sobre el archivo que ya se esta enviando)

1 Respuesta

Respuesta
1
Con el comando crontab te defines la ejecución cada cuarto de hora del script que te mando a continuación. Teniendo como variable de entorno EDITOR=vi, haces:
$ crontab -e
e insertas la línea:
0,15,30,45 * * * 1-5 /export/home/user1/copia.sh
De esta forma el script copia. Sh que está en /export/home/user1 se ejecuta cada cuarto de hora de lunesa a viernes.
El script copia.sh sería:
#!/usr/bin/ksh
# Se comprueba si existe el fichero f en /export/home/user1/prueba, en cuyo caso se
# copia por ftp a la máquina maq2 con el usuario user2 cuya password es clave al directorio
# /export/home/user2/prueba
if [ -f /export/home/user1/prueba/f ]
then
# Si existe .netrc, lo renombro temporalmente
mv .netrc .netrc.old 2> /dev/null
# Creo fichero .netrc para el ftp automático
cat > .netrc << EOF
machine maq2 login user2 password clave
macdef sendascii
Ascii
put $1 $2
Quit
Macdef sendbin
bin
put $1 $2
Quit
EOF
# Si el fichero a copiar por ftp es ASCII:
echo "\$sendascii /export/home/user1/prueba/f /export/home/user2/prueba/f" | ftp -i maq2
# Si el fichero a copiar por ftp es binario:
# echo "\$sendbin /export/home/user1/prueba/f /export/home/user2/prueba/f" | ftp -i maq2
# Borro el fichero .netrc
rm .netrc
# Si existía .netrc, lo restauro
mv .netrc.old .netrc 2> /dev/null
# Borro el fichero que acabo de copiar
rm /export/home/user1/prueba/f
Fi
La clave de este script es el fichero .netrc (en el $HOME del usuario) que permite definir unas macros y hace un ftp a la máquina configurada.
Hola
Gracias por la respuesta. Me podrías aclarar lo siguiente:
Como hago sino se el nombre del archivo que me va a llegar (en tu caso f) para hacer la transmisión
Gracias
Sería muy parecido pero usando mput y prompt:
El script copia. Sh sería:
#!/usr/bin/ksh
# Se comprueba si existe el fichero en /export/home/user1/prueba, en cuyo caso se
# copia por ftp a la máquina maq2 con el usuario user2 cuya password es clave al directorio
# /export/home/user2/prueba
# Primero compruebo si hay algún fichero en /export/home/users/prueba
N=`find /export/home/user1/prueba -type f`
if [ $N -ne 0 ]
then
# Si existe .netrc, lo renombro temporalmente
mv .netrc .netrc.old 2> /dev/null
# Creo fichero .netrc para el ftp automático
cat > .netrc << EOF
machine maq2 login user2 password clave
macdef msendascii
ascii
cd /export/home/user2/prueba
prompt
mput $1
quit
macdef msendbin
bin
cd /export/home/user2/prueba
prompt
mput $1
quit
EOF
# Si el fichero a copiar por ftp es ASCII:
echo "\$msendascii /export/home/user1/prueba/*" | ftp -i maq2
# Si el fichero a copiar por ftp es binario:
# echo "\$msendbin /export/home/user1/prueba/*" | ftp -i maq2
# Borro el fichero .netrc
rm .netrc
# Si existía .netrc, lo restauro
mv .netrc.old .netrc 2> /dev/null
# Borro el fichero que acabo de copiar
rm /export/home/user1/prueba/*
Fi
Y ya está ...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas