ajuda com script, quase laaa [RESOLVIDO]

1. ajuda com script, quase laaa [RESOLVIDO]

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 03/12/2009 - 10:07h

bom dia pessoal,

peguei um script aqui em nosso site, e fui fazendo algumas customizações que eu preciso, com ajuda de membros do forum tmb...

meu script adiciona e deleta usuarios... estou na seguinte situação...

echo -n "Informe o endereco de E-mail"
read email
if grep -i "$email" /etc/postfix/virtual; then
echo "Endereco de e-mail ja esta em uso, favor informar um diferente"
else
(**** aqui ele deve inserir o email e login no arquivo de nome virtual**** ) postmap /etc/postfix/virtual
echo
echo "Seu endereco de email eh $email. - Favor nao responder esta mensagem" | mail -s "Criacao de e-mail" $email
echo
echo "Criado e-mail $email com o login $login e a senha $senha com sucesso!"
echo
echo "Pressione qualquer tecla para continuar..."
read msg
Principal
fi
}

essa seria uma parte do adicionar... perceba q ele verifica no arquivo virtual se ja existe o $email, caso exista ele informa q jah tem, e nesse momento, preciso que ele faça um loop, volte a pedir um endereço novo, e faça a verificação...

caso jah em uso novamente, loop novamente..

se o $email nao existir... preciso que ele grave no final do arquivo virtual, da seguinte maneira...

diego@email.com diego

sendo que o diego@email.com é o valor da varial $email que informei e o diego é o valor da variavel $login que digitei no começo do script... depois ele salva e faz o postmap

agora tenho a parte do deletar...

Deletar() {
echo -n "Informe o login a ser excluido: "
read login
echo
echo "Mensagens do Sistema: "
echo
userdel $login
if test -d /home/emails/$login; then
rm -rf /home/emails/$login
(*** aqui ele deve procurar no arquivo de nome virtual se existe a string para remover *** )
echo "Usuario $login excluido com sucesso!"
echo
else
echo "Usuario NAO existe!"
echo
echo "Pressione qualquer tecla para continuar..."
read msg
Principal
fi
}


aqui preciso q ele procure dentro do arquivo virtual pela string $login
essa string deve ser exatamente $login, identica, pois se eu tiver linha contendo diego e diegogomes ele deve remover a linha que contenha apenas diego, caso meu $login seja diego...
e detalhe, esse $login é a coluna da direita, que começa na posicao 41...

ele tem q garantir q exista para fazer a remoção da linha, caso nao exista ele nao faz nada...

serah q conseguimos fazer????

obrigado a todos..

Diego


  


2. MELHOR RESPOSTA

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 07/12/2009 - 08:01h

essa tá fácil: substitui ">" por ">>"
antes
echo "$email$espacos$login" | sed 's/!/ /g' > /home/suporte/virtual.alterado
depois
echo "$email$espacos$login" | sed 's/!/ /g' >> /home/suporte/virtual.alterado

3. Re: ajuda com script, quase laaa [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 03/12/2009 - 10:27h

Vamos por partes:

1) o loop eu colocaria apenas um sleep após a msg de erro e chamaria novamente o módulo adicionar.

2) Adicionar é só um echo "$email $login" >> /etc/postfix/virtual;

E ai ficaria +/- assim:

Adicionar ()
{
echo -n "Informe o endereco de E-mail"
read email
if grep -i "$email" /etc/postfix/virtual; then
echo "Endereco de e-mail ja esta em uso, favor informar um diferente"
sleep 5
Adicionar
else
echo "$email $login" >> virtual;
postmap /etc/postfix/virtual
echo
echo "Seu endereco de email eh $email. - Favor nao responder esta mensagem" | mail -s "Criacao de e-mail" $email
echo
echo "Criado e-mail $email com o login $login e a senha $senha com sucesso!"
echo
echo "Pressione qualquer tecla para continuar..."
read msg
Principal
fi
}



4. Re: ajuda com script, quase laaa [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 03/12/2009 - 11:14h

para o "deletar" a opção mais fácil seria:

grep -wv $login arquivo_virtual, mas se vc quiser + segurança ainda avisa que montamos um script pra isso..


5. legall

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 03/12/2009 - 11:59h

fala fdmarp,

fiz assim...

Adicionar() {
echo -n "Informe o login: "
read login
echo -n "Informe nome completo e a Cooperativa: "
read nome
echo -n "Informe a senha: "
stty -echo
read senha
stty echo
echo
echo "Mensagens do Sistema: "
echo
useradd $login -c "$nome" -d /home/emails/$login -m -s /bin/false; echo "$senha" | passwd $login --stdin
echo
echo -n "Informe o endereco de E-mail"
read email
if grep -i "$email" /etc/postfix/virtual; then
echo "Endereco de e-mail ja esta em uso, favor informar um diferente"
sleep 5
Adicionar()
else
echo "$email $login" >> /etc/postfix/virtual
postmap /etc/postfix/virtual
echo
echo "Seu endereco de email eh $email. - Favor nao responder esta mensagem" | mail -s "Criacao de e-mail" $email
echo
echo "Criado e-mail $email com o login $login e a senha $senha com sucesso!"
echo
echo "Pressione qualquer tecla para continuar..."
read msg
Principal
fi
}


porem ele da me dando erro...

#: syntax error near unexpected token `else'
#: line 50: ` else'

e nao consigo arrumar...

gostaria que quando fizesse o echo para inserir no arquivo, q ele colocasse o $login na posicao 41 do caracter, que deste modo ele fica ordenado, eh possivel?

obrigado



6. outra coisa

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 03/12/2009 - 12:09h

joguei o useradd para baixo... porq se nao, ele vai chamar a rotina novamente, e vai tentar fazer o useradd sendo q jah tinha sido feito..

ficou assim

echo "Endereco de e-mail ja esta em uso, favor informar um diferente"
sleep 5
Adicionar()
else
echo "$email $login" >> /etc/postfix/virtual
postmap /etc/postfix/virtual
useradd $login -c "$nome" -d /home/emails/$login -m -s /bin/false; echo "$senha" | passwd $login --stdin
echo
bom, continuo ainda com o problema anterior.. eheheheh

:(

mas estamos caminhando bemmm


7. quase la

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 03/12/2009 - 12:23h

achei..

estava chamando o Adicionar com ()
Adicionar ()

tirei os () e deu certo...

da parte do adicionar falta apenas a parte de ordenar... depois vou para o Deletar..

obrigadooo


8. deletar nao deu

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 03/12/2009 - 12:31h

fiz um teste com o deletar e nao deu certo.. exemplo:

grep -wv "loko" /home/suporte/virtual

dentro do virtual, tenho:

lokoloko@loko.com massa
doido@doido.com loko

nesse caso, ele deve remover a linha doido@doido.com

mas nao fez..

no arquivo em si, nao removeu nada, mas em tela, ele me printou o arquivo sem as duas ultimas linhas, que sao:

lokoloko@loko.com massa
doido@doido.com loko

pelo q entendi ele nao estah pegando somento o "loko" e sim tudo q tiver loko, como lokoloko q eh diferente de loko

meio loko neh????

hehehee

abs

diego


9. Re: ajuda com script, quase laaa [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 03/12/2009 - 14:55h

Cara, fiz um negocio bem estranho ... mas que pode até funcionar pra quebrar o galho da formatação ... mas quero ver se acho alguma coisa mais inteligente.

no lugar do echo para o arquivo virtual, ponha uma chamada ao formata e coloca o código abaixo no seu script ... e reza rsss.

Quanto ao grep ... vou verificar

formata ()
{
espacos="¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨"
contador=`echo $email | wc -c | sed 's/ //g'`
if [ $contador -le "40" ]; then
dif=`expr 41 - $contador`
espacos=`echo $espacos | cut -c 1-$dif`
else
espacos=""
fi
echo "$email$espacos$login" | sed 's/¨/ /g' >> virtual
}




10. hehehehe

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 03/12/2009 - 15:09h

nao sei se sou eu o problema..

mas quando colo.. ou faço o CRASE... da isso:

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨Â

:(


11. Re: ajuda com script, quase laaa [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 03/12/2009 - 15:55h

Não entendi esse negócio da crase não !!! explica melhor.

a rotia para excluir pode ser essa abaixo ... é perobal tb, mas resolve seu problema agora ... vou pensar melhor tb!
testa ai!




excluir ()
{
while read line
do
controle=`echo $line | awk '{ print $2}'`
if [ $controle = $login ]; then
echo "excluindo usuario"
else
echo $line >> virtual.work
fi
done < virtual
mv virtual.work virtual
}




12. explico, eheheh

Diego Maciel Gomes
dimago

(usa Red Hat)

Enviado em 03/12/2009 - 15:57h

quando colo o script pro terminal....

formata ()
{
espacos="¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨"


ele fica assim:


espacos="¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨Â"

lokuraaaaa





01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts