Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - jmrmcf

#1
Scripting / Ayuda. Script Backup
7 Junio 2015, 23:55 PM
Hola a todos, estoy haciendo un script para hacer backup de archivos con una extensión especifica. Se debe escoger un medio para crear la carpeta del backup. Estoy usando find y exec, sin embargo cuando ejecuto me aparece el find: falta un parámetro para «-exec», si pongo un echo para la variable que ejecutaría la opción y copio el comando se ejecuta sin problema. Ayuda para que se ejecute solo por favor

Código (bash) [Seleccionar]

#! /bin/bash
function donde()
{
        local ubic
        echo "1. disco"
        echo "2. memoria"
        read -p "donde desea guardar el backup " ubic
        case  $ubic in
                [1-2])
                        return $ubic;;
                *)
                        echo "valor no valido"
                        donde
        esac                 
}
function que()
{
        local tipo
        echo "1. .doc"
        echo "2. .txt"
        echo "3. .pdf"
        echo "4. .c"
        echo "5. .sh"
        read -p "a que tipo de archivo " tipo
        case  $tipo in
                [1-5])
                        return $tipo;;
                *)
                        echo "valor no valido"
                        que
        esac         
}
donde
ubic=$?
case $ubic in
        1)
ubi='-d /home/sdii/Documentos/backup'
               ubic="mkdir /home/sdii/Documentos/backup"
ubicc='/home/sdii/Documentos/backup/ \;';;
        *)
ubi='-d /media/sdii/F26258CF62589A65/backup'
                ubic='mkdir /media/sdii/F26258CF62589A65/backup'
ubicc="/media/sdii/F26258CF62589A65/backup/ \;"         
esac   
que
tipo=$?
case $tipo in
        1)
                tipo='sudo find /home -iname "*.docx" -exec cp {} '
tipoo=$tipo$ubicc;;
        2)
                tipo='sudo find /home -iname "*.txt" -exec cp {} '
tipoo=$tipo$ubicc;;   
        3)
                tipo='sudo find /home -iname "*.pdf" -exec cp {} '
tipoo=$tipo$ubicc;;
        4)
                tipo='sudo find /home -iname "*.c" -exec cp {} '
tipoo=$tipo$ubicc;;
        *)     
                tipo='sudo find /home -iname "*.sh" -exec cp {} '
tipoo=$tipo$ubicc
esac


if [ $ubi ]
then
$tipoo
else
$ubic
$tipoo
fi




Esto pasa cuando pongo que se ejecute la variable tipoo

Poniendo echo y ejecutando:

#2
Estoy haciendo un programa al que le ingrese un numero, hay un proceso hijo que envia el numero a traves de una tuberia y obtiene e imprime el factorial del numero (cuando el numero es menor que cero imprime los numeros ingresados en orden ascendente y se sale del programa). El proceso padre recibe a traves de la tuberia y descompone el numero en multiplicaciones de numeros primos. Pero tengo un problema ENORME: no puedo ingresar el numero, el programa compila (ubuntu 14.04) y al ejecutarlo solo imprime una linea que tengo previa al scanf que simplemente indica que se ingrese el numero. Agradezco su ayuda, adjunto el codigo.
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int a,ing[50],b,tub[2];
void pedir (void)
{
        int num,i,fact,j,temp;
        num=10;
close(tub[0]);
do
{

printf("ingrese el numero \n");
scanf("%i",&num);
write(tub[1], &num, sizeof(int));
ing[a]=num;
        a++;
        for(i=num;i>0;i--)
        {   
        fact=fact*i;
        }
        printf("factorial: %i \n",fact);
fact=1;
if(num<=0)
{
for(i=0;i<=a-1;i++)
{
for(j=i;j<=a-1;j++)
{
if(ing[j]<=ing[i])
{
int temp=ing[j];
ing[j]=ing[i];
ing[i]=temp;
}
}
      }
printf("ordenada: \n");
for(i=0;i<a;i++)
        {   
        printf("%i \t",ing[i]);
        }
printf("\n");
}
}while(num>0);



}
void ppadre (void)
{
sleep(2);
int numl;
numl=1;
printf("ola que ase saliendose solo o que ase");
do{
int i,conta,o;
        int primos[50];
        int pos=0;
close(tub[1]);
for(i=1;i<=numl;i++)
        {
                conta=0;
                for(o=1;o<=i;o++)
                {
                        if(i%o==0)
                                conta++;
                }
                if(conta==2)
                {                 
                        primos[pos]=i;
                        pos++;     
                }   
        }
        o=1;
        for(i=0;i<pos;i++)
        {
                if(numl%primos[i]==0)
                {
                        o=o*primos[i];
printf("va en %i\n",o);
                }
        if(o==numl)
        {
        printf("terminado: %i\n",o);
                i=pos;
        }
if(i==(pos-1) && o!=numl)
{
i=-1;
}
        }
}while(numl>0);
}
void main (void)
{

a=0;
pid_t pid;
pid = fork ();
pipe(tub);
switch(pid)
{
case -1: // error del fork<)
printf("error al crear el proceso\n");
break;
case 0: // proceso hijo
//printf("hijo\n");
pedir();
break;
default: // padre
//printf("yo soy tu padre\n");
ppadre;
break;

}
}