Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: slyfx en 19 Marzo 2014, 19:33 pm



Título: [BASH] Ideas para realizar este script?
Publicado por: slyfx en 19 Marzo 2014, 19:33 pm
Tengo que realizar un script en bash para linux que haga esto:



- Script pide unos parametros:
   -El primer parametro insertado el programa lo considera megabytes
   -Los parametros siguientes el programa lo considerara usuarios o grupos

- El mismo programa borrara todos los archivos del directorio "actual" que se sobrepase del tamaño indicado al principio y cuyo usuario o grupo este en la lista d eparametros pasados


Condiciones:

- Si el primer parametro no es un numero entero ---> msg error y script detenido
- Se creara un archivo de texto "borrados.txt" con nombre tamaño y propietario de los archivos borrados





Necesitaria alguna idea para empezar este script, mas o menos la tengo, pero como le digo por ejemplo que el primer parametro sea considerado como MB?



Muchas gracias


Título: Re: Ideas para realizar este script?
Publicado por: Eleкtro en 19 Marzo 2014, 20:33 pm
como le digo por ejemplo que el primer parametro sea considerado como MB?
¿Vas a especificar el lenguaje que estás utilizando o estás esperando a que alguien lo adivine?, si no importa el lenguaje al menos aclara ese detalle..

Saludos


[OFFTOPIC]
PD: Cuanta falta hace el uso de las plantillas...
[OFFTOPIC]


Título: Re: Ideas para realizar este script?
Publicado por: slyfx en 19 Marzo 2014, 21:22 pm
¿Vas a especificar el lenguaje que estás utilizando o estás esperando a que alguien lo adivine?, si no importa el lenguaje al menos aclara ese detalle..

Saludos


[OFFTOPIC]
PD: Cuanta falta hace el uso de las plantillas...
[OFFTOPIC]



Editado, sorry


Título: Re: [BASH] Ideas para realizar este script?
Publicado por: -Myx- en 20 Marzo 2014, 06:15 am
busca informacion acerca del comando "find", de por si se puede usar para eliminar archivos de mas de cierto tamaño


Título: Re: [BASH] Ideas para realizar este script?
Publicado por: slyfx en 20 Marzo 2014, 12:28 pm
busca informacion acerca del comando "find", de por si se puede usar para eliminar archivos de mas de cierto tamaño


Muchas gracias esas son las ideas que necesito, es que realmente no sabia mucho como empezar, te lo agradezco


Título: Re: [BASH] Ideas para realizar este script?
Publicado por: -Myx- en 22 Marzo 2014, 07:46 am
si llegas a encontrar tu solucion, estaria bien que la compartieras con el foro. Quizas alguien mas lo pueda usar en el futuro


Título: Re: [BASH] Ideas para realizar este script?
Publicado por: slyfx en 24 Marzo 2014, 15:12 pm
si llegas a encontrar tu solucion, estaria bien que la compartieras con el foro. Quizas alguien mas lo pueda usar en el futuro


Pues sí, para quien lo quiera usar (o ayudar) de momento tengo esto:


Código:

#!/bin/bash
clear

echo "Escribe el numero para los Mb:"
read numero
typeset -r __TRUE=0
typeset -r __FALSE=1
function isNumber {
  typeset TESTVAR="$(echo "$numero" | sed 's/[0-9]*//g' )"
  [ "${TESTVAR}"x = ""x ] && return ${__TRUE} || return ${__FALSE}
}
isNumber $numero
if [ $? -eq ${__TRUE} ] ; then
  echo "Es un numero entero y puedes seguir"
  echo "Pulsa un boton para continuar ..."
  read 
  rm borra
  rm borrados.txt

  var1='si'
  echo "Has escogido: " $numero " Mb"
  echo "Pulsa Enter para continuar ..."
  read

  while [ "$var1" != "no" ]
  do
  echo "----------------------------------"
  echo "Hora de insertar usuarios y grupos: "
  echo "----------------------------------"
  echo "Inserta el usuario:"
  read usuario
  echo "Inserta el grupo:"
  read grupo
  echo "Su busqueda ha sido de:"
  echo "Tamaño:" $numero
  echo "Usuario:" $usuario
  echo "Grupo:" $grupo

  find ./ -type f -size +$numero -user $usuario >> borra
  echo "Quieres continuar (si/no)?"
  read var1
  done

  #cat fichero | awk -F":" '(print "find ./ -type f -size +"$1")'
  for i in nombre
  do
  nombre2= `ls -la $i |awk -F " " '(echo $9)'`
  propietario= `ls -la $i |awk -F " " '(echo $3)'`
  tamano= `ls -la $nombre |awk -F " " '(echo $5)'`
  echo "El archivo: " $nombre2 "como propietario a: " $propietario " de tamaño " $tamano >> borrados.txt
  rm -rf $i
  done



else
  echo "Este numero no es un entero o no es un numero"
  echo -e "Saliendo del programa ..."
  sleep .80
fi


De momento este codigo comprueba que el primer numero introducido es entero y es numero.
Usara este primer numero introducido para determinar el tamaño en Mb de lo que debera buscar y borrar, los siguientes parametros introducidos serán usuarios o grupos, que usará para indicar al archivo txt quien ha sido el que ha borrado ese archivo superior a "x" mb, y bueno viene siendo un poco lo que pedía al principio, aun le falta darle un poco de giro a la logica pero lo voy planteando a ver que saco, porque todavía falla  :rolleyes:


Editado: Había puesto un código que no era