shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Primeiro script


From: drozzinipires
Subject: Primeiro script
Date: Thu, 15 Jul 2004 15:30:32 -0000
User-agent: eGroups-EW/0.82

Acabei de montar meu primeiro script, ele é para trocar trocar os 
usuários do sistema de "nome" para "nome.sobrenome".

Tenho 2 duvidas !! 

1ª)Apenas no arquivo assing do qmail, eu vou precisar de fazer 2 
alterações por usuario, como eu passaria isso para o 'sed'

2ª)Para alterar esses arquivos eu teria que modificar as permissões 
deles ??

E não querendo abusar... ai está o script, caso alguem puder dar uma 
olhada nele e ver se tem algo de errado eu agradeço !!!

#!/bin/bash
#Alteracao dos usuarios nos arquivos passwd,shadow, squid_passwd

#funcao para alterar os arquivos

altera() {

        #Faz a alteracao do usuario antigo para o usuario novo e 
grava a alteracao no arquivo temporario
        cat $1 | sed "0,/$3/ s/$3/$4/g" > $2

        #Mostra qual a diferenca entre o arquivo original e o arquivo 
temporario
        diff $1 $2

        #Pergunta se deseja realizar a alteracao, e espera pelo(s)im 
ou (n)ao
        echo -n "DESEJA ALTERAR ? "
        read OPCAO
        case $OPCAO in

                #Caso seja sim, ele faz uma copia do arquivo para um 
arquivo no mesmo diretorio e de mesmo nome,
                #mas com a extensão .bkp
                #depois substitui o arquivo original pelo arquivo 
temporario e manda um aviso falando que foi alterado
                s) cp $1 $1.bkp
                   mv $2 $1
                   echo "ALTERADO !"
                   ;;

                #sai do script e retorna o valor 0
                n) exit 0 ;;
        esac
}

#Path do passwd
CAM_PASSWD=/etc/passwd

#Path do shadow
CAM_SHADOW=/etc/shadow

#Path do squid_passwd
CAM_SQUIDPASSWD=/etc/squid/squid_passwd

#Path para lista de usuários do qmail
CAM_QMAIL=/var/qmail/users/assing

#Path para o arquivo temporario
ARQUIVOTMP=/tmp/temp.tmp


#Condicao para iniciar o laco, sempre sera verdadeiro
CONDICAO=0
while [ $CONDICAO -eq 0 ]
do
        #Solicita o nome do usuario, e grava na variavel USUARIO
        echo -n "Nome do usuario: "
        read USUARIO

        #Procura pelo nome do usuario nos arquivos: passwd, shadow, 
squid_passwd
        echo -n "Passwd: "
        cat $CAM_PASSWD | grep -i $USUARIO
        echo -n "Shadow: "
        cat $CAM_SHADOW | grep -i $USUARIO
        echo -n "Squid_passwd: "
        cat $CAM_SQUIDPASSWD | grep -i $USUARIO

        #Solicita o nome para qual sera alterado, e grava na variavel 
NOVOUSUARIO
        echo -n "Novo nome do usuario: "
        read NOVOUSUARIO

        #chama funcao para altera passwd
        altera $CAM_PASSWD $ARQUIVOTMP $USUARIO $NOVOUSUARIO

        #chama funcao para altera shadow
        altera $CAM_SHADOW $ARQUIVOTMP $USUARIO $NOVOUSUARIO

        #chama funcao para altera squid_passwd
        altera $CAM_SQUIDPASSWD $ARQUIVOTMP $USUARIO $NOVOUSUARIO

        #altera no arquivo assing
        #Faz a alteracao do usuario antigo para o usuario novo e 
grava a alteracao no arquivo temporario
        cat $CAM_QMAIL | sed "???????? s/$USUARIO/$NOVOUSUARIO/g" > 
$ARQUIVOTMP

        #Mostra qual a diferenca entre o arquivo original e o arquivo 
temporario
        diff $CAM_QMAIL $USUARIO

        #Pergunta se deseja realizar a alteracao, e espera pelo(s)im 
ou (n)ao
        echo -n "DESEJA ALTERAR ? "
        read OPCAO
        case $OPCAO in

                #Caso seja sim, ele faz uma copia do arquivo para um 
arquivo no mesmo diretorio e de mesmo nome,
                #mas com a extensão .bkp
                #depois substitui o arquivo original pelo arquivo 
temporario e manda um aviso falando que foi alterado
                s) cp $CAM_QMAIL $CAM_QMAIL.bkp
                   mv $ARQUIVOTMP $CAM_QMAIL
                   echo "ALTERADO !"
                   qmail -newu 
                   ;;

                #sai do script e retorna o valor 0
                n) exit 0 ;;
        esac    

done





reply via email to

[Prev in Thread] Current Thread [Next in Thread]