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 - hervasiop12345

#21
Scripting / Re: [Bash] Problema con array
20 Julio 2011, 12:06 PM
Necesito saber como comparar dos nombres para ver cual es menor y cual mayor para así avanzar un array u otro pero tal y como lo tengo hecho parece que no funciona bien
#22
Scripting / Re: [Bash] Problema con array
11 Julio 2011, 22:52 PM
El script recibe dos argumentos que son directorios. Si estos son correctos entonces tiene que ver que ficheros tiene uno que no tiene otro y mostrarlos diciendo este fichero está en tal directorio pero no en el otro. Para probar que funcionaba bien he intentado hacer la intersección de estos pero no funciona bien la comparación y creo que es por los espacios en los nombres de los ficheros.
#23
Scripting / Re: [Bash] Problema con array
11 Julio 2011, 18:32 PM
Muchas gracias por tu ayuda. Gracias a eso he avanzado pero me he visto de nuevo atascado ya que al comparar nombres de ficheros siendo alguno con espacio no lo hace bien. Debería de avanzar un array y avanza otro .Dejo el código con el que intentaba calcular la intersección de los directorios para que veas mejor a lo que me refiero:

#!/bin/bash

declare -a carpetas=()
declare -a carpetas2=()
i=0
j=0


if test -d "$1"
then

 if test -d "$2"
 then
 
    cd $1; find -maxdepth 1 ! \( -type d \)| cut -c 3- |sort > dirs
    while read elemento
    do

carpetas=("${carpetas[@]}" "$elemento")

    done < ./dirs
    cd $2; find -maxdepth 1 ! \( -type d \)| cut -c 3- |grep -v "dirs" |sort> dirs    
    while read elemento
    do

      carpetas2=("${carpetas2[@]}" "$elemento")

    done < ./dirs    
   
    tamanyo1=${#carpetas[@]}
    tamanyo2=${#carpetas2[@]}
           
   while true
   do
     fich="${carpetas[$i]}"
     fich2="${carpetas2[$j]}"
     echo $fich
     echo $fich2

     if [ "$fich" == "$fich2" ]
     then

       echo "El fichero "${carpetas[$i]}" es común a ambos directorios"
       let i=i+1
       let j=j+1

     elif [ "$fich" > "$fich2" ]
     then

       let j=j+1

     elif [ "$fich" < "$fich2" ]
     then

       let i=i+1
     fi

     if [ $i -eq $tamanyo1 ] || [ $j -eq $tamanyo2 ]
     then
       break
     fi
   done      
 fi
fi

#24
Scripting / Re: [Bash] Problema con array
10 Julio 2011, 23:25 PM
nadie?
#25
Scripting / Re: Tratar variable vacía case
8 Julio 2011, 17:45 PM
así lo dejo
#26
Hola. Quiero hacer un script que compare los ficheros de dos directorios. Para ello primero almaceno en dos arrays los ficheros de estos pero el problema está en que si el nombre de algún fichero tiene un espacio me lo guarda en dos posiciones del array. Dejo algo de código y gracias.
Código (bash) [Seleccionar]

#!/bin/bash

if test -d "$1"
then

 if test -d "$2"
 then

    dir1=(`cd $1; file * | grep -v "directory" | cut -f 1 -d ":"`)
    dir2=(`cd $2; file * | grep -v "directory" | cut -f 1 -d ":"`)

    for i in ${dir2[@]}
    do
      echo -e "$i\n"       #Aquí se observa lo dicho
    done    
 fi
fi
#27
Scripting / Re: Tratar variable vacía case
8 Julio 2011, 14:25 PM
Gracias por tu respuesta. Tal y como yo lo quería hacer no me sirve el bucle ya que ahí fuerzo a que se introduzca algo. Este script muestra informacíon acerca de un usuario si existe.
Script terminado:


#!/bin/bash

function nfo {

 echo "Login: $log"
 echo "Nombre: `cat /etc/passwd | cut -d , -f 1 |grep $log | cut -d : -f 5`"
 echo "Directorio home: `cat /etc/passwd | grep $log | cut -d : -f 6`"
 echo "Shell: `cat /etc/passwd | grep $log | cut -d : -f 7`"
 if [ `finger $log | grep On | wc -l` -ge 1 ]
 then
   echo "Conectado: Si"
 else
   echo "Conectado: No"
 fi      

}

function procesos {

 echo -e "PID   PROCESO\n"
 echo "`ps aux | tr -s " " | grep $log | cut -d " " -f 1,2,11 | grep $log | cut -d " " -f 2,3`"

}

function opciones {

 ca="-p"
 ca2="-u"
 ca3="-help"

 if [ ! $option ]
 then

   nfo $log
   procesos $log
   exit 0    

 elif [ \( $option == $ca \) -o \( $option == $ca2 \) -o \( $option == $ca3 \) ]
 then

   case "$option" in

     -p)
         procesos $log
         exit 0
         ;;
     -u)
         nfo $log
         exit 0
         ;;
  -help)
         echo -e "Usa -u para obtener información del usuario\n    -p para información de los procesos\n     o nada para mostrar ambas cosas"          
         ;;  
   esac

 else

   echo "Opción Inválida"
   exit 1

 fi
}

if [ -z $1 ]
then

 echo "Haz la llamada con algún usuario"
 exit 2

elif [ `cat /etc/passwd |grep $1 |wc -l` -ge 1 ]
then

 log=$1
 read option
 opciones

else

 echo "Usuario inexistente"
 exit 2

fi




#28
Hola. Me gustaría que cuando haga read y pulse enter sin introducir nada , en case muestre una serie de cosas pero me da eror en la línea del if y es por esto. Pensé en usar \( -z $1 \) pero no parece funcionar. Espero vuestra respuesta y gracias.

Código (bash) [Seleccionar]

#!/bin/bash

function opciones {

 ca="-p"
 ca2="-u"
 ca3="-help"

 if [ \( $1 == $ca \) -o \( $1 == $ca2 \) -o \( $1 == $ca3 \) -o \( -z $1 \) ]
 then
   case "$1" in

     -p) echo "Opción -p"
        ;;
     -u) echo "Opción -u"
        ;;
     -help) echo "Opción -help"
           ;;
     "") echo "Mostrar todo"
           ;;        
   esac
 else
   echo "Opción Inválida"
 fi
}

if [ `cat /etc/passwd |grep $1 |wc -l` -ge 1 ]
then
 read option
 opciones $option
else
 echo "Usuario inexistente"
 exit 2
fi
#29
Gracias por la intención pero antes de postear algo asegurate que funciona porque he probado varias y ninguna funcionaba y aparte alguna como la de megaupload son cuentas free y el títlo dice PREMIUM. Saludos
#30
gracias por las respuestas. Yo de momento soy nuevo en estos temas y no sabría analizar el fichero. Puedo subirlo por si alguien que controle bien lo analiza en un momento aunk si está protegido por antidebugger no sé yo. Son dos librerias ddl