Resultados 1 al 5 de 5

Tema: Dudas en bash script

  1. #1 Dudas en bash script 
    Avanzado
    Fecha de ingreso
    Sep 2004
    Ubicación
    Me in the middle
    Mensajes
    375
    Descargas
    2
    Uploads
    0
    buenas, estoy haciendo un script para que copie un fichero de una maquina (mediante scp), el problema viene cuando el archivo no siempre es el mismo, sino que... por ejemplo el fichero1.bd llega a 2gb y pasa a fichero2.bd, el cual se ira llenando hasta llegar a 2gb y asi sucesivamente

    yo tengo que desde el script entrar por ssh al servidor, hacer un bucle que lea el ultimo digito del fichero

    Código:
    fichero$num.bd
    y compare cada 1 con su tamaño, cuando el tamaño sea 0, resta 1 a $num y lo guarda para que el scp lo use para copiar

    yo hice esto:

    Código:
    num=0
    archivo=0
    #lee el tamaño del fichero
    archivo=`du -s /home/ancabi/f$num.txt | awk '{print $1}'`
    while [ $archivo=0 ]; do
    #incrementa 1 a num
    let num=$num+1
    archivo=`du -s /home/ancabi/f$num.txt | awk '{print $1}'`
    done
    echo $archivo
    echo $num
    cuando lo ejecuto lo hace bien pero claro, antes de llegar al done, el du busca f3.txt y no lo encuentra, pasa a f4.txt y no lo encuentra y se crea un bucle infinito que incrementa num y no encuentra el fichero

    pero f2.txt el tamaño es 0, por lo cual el while deberia de para pero no lo hace

    intente explicarme lo mejor posible

    saludos
    "Las repisas que corroen el saber de la zanahoria, estan estimulando e instituyendo a los colombos de la epoca..."
    Citar  
     

  2. #2  
    Moderador Global
    Fecha de ingreso
    Aug 2005
    Mensajes
    6.279
    Descargas
    7
    Uploads
    0
    Lo que necesitas es comprobar que el archivo existe. Con test puedes hacerlo.

    A ver, si lo he entendido bien, dados los archivos:

    $ ls .
    f1.db f2.db f3.db
    y siendo sus tamaños
    Código:
    $ du -s *
    4       f1.txt
    4       f2.txt
    0       f3.txt
    lo que quieres es copiar f2.txt ?

    Salu2

    . . . . . . . . . . . . . . . . . . . .
    [[ NORMAS DEL FORO ]]
    . . . . . . . . . . . . . . . . . . . .
    __________
    Citar  
     

  3. #3  
    Moderador Global
    Fecha de ingreso
    Aug 2005
    Mensajes
    6.279
    Descargas
    7
    Uploads
    0
    Bueno, pues supongo que es eso lo que quieres hacer. Así que, suponiendo que tienes acceso por ssh a ambos hosts:

    Código:
    echo '
    num=0
    
    while [ -r \'f\'$((++num))\'.db\' ]; do
      if [[ `du \'f\'$num\'.db\'|cut -f1` == 0 ]]; then
        archivo=\'f\'$((--num))\'.db\'
        break
      fi
    done
    
    scp $archivo yo@maquina_uno:/destino
    ' > checker.sh
    
    chmod +x checker.sh
    
    scp checker yo@maquina_dos:/directorio/con/los/archivos
    
    ssh yo@maquina_uno /directorio/con/los/archivos/checker.sh
    Por supuesto no está probado

    Salu2

    . . . . . . . . . . . . . . . . . . . .
    [[ NORMAS DEL FORO ]]
    . . . . . . . . . . . . . . . . . . . .
    __________
    Citar  
     

  4. #4  
    Avanzado
    Fecha de ingreso
    Sep 2004
    Ubicación
    Me in the middle
    Mensajes
    375
    Descargas
    2
    Uploads
    0
    no me habria salido nunca, efectivamente quiero copiar f2.txt, asiq me imagino que estara bien con el unico problema de que la maquina que tiene los archivos es un windows, por lo tanto el checker.sh no lo puedo copiar alla para ejecutarlo no? deberia hacerlo en el batch de windows o hay alguna forma de que desde mi linux lo pueda ir ejecutando? es en LAN asiq velocidad hay...

    lo siento por ese detalle que me olvide

    Saludos
    "Las repisas que corroen el saber de la zanahoria, estan estimulando e instituyendo a los colombos de la epoca..."
    Citar  
     

  5. #5  
    Avanzado
    Fecha de ingreso
    Sep 2004
    Ubicación
    Me in the middle
    Mensajes
    375
    Descargas
    2
    Uploads
    0
    al final lo hice con comando del DOS y tambien lo encare de otra manera, en vez de leer el nombre comparar el tamaño y demas, lo que hace es copiar a otra carpeta los archivos modificados ese mismo dia, por lo tanto los que ya estan completos no los copia, sino el que se va llenando y arregla el problema de que si uno en el medio del dia y empieza uno nuevo...

    para que sea automatico puse %DATE% asi solo pide la fecha de cada dia, lo comprime, el bzip2 solo borra el source por lo tanto en la carpeta solo queda lo comprimido, copia por ssh al servidor y borra la carpeta, aca dejo el codigo por si sirve de algo

    Código:
    xcopy c:\origen\* c:\destino /d:%DATE% /y
    
    bzip2 c:\destino\*
    
    scp -P 8100 /cygdrive/c/destino/* copia@192.168.2.8:/home/copia
    
    del c:\destino\* /q
    saludos
    "Las repisas que corroen el saber de la zanahoria, estan estimulando e instituyendo a los colombos de la epoca..."
    Citar  
     

Temas similares

  1. tload en bash script
    Por phr4ackpl0t en el foro GENERAL
    Respuestas: 0
    Último mensaje: 13-09-2016, 04:30
  2. Ayuda con script bash
    Por jomaxdj en el foro LINUX - MAC - OTROS
    Respuestas: 13
    Último mensaje: 10-09-2008, 00:33
  3. Ingresar pass mediante un script en bash
    Por Cypress en el foro LINUX - MAC - OTROS
    Respuestas: 1
    Último mensaje: 23-09-2007, 04:37
  4. Bash en WIN
    Por welvis30 en el foro WINDOWS
    Respuestas: 3
    Último mensaje: 11-08-2006, 11:54
  5. Respuestas: 5
    Último mensaje: 22-11-2005, 10:05

Marcadores

Marcadores

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •