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)
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á ...