PDA

Visualizza la versione completa : prendere dati da file di testo


Bloody3000
15-07-2004, 10:15
Ciao! Help per una prova d'esame:
qualcuno sa come prendere dati da un file di testo e mandarli in in input ad un altro comando, esempio useradd?
Cioè, io in un file ho i nomi degli utenti, non è specificato se sulla stessa riga separati da spazi o su diverse linee,
e devo prendere i nomi e aggiungerli come utenti.

Ho provato con
less utenti.txt > useradd
less utenti.txt | useradd
ma niente! Ci sono strumenti al di fuori di questi per prendere l'input da un file di testo e farci qualcosa? Anche con uno script?
Thanks very much

Ikitt
15-07-2004, 10:37
Originariamente inviato da Bloody3000
qualcuno sa come prendere dati da un file di testo e mandarli in in input ad un altro comando, esempio useradd?
Cioe, io in un file ho i nomi degli utenti, non e specificato se sulla stessa riga separati da spazi o su diverse linee,
e devo prendere i nomi e aggiungerli come utenti.

ci sono millanta modi, ma senza una specifia piu` precisa se ne potrebbe parlare per ore...



Ho provato con
less utenti.txt > useradd
less utenti.txt | useradd


mah, al limite una cosa tipo


cat utenti.txt | xargs useradd

(non testato)

oppure


for utente in $( cat utenti.txt ); do
useradd $utente
done


anche se dubito fortemente che faccia quanto desideri



ma niente! Ci sono strumenti al di fuori di questi per prendere l'input da un file di testo e farci qualcosa? Anche con uno script?

Hai voglia! ma ci vogliono piu` dettagli sul cosa fare...

Bloody3000
15-07-2004, 10:44
nello specifico per aggiungere gli utenti! :D

Già che ci siamo non è che hai qualche link su questo, visto che con google non trovo e che è un argomento così trattato? (per fortuna!)

Ilmalcom
15-07-2004, 10:46
http://forum.html.it/forum/showthread.php?s=&threadid=686307 :dottò: :dottò: :dottò: :dottò:

cicciobaliccio
15-07-2004, 11:00
si potrebbe fare uno script del genere

#!/bin/bash
utenti=$(cut lista.txt)
for i in $utenti
do
useradd $1
done

che funziona muahahahahhaahahahahahha
ormai so tutto muahahahahhahahah :yuppi: :ciapet: :ciapet: :yuppi: :yuppi: :maLOL: :maLOL:

Bloody3000
15-07-2004, 11:07
veramente....



for utente in $( cat utenti.txt ); do
useradd $utente
done


ha aggiunto gli utenti, funziona sia quando li metto su linee diverse che quando li separo con uno spazio.
Funziona anche con userdel!

come mai dubitavi fortemente?

Mutato
15-07-2004, 15:39
Originariamente inviato da Bloody3000

ha aggiunto gli utenti, funziona sia quando li metto su linee diverse che quando li separo con uno spazio.


Ovvio. Se vuoi esplicitare il separatore tra i valori devi usare awk.

Ikitt
15-07-2004, 18:29
Originariamente inviato da Bloody3000


for utente in $( cat utenti.txt ); do
useradd $utente
done

ha aggiunto gli utenti, funziona sia quando li metto su linee diverse che quando li separo con uno spazio.
come mai dubitavi fortemente?

E se li separi con una virgola? e con due punti?
E se bisogna usare opzioni per useradd?
E se certi utenti devono stare in certi gruppi e tutti gli altri in un solo utente?

Quella postata e` una soluzione quick & dirty, ed estremamente scarna e generica (per forza!) ad un problema generico...

Se il problema era semplicemente "aggiungere utenti", va bene, per qualcosa di un pelino piu` complesso, no, non cosi` semplicemente almeno...

Ikitt
15-07-2004, 18:30
Originariamente inviato da Mutato
Ovvio. Se vuoi esplicitare il separatore tra i valori devi usare awk.

anche $IFS direttamente con bash

Ikitt
15-07-2004, 18:32
Originariamente inviato da cicciobaliccio
si potrebbe fare uno script del genere

#!/bin/bash
utenti=$(cut lista.txt)
for i in $utenti
do
useradd $1
done

che funziona muahahahahhaahahahahahha



$ cat utenti.txt
pippo
pluto
paperino
topolino
minni
rokerduck
$ utenti=$(cut utenti.txt)
cut: you must specify a list of bytes, characters, or fields
Try `cut --help' for more information.
$

Loading