Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: DiegoMarley en 2 Diciembre 2014, 15:05 pm



Título: AYUDA con script Bash
Publicado por: DiegoMarley en 2 Diciembre 2014, 15:05 pm
Resulta que estoy mirando para hacer un script en bash al que se le pase como argumento un archivo de texto como éste:

Código:
Maria:x:1003:1003:Mari,,,:/home/maria:/bin/bash
usuario:x:1003:
Manolo:x:1005:1005:Manolillo,,,:/home/manolo:/bin/bash
jose:x:1005:

Y lo que quiero es que el script detecte cada línea y compruebe si es un usuario o un grupo y que lo añada al fichero de configuración correspondiente.
He intentado hacerlo con un bucle for, pero no consigo hacerlo funcionar.
Espero que podáis ayudarme, un saludo!


Título: Re: AYUDA con script Bash
Publicado por: engel lex en 2 Diciembre 2014, 17:18 pm
cito las reglas del foro...

Citar
I.A.1.c. Relevancia.

Los temas en el foro deberán ser relevantes, es decir, deberán estar en cierta forma orientados al propósito del subforo en donde fueron publicados, en caso de que un tema no sea útil en el subforo donde fue publicado, los usuarios no deberán responder a dicho tema hasta que este sea enviado a su respectivo lugar.

Si dicho tema no tiene ningún subforo, podría ser transferido al Foro Libre, o de lo contrario eliminado, esto queda a discreción del moderador.

Al publicar un tema en un subforo han de tenerse en cuenta las normas adicionales que pudieran afectar al mismo y que, en caso de haberlas, se encontrarán en una chincheta dentro del mismo.

Queda prohibido publicar mas de una vez el mismo mensaje tanto en el mismo subforo como en diferentes subforos. En caso de que una duda no haya sido respondida, se puede responder al mensaje para que regrese a la primera página en caso de que este haya salido de esta.
   

En caso de colocar un enlace a un recurso externo, este deberá estar disponible de forma pública en una zona que no requiera registro, y este directamente relacionado con el tema tratado.
   
En caso de que un usuario tenga mas del 50% de sus mensajes bloqueados o en papelera, se le alertará de dicho comportamiento, en caso de no corregirlo, será acreedor a una sanción segun lo especificado en la sección III.C.
   
No se deberán repetir preguntas que se hayan realizado muchas veces en el tablón correspondiente o que sean muy básicas. Para evitar esto deberán mirarse las chinchetas o temas relevantes del tablón, utilizarse el buscador del foro y un buscador de Internet antes de realizar la pregunta, referirse a los siguientes documentos para una guía de como hacer una pregunta relevante:
10 pasos para plantear una duda informática (http://foro.elhacker.net/index.php/topic,159345.msg751417.html#msg751417)
FAQ : Como hacer preguntas "inteligentes" (http://foro.elhacker.net/index.php/topic,7122.0.html)


Título: Re: AYUDA con script Bash
Publicado por: daryo en 2 Diciembre 2014, 18:39 pm
el fichero se llama lista.lst
los divido segun los formatos hay dos formatos

Código:
usuario:x:1003:
tiene 4 datos separados por el caracter ":" (si en realidad 3 pero cuenta lo que hay despues del ultimo ":" asi este vacio)
y las linas como
Código:
Manolo:x:1005:1005:Manolillo,,,:/home/manolo:/bin/bash
tiene 7 datos.

Código
  1. #!/bin/bash
  2. set n=0
  3. for a in $(cat lista.lst | awk 'BEGIN{FS=":"}{print NF;}')
  4. do
  5. n=$((n+1))
  6. if [ $a = 4 ]; then
  7. echo $(head -$n lista.lst | tail -1) >> grupos.txt
  8. elif [ $a = 7 ]; then
  9. echo $(head -$n lista.lst | tail -1) >> usuarios.txt
  10. fi
  11.  
  12. done