Sufixo "Se" no Shell [RESOLVIDO]

1. Sufixo "Se" no Shell [RESOLVIDO]

Alex Vieira
Alexxxx

(usa Fedora)

Enviado em 14/07/2015 - 11:11h

Prezados

Estou criando uma rotina para instalar o samba 4 em um servidor Centos, Ate ai tudo bem, porem eu quero que meu script compare uma reposta, vou dar o meu exemplo abaixo


"
echo ' Você desabilitou o SElinux ? sim ou não' (essa e a pergunta )

(Resposta)

SIM = ele vai rodar meu Script

NÃO = ela vai voltar uma frase " Favor editar o arquivo SELinux"


Alguém pode me ajudar ?

Dês de já meu Obrigado a comunidade.


  


2. Re: Sufixo "Se" no Shell [RESOLVIDO]

Paulo Dias
di4s

(usa XUbuntu)

Enviado em 14/07/2015 - 13:51h

Penso que seria algo assim:



read -p 'digite a resposta ' resposta ;

if [ $resposta = 'sim' ] ; then
echo 'ok' ;

fi


Veja mais aqui http://www.vivaolinux.com.br/artigo/Programacao-com-Shell-Script?pagina=2


Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/


3. Re: Sufixo "Se" no Shell [RESOLVIDO]

Lucas Alves Santos
Lwkas

(usa XUbuntu)

Enviado em 14/07/2015 - 13:53h

Acho que oque o cara acima disse acho que sera útil para voce.....penso da mesma forma que ele!


4. Re: Sufixo

Christian
Halierier

(usa Arch Linux)

Enviado em 14/07/2015 - 13:56h

Pode fazer como o p4ulodi4s falou, mas creio que nesse caso ficaria melhor um case ao invés do if:

#!/bin/bash

echo "voce desabilitou o selinux? (sim/nao)"
read resposta


case $resposta in
'sim')

codigo script aqui

;;

'nao')
echo "favor editar o arquivo"
;;

*)
echo "Resposta invalida, (sim ou nao)"
;;

esac



5. Re: Sufixo

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 14/07/2015 - 14:07h

Olá, existem algumas formas para fazer o que vc quer. Abaixo algumas sugestões:

Com while + case: Acredito ser a melhor forma, assim o usario fica em looping até digitar alguma resposta valida.

Não recomendo que o usuário deva digitar a palavra não, pois pode haver erros de digitação. Adicionei o case dentro do while e o read com -n1 ( após o user digitar uma letra, automaticamente o script continua, sem a necessidade de apertar enter.
x=0
while [ $x -eq 0 ]
do echo " Você desabilitou o SElinux ? S para sim N para Não "
read -n 1 resposta
case $resposta in

S|s) coloque aqui código pra executar o que vc quer
x=1 ;;

N|n)
clear
echo -e " Favor editar o arquivo SELinux. "
exit 1 ;;

*) clear
echo -e "$resposta não é uma resposta válida. Por favor aperte S para sim e N para não"
sleep 3 ;;
esac
done


Abs,


---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


6. Re: Sufixo "Se" no Shell [RESOLVIDO]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 14/07/2015 - 14:08h

kk. enquanto escrevia, cheagram 3 respostas em 5 minutos. rsrs


abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


7. Re: Sufixo

Paulo Dias
di4s

(usa XUbuntu)

Enviado em 14/07/2015 - 15:10h

Apesar de respeitar a contribuição do amigo...

Acho importante manter o código o mais simples possível. Veja, temos apenas 2 situações ( sim e não ), um IF é o suficiente.


read -p 'Você desabilitou o SElinux ? S ou N ' resposta ;

if [ $resposta != 'S' ] ; then
echo 'Favor editar o arquivo SELinux' ;
exit 1;
fi

//código script



O código é bem simples e funcional. Se a resposta é 'S', o código é executado. Se a resposta é qualquer outra coisa, a mensagem de erro é exibida. Para dar suporte ao 's' (minúsculo) é possível usar o seguinte código:


read -p 'Você desabilitou o SElinux ? S ou N ' resposta ;

resposta=$( echo $resposta | tr s S );

if [ $resposta != 'S' ] ; then
echo 'Favor editar o arquivo SELinux' ;
exit 1;
fi

//código script


O código fica fácil de ler e facilita uma alteração no futuro.

Linux Professional Institute - LPIC-1
Novell Certified Linux Administrator - CLA

http://twitter.com/p4ulodi4s
http://www.prminformatica.com.br/


8. Re: Sufixo

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 14/07/2015 - 16:40h

Não sei se seria mais interessante fazer com que o script detecte automaticamente isso:

SETESTE=$(echo $(sestatus | grep SELinux\ status | cut -d':' -f2))
if [ "$SETESTE" == "enabled" ] ; then
echo "SELinux está ativado neste computador"
else
echo "SELinux não está ativado neste computador"
fi

Trecho testado em meu computador e funciona. Primeira regra: nunca confie no usuário, ele vai te fornecer informações erradas.

--
Luís Fernando Carvalho Cavalheiro
Public GPG signature: 0x246A590B
Só Slackware é GNU/Linux e Patrick Volkerding é o seu Profeta


9. Re: Sufixo "Se" no Shell [RESOLVIDO]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 14/07/2015 - 16:51h

lcavalheiro escreveu:

Não sei se seria mais interessante fazer com que o script detecte automaticamente isso:

SETESTE=$(echo $(sestatus | grep SELinux\ status | cut -d':' -f2))
if [ "$SETESTE" == "enabled" ] ; then
echo "SELinux está ativado neste computador"
else
echo "SELinux não está ativado neste computador"
fi

Trecho testado em meu computador e funciona. Primeira regra: nunca confie no usuário, ele vai te fornecer informações erradas.


+1 - Concordo 100% !
Ja tive taaaanta dor de cabeça por causa de user...

abs

---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


10. Obrigado

Alex Vieira
Alexxxx

(usa Fedora)

Enviado em 14/07/2015 - 17:21h


Obrigado a todos varias resposta ! uma melhor que a outra

top


!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts