+ Responder ao Tópico



  1. #1

    Padrão Depois da execução, a console fica meio doida...

    Bom dia pessoal.
    Estou precisando da ajuda de vocês.
    Eu acabei de elaborar um script para criar/remover regras de acesso ao SMTP.
    Fiz alguns teste e aparentemente o script está funcionando, ou seja, fazendo o que ele deveria fazer porém após a execução desse script a console onde ela foi executada não aceita mais nenhum comando. Se por exemplo eu der um ls aparece uma mensagem informando que o comando não foi encontrado.

    Sou então obrigado a abrir uma nova console.

    Segue abaixo conteúdo do script.

    # Configurando as variaveis
    BYTES1='"3145728"'
    BYTES2='"8388608"'
    DATE=`date +%d%m%y`
    FILE=' qmail-smtpd.rules'
    PATH='/var/qmail/control'
    PATH1='/backup/smtpd_rules'
    RULE=':allow,RELAYCLIENT="",LOGLEVEL="1024",WHITELISTED="",AUTHREQUIRED="",NOPBS="",SMTPAUTH="",DATABYTES='

    /usr/bin/clear

    # Fazendo backup do arquivo original
    /bin/cp -f "$PATH"/"$FILE" "$PATH1"/"$FILE"."$DATE"

    if [ "$?" != 0 ]
    then
    echo "Erro na geracao do backup"
    echo "Saindo..."
    exit
    fi

    # Criando uma copia do arquivo original
    /bin/cp -f "$PATH"/"$FILE" /tmp/"$FILE".tmp

    if [ "$?" != 0 ]
    then
    echo "Erro na geracao do temporario"
    echo "Saindo..."
    exit
    fi

    export op1=0
    while [ "$op1" -lt 1 -o "$op1" -gt 3 ]
    do
    /usr/bin/clear
    /bin/echo -e "
    +---------------------------------------------+
    | |
    | MANUTENCAO DO ARQUIVO QMAIL-SMTPD.RULES |
    | |
    +---------------------------------------------+

    OPCAO ACAO
    ===== ====

    1 INCLUIR DATABYTES
    2 EXCLUIR DATABYTES
    3 TERMINA

    Entre com a opcao desejada: \c"
    read op1
    done

    if [ "$op1" = 3 ]
    then
    exit
    fi

    echo
    echo -e "Digite o endereco IP: \c"
    read ip

    case $op1 in
    1) export op2=0
    while [ "$op2" -lt 1 -o "$op2" -gt 2 ]
    do
    /usr/bin/clear
    echo -e "
    +---------------------------+
    | |
    | SELECIONE O DATABYTES |
    | |
    +---------------------------+

    OPCAO TAMANHO
    ===== =======
    1 3Mb
    2 8Mb

    Entre com a opcao desejada: \c"
    read op2
    done
    case $op2 in
    1) echo
    echo "$ip""$RULE""$BYTES1" >> /tmp/"$FILE".tmp
    /bin/cp -f /tmp/"$FILE".tmp "$PATH"/"$FILE"
    ;;
    2) echo
    echo "$ip""$RULE""$BYTES2" >> /tmp/"$FILE".tmp
    /bin/cp -f /tmp/"$FILE".tmp "$PATH"/"$FILE"
    ;;
    esac
    if [ $? = 0 ]
    then
    echo "Regra criada com sucesso!!!"
    else
    echo "Erro na criacao da regra"
    echo "Saindo..."
    exit
    fi
    ;;
    2) /bin/grep -v "$ip" /tmp/"$FILE".tmp > /tmp/"$FILE".tmp1

    if [ $? = 0 ]
    then
    echo
    echo "Regra removida com sucesso!!!"
    else
    echo
    echo "Problema na remocao da regra"
    echo "Saindo..."
    exit
    fi

    /bin/cp -f /tmp/"$FILE".tmp1 "$PATH"/"$FILE"
    ;;
    esac
    # Recriando as tabelas SMTP
    /sbin/service qmail cdb

    Alguém poderia me ajudar a entender o que está acontecendo?


  2. #2

    Padrão Re: Depois da execução, a console fica meio doida...

    Tenta, ao final do script, adicionar o seguinte:

    Código :
    /bin/reset

  3. #3

    Padrão Re: Depois da execução, a console fica meio doida...

    Caro amigo,

    Coloquei /bin/reset no final do script, mas não deu certo. O problema continua.

  4. #4

    Padrão Re: Depois da execução, a console fica meio doida...

    o prob eh q teu script utiliza a variavel path
    PATH='/var/qmail/control'
    na qual o sistema utiliza pra especificar o path do binarios.... ou vc muda a variavel ou entaum apos executar o script execute source /etc/profile

  5. #5

    Padrão Re: Depois da execução, a console fica meio doida...

    Era isso mesmo...mó mancada minha.
    Já alterei a variável $PATH para outro nome.
    Valew pela ajuda.