Script`s en linux

Se me a ocurrido un tema a proponer...
Mi idea es que vayamos mostrando alguno de los script`s que hayamos echo nosotros e ir mostrandolos....
de nuestra propia cosecha anda..jeje


Bueno aqui muestro uno que e echo oy en clase, ahber que os aprece y opineis algo mas que se le pueda añadir!!
un saludo




echo " para salir teclea CRTL+c"
echo " que deseas ? "
read v10





if [ $v10 = "usuarios" ]
then
who | wc -l
echo " usuarios"
elif [ $v10 = "muestra" ]

then
ls
elif [ $v10 = "lista" ]
then
ls -l

elif [ $v10 = "salir" ]
then
exit


else
./iff
fi
./iff




he echo que entre en un bucle para que siempre vuelva al programa.. se que se podria haber echo con un while... pero e tenido algun rpoble y lo he abortado..jeje


Haber que os aprece y que mas añadiriais y cambiarias?¿?¿
un saludo y animaros anda!!
Errrrrr..... y cual seria el proposito de ese script?? No seria mejor simplemente hacerlo con un alias?

alias usuarios="who | wc -l"
alias muestra="ls"
alias lista="ls -l"
..................
..................
Supongo que el propósito del script es...aprender a hacer scripts.

Yo hice hace tiempo un script para que torrentflux parase las subidas al llegar a cierto límite (ains...aquellos tiempos de animersion). Aparte de eso, he hecho bien poco. Tengo que aprender más a fondo.

Saludos.
efectivamente..
es el mero echo de aprender..jeje..
se que o tiene ningun tipo de uso la verdad..
jaja
solo por si ay algo k pudierais mejorar, y animar a la gente a que ponga sus script`s por aprender y saber algo mas..jeje

un saludo!!
Yo hice un script personalizado para crackear redes inalámbricas bastante currado. A ver si mañana lo posteo.
hombre... ese me interesa...jeje!!
ese era mi siguiente proyecto..jaja
mi idea era usar como base un aricrack + airodrump, y que ellos dos sean la base de mi script,, no es nada demasiado original e de admitirlo..
pero.. jeje por algo se empieza no?¿?¿

darme alguna idea asi no demasiado compleja para hace run script?¿?¿
es ya por superacion propia al verdad..jeje
sadwou escribió:hombre... ese me interesa...jeje!!
ese era mi siguiente proyecto..jaja
mi idea era usar como base un aricrack + airodrump, y que ellos dos sean la base de mi script,, no es nada demasiado original e de admitirlo..
pero.. jeje por algo se empieza no?¿?¿

darme alguna idea asi no demasiado compleja para hace run script?¿?¿
es ya por superacion propia al verdad..jeje

pueeees
Yo primero puse un clear para que limpiara la consola, y luego usé echo para mostrar todas las opciones disponibles con epígrafes. En mi script se introducía el número del epígrafe, los datos requeridos y funcionaba. Para no tener que meter los datos más de una vez, al principio crea una carpeta en /tmp donde se guardan todos los datos en archivos de texto normales y se leen con cat dentro del script. A partir del tercer paso no hay que dar ningún dato más.

Saludos
muchas gracias.. la verdad esque me acabas de dar mas de una idea...
mm...jeje!!
habra que ir trabajando..jeje!!
mi idea es a lo tuyo añadirle meterle varios scripts que se yamen el uno al otro segun les digas, y meterlos en /bin para no andar con ./...
weno, haber si se anima alguien mas y pone su script..
jeje
He aquí el libro de la sabiduría...

Imagen
sadwou escribió:Se me a ocurrido un tema a proponer...
Mi idea es que vayamos mostrando alguno de los script`s que hayamos echo nosotros e ir mostrandolos....
de nuestra propia cosecha anda..jeje

Bueno aqui muestro uno que e echo oy en clase, ahber que os aprece y opineis algo mas que se le pueda añadir!!
un saludo

echo " para salir teclea CRTL+c"
echo " que deseas ? "
read v10





if [ $v10 = "usuarios" ]
then
who | wc -l
echo " usuarios"
elif [ $v10 = "muestra" ]

then
ls
elif [ $v10 = "lista" ]
then
ls -l

elif [ $v10 = "salir" ]
then
exit


else
./iff
fi
./iff




he echo que entre en un bucle para que siempre vuelva al programa.. se que se podria haber echo con un while... pero e tenido algun rpoble y lo he abortado..jeje


Haber que os aprece y que mas añadiriais y cambiarias?¿?¿
un saludo y animaros anda!!



Pues a lo mejor te interesa (si no la conoces ya) la orden select.

En tu caso sería algo así:

select v10 in usuarios muestra lista salir
do
#aqui iria el mega if
done

Esta orden te muestra un menú donde tu eliges una opción y te guarda el valor que hayas elegido en la variable que pones después de select (en este caso v10). Por ejemplo si pulsas 1, v10 valdria "usuarios", si pulsas 2 "muestra", y asi... y en la variable REPLY te guarda el número en vez del texto. Además esto ya hace un bucle, tras elegir una opción y procesar la iteración, vuelve a pedirte una opción :P
Qué más... la variable PS3 te permite configurar el prompt con el que el menú te pide que introduzcas la opción.

Un saludo!
sadwou escribió:muchas gracias.. la verdad esque me acabas de dar mas de una idea...
mm...jeje!!
habra que ir trabajando..jeje!!
mi idea es a lo tuyo añadirle meterle varios scripts que se yamen el uno al otro segun les digas, y meterlos en /bin para no andar con ./...
weno, haber si se anima alguien mas y pone su script..
jeje


No me parece una buena idea meterlos en /bin, mejor en:
/usr/local/bin/

Aprovecho también para poner un un script de cosecha propia. Lo que hace es eliminar la segunda pista de audio de los archivos AVI que hayan en el directorio actual, útil para quitar los segundos idiomas en películas/series duales y así ahorrar espacio. Necesita tener el mencoder instalado:

#!/bin/bash
for i in *.avi; do
   if [ -f "$i" ]; then
           mencoder -ovc copy -oac copy -aid 1 -o tmp.avi "$i"
      if [ -f tmp.avi ]; then
              rm "$i"
              mv tmp.avi "$i"
      fi
   fi
done
exit



Por cierto, échale un vistazo a este enlace:
http://es.tldp.org/COMO-INSFLUG/COMOs/B ... ntro-COMO/
Sorry, he estado intentando recuperar mi script de wi-fi´s, pero por desgracia formateé mi portátil para meter x86-64 y ext4. Bueno, hice una copia con partimage, pero el problema está en que por lo visto la copia de mi antiguo sistema está corrupta y no hay manera de restaurarla. Puedo postear una versión de mi script muuuuuuuuuy experimental, pero ahora mismo no estoy en mi casa.
resadent escribió:Yo hice un script personalizado para crackear redes inalámbricas bastante currado. A ver si mañana lo posteo.

No os basta el airoscript?? esta muy completito...
k0br4 escribió:
resadent escribió:Yo hice un script personalizado para crackear redes inalámbricas bastante currado. A ver si mañana lo posteo.

No os basta el airoscript?? esta muy completito...

Ah, pues no lo había visto. Habrá que probarlo.
Queria pediros aver si me podíais echar una mano, hace como mas de dos años que no toco un script y estoy bastante verde.

Lo que quiero hacer es pasandole un directorio, pues que lo recorra recursivamente, y en cada carpeta que encuentre un .avi pues que le asgine el nombre de ese avi al .jpg y .srt correspondientes en ese mismo directorio.

#! /bin/tcsh -f
#probar con bash

if($#argv != 1) then
   echo "Numero de parametros incorrecto, el script tiene un parametro que es la ruta donde se encuentran las peliculas"
   exit(1)

else
   if( -d $1 ) then
      set directorio = `find $1`
      
   else
      echo "El parámetro $argv[1] NO es un directorio"
      exit(1)
   endif
endif

foreach elements ( $directorio )

   if ( -d $elements) then
      cd $elements
      set pelicula = `ls *.avi`
      set subtitulos = `ls *.srt`
      set imagen = `ls *.jpg`
      echo "Pelicula: $pelicula , Sutitulos: $subtitulos , Imagen: $imagen"
      unset pelicula
      unset subtitulos
      unset imagen
   else
      
      echo "$elements no es un directorio"
      
   endif

end


uso find ya que me lista todos los archivos a partir de un directorio, el problema es que como tengan espacios pues los coje como elementos distintos, a parte no esta bien luego lo de cambiar nombres, mas que na xq no lo he hecho, yo me acuerdo que yo siempre los recorria recursivamente pero con ls, pero no me acuerdo como era y he estado probando y tampoco.

Aver si alguien me puede decir como recorrer recursivamente un directorio que no me sale.

Un Saludo y gracias por adelantado.

Ciao.
rcaba escribió:Queria pediros aver si me podíais echar una mano, hace como mas de dos años que no toco un script y estoy bastante verde


¿Qué poblema hay con hacer?

find "$1" -type d | while read DIR; do
# Hago lo que tenga que hacer dentro de DIR
done
Despues del "do" hago lo que quiera hacer en ese directorio no?
DIR que sería la variable donde se almacena la salida del find? que ya quiero enterarme bien, eso es bash no? jeje yo sq empece cn tcsh ajja que tiempos.

Saludos y gracias por tu ayuda.
rcaba escribió:Despues del "do" hago lo que quiera hacer en ese directorio no?
DIR que sería la variable donde se almacena la salida del find? que ya quiero enterarme bien, eso es bash no? jeje yo sq empece cn tcsh ajja que tiempos.


Sí a todo. Por cierto cuando uses DIR ponlo entre paréntesis ("$DIR") por si el nombre del directorio tiene algún espacio.
Ok ese s el problema que tenia con el find en tcsh que no se llevaba muy bien con los espacios.

PD: Con las comillas tmb? solo los parentesis no?

Gracias de nuevo. Saludos.
rcaba escribió:Ok ese s el problema que tenia con el find en tcsh que no se llevaba muy bien con los espacios.


No es que se lleve bien o mal con uno u otro (yo tcsh no lo he usado): es cuestión de cómo lo uses. De la forma que te lo he puesto "read" lee línea a línea y como find te muestra cada fichero en una línea te mete todo el nombre (haya o no espacios) dentro de la variable DIR. Por eso el usar luego las comillas (sí, sin los paréntesis), para que los espacios no den problemas.

En cambio. Si intentases hacer algo así (no lo hagas que esto BORRA):

find | xargs rm


verías que da problemas con los espacios. Que también se puede solucionar, pero no viene al caso.
jeje gracias por avisar de que borra, jaaj pero todavia ahi llego :P

#!/bin/bash

find "$1" -type d | while read DIR; do
cd "$DIR"
echo "ACTUAL: $PWD"
set pelicula = `ls *.avi`
set imagen = `ls *.jpg`
set subtitulo = `ls *.srt`
echo "PELICULA: $pelicula IMAGEN: $imagen SUBITULO: $subtitulo"
done


No se xq no me mete en las variables los nombres respectivos de los archivos que encuentre, perdon por dar tanto el coñazo
Saludos.
rcaba escribió:jeje gracias por avisar de que borra, jaaj pero todavia ahi llego :P


En realidad el comentario no va dirigido a ti, sino a cualquiera que pueda leer el post y decida hacer pruebas. Con esto hay que ser cauteloso.

rcaba escribió:
#!/bin/bash


find "$1" -type d | while read DIR; do
cd "$DIR"
echo "ACTUAL: $PWD"
set pelicula = `ls *.avi`
set imagen = `ls *.jpg`
set subtitulo = `ls *.srt`
echo "PELICULA: $pelicula IMAGEN: $imagen SUBITULO: $subtitulo"
done


No se xq no me mete en las variables los nombres respectivos de los archivos que encuentre, perdon por dar tanto el coñazo
Saludos.


Veamos:
a) Estamos suponiendo que sólo hay un avi siempre, ¿no?
b) Así no se definen variables en bash. Además es mucho retruécano obtener el nombre como lo haces. Debería bastar con:
pelicula=*.avi

c) Tal como has hecho el script no te va funcionar el cambio de directorio (en realidad, sólo en la primera vuelta del bucle; en el resto no). No te digo más. Averigua tú por qué y a ver qué se te ocurre para solucionarlo.
d) Creo que voy a empezar a pasarte mis honorarios. :P
Se supone que en cada directorio y hay mas directorios o estaría el .avi con su correspondiente .jpg y en ocasiones .srt.
Bueno si vas a empezar a cobrar lo dejamos aquí jaja que estamos en crisis jaja. Miraré lo que me has dicho aver si lo soluciono y mirare algun tutorial basico de bash, que ando bastante perdido.

PD:He estado haciendo pruebas y si que entra por todos los directorios.

Un Saludo y gracias
¿Sólo se aceptan bash srcipts? [+risas]
24 respuestas