elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  AYUDA con script Bash
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: AYUDA con script Bash  (Leído 2,272 veces)
DiegoMarley

Desconectado Desconectado

Mensajes: 5


Ver Perfil
AYUDA con script Bash
« 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!


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: AYUDA con script Bash
« Respuesta #1 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
FAQ : Como hacer preguntas "inteligentes"


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: AYUDA con script Bash
« Respuesta #2 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
« Última modificación: 2 Diciembre 2014, 18:51 pm por daryo » En línea

buenas
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Bash script] equivalente de goto en batch para bash (SOLUCIONADO)
Scripting
moikano→@ 4 16,094 Último mensaje 4 Noviembre 2010, 15:58 pm
por moikano→@
Ayuda con script en bash
Scripting
Fastolfe 2 2,368 Último mensaje 6 Mayo 2011, 12:34 pm
por JuszR
[Bash] Abrir un proceso o otro script bash en una nueva shell
Scripting
nhaalclkiemr 2 14,002 Último mensaje 27 Agosto 2011, 06:23 am
por nhaalclkiemr
ayuda con Script en Bash
Scripting
andaluz 1 3,205 Último mensaje 30 Enero 2012, 12:52 pm
por andaluz
Ayuda con un script en BASH
GNU/Linux
mathias_vg 4 2,540 Último mensaje 24 Septiembre 2014, 10:04 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines