Script em SH [RESOLVIDO]

1. Script em SH [RESOLVIDO]

Fabio Branco da Silva
fbs76

(usa FreeBSD)

Enviado em 03/11/2008 - 13:11h

tenho um arquivo assim:

conta1:xx:xx:xxx:seila:talvez:opa:entao:eh:isso
conta2:xx:xx:xxx:seila:talvez:opa:entao:eh:isso
conta3:xx:xx:xxx:seila:talvez:opa:entao:eh:isso

bem gostaria de ler este arquivo(cat), dps pegar apenas o primeiro valor contendo o nome da conta do usuario e criar um diretorio correspondente no /home

da 1a linha viria:

mkdir -p /home/conta1

apos mudaria o dono e o grupo deste recem criado diretorio, assim:

chown -R conta1:mail conta1

alguem sabe como posso fazer isso?
o caracter : tem sempre 9 em cada linha, e no começo antes do :, sempre esta o nome do diretorio que devera ser criado.



  


2. Re: Script em SH [RESOLVIDO]

nelio
neliobjr

(usa Red Hat)

Enviado em 03/11/2008 - 14:00h

Véio, eu vou fazer por cima, pq estou sem tempo, se vc não entender ou continuar com dúvida posta ai que mais tarde te resolvo

#!/bin/sh

more teste | cut -d":" -f1 | head -1 >> var_temp # onde teste é seu arquivo, com as informações que vc disse, contax:seila.etc.etc.etc e var uma variavel temporaria
mkdir -p /home/$var_tmp
chown -R $var_tmp:mail $var_tmp

para fazer um loop, da uma olhada nesse script que vai lendo e apagando a primeira linhae joga o script acima dentro while.


while test -s $teste
do
sed -i '1d' $teste
# echo $var_tmp
# sleep 10
done


mais uma vez, se não conseguir avisa que te faço ele.

ABS



3. Re: Script em SH [RESOLVIDO]

nelio
neliobjr

(usa Red Hat)

Enviado em 03/11/2008 - 16:26h

Ai véio, script redondinho, funfando beleza.

Qualquer coisa posta ai...

#!/bin/sh

origem=/home/oracle/teste/teste #altere para a origem do seu arquivo.
dest=/home/oracle/teste/ #usei para escrever as variaveis temporarias e criar as pastas de teste....

more $origem | cut -d":" -f1 >> $dest/var_tmp # le o arquivo de origem com a sujeira e filtra como vc disse.


while test -s $dest/var_tmp # testa se o arquivo esta vazio, senão, entra no while
do
var_tmp2=`head -1 $dest/var_tmp` # le a primeira linha com o nome da conta e joga para um segundo arquivo temporario
sed -i '1d' $dest/var_tmp # apaga a primeira linha
echo $var_tmp2 #exibe o nome da pasta/conta
sleep 3 #espera 3 seguntos, senão passa que vc nem ve. rsrs
mkdir -p $dest/$var_tmp2 #cria a pasta no meu arquivo destino segundo a variavel 2 que setamos acima
chown -R $oracle:oinstall $dest/$var_tmp2 # alter, no more comments.

done

rm -rf $dest/var_tmp #apaga a variavel criada, no começo....


# caso vc queria ver o script funcionando em etapas, comente todas as linhas e va descomentando em ordem.

ABS





4. Re: Script em SH [RESOLVIDO]

Fabio Branco da Silva
fbs76

(usa FreeBSD)

Enviado em 03/11/2008 - 17:37h

Obrigado foi de grande ajuda com este script da pra ler o /etc/passwd e recriar contas de email, esta eh a finalidade.


5. Re: Script em SH [RESOLVIDO]

Guilherme Dantas
guiga07

(usa Fedora)

Enviado em 03/11/2008 - 22:27h

Cara, da uma olhada ve te se serve.

for CONTAS in $(awk -F ":" '{ print 1 }' /caminho/passwd);do
echo "$CONTAS" | \
mkdir -p /caminho/novo/dir/$CONTAS | \ chown -R user:grupo /caminho/novo/dir/$CONTAS ;
done

Pessoal, quem tiver uma outra ideia, pessa ae,,,ralei pra caramba pra tirar esse script e sei que tem formas muito mais pratica para fazer esta tarefa.

Abracos.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts