shell script – Página: 2 – Elias Praciano
Às vezes pode ser necessário persistir na execução de um comando no Linux, até que ele retorne com sucesso.
Este código pode ser executado na linha de comando ou dentro de um script.
O comando ping é comumente usado dentro de um laço (ou loop) while, quando queremos ser avisados de que um certo nó na rede já se encontra online e conectado.
Há várias outras situações em que pode ser desejável manter o sistema operacional na tentativa de execução de um comando — até ele "dar certo".
Veja um exemplo de uso com o ping:
while true; do ping -c 1 192.168.1.100 && break; done;
Se tiver interesse em ler mais sobre o uso de loops no Bash, leia Exemplos de laços na Bash shell.
Publicado em 09/10/2017 27/09/2017 Categorias Linux, Programação, Tutoriais, UNIXTags bash, loop, shell scriptDeixe um comentário em Como fazer o Linux rodar um comando até ele dar certo
Este pequeno script em Bash, vai monitorar uma lista de sites, à sua escolha e vai avisar se algum deles não estiver online, em algum momento.
Como ele usa o comando ping, você também pode executá-lo dentro da sua rede local para monitorar diversos nós e ficar sabendo quando um for desligado.
# Um script feito para sistemas Linux e UNIX
# que faz monitoramento com o comando PING.
# adicione endereços IP ou hostnames,
# separados por espaços em branco, para serem
# monitorados pelo script.
HOSTS="127.0.0.1 192.168.1.0 192.168.0.133 google.com"
# sem ping request
# envia relatório de email quando...
ASSUNTO="Ping falhou"
EMAIL="elias@praciano.com"
for meuhost in $HOSTS
contador=$(ping -v -c $CONTADOR $meuhost | grep 'received' | awk -F',' '{print $2}' | awk '{print $1}')
if [ $contador -eq 0 ]; then
echo "O Host: $meuhost está fora do ar (o ping falhou) em $(date) - $ASSUNTO - $EMAIL"
# se você preferir receber um e-mail, descomente a linha abaixo
echo "Host : $meuhost  ${NAME[$val]} está fora do ar (o ping falhou) em $(date)" | mail -s "$ASSUNTO" $EMAIL
O código pode funcionar melhor dentro de outro script ou sendo executado periodicamente, dentro do crontab do seu sistema.
https://bash.cyberciti.biz/monitoring/monitor-windows-linux-server-with-ping-script/.
Publicado em 24/06/2017 16/06/2017 Categorias Linux, Programação, TutoriaisTags bash, ping, rede, shell scriptDeixe um comentário em Script Bash para monitorar um ou vários sites e verificar se estão online
Mesmo não querendo se dedicar a aprender e entender melhor os meandros da linguagem de programação de scripts Bash, pode ser útil conhecer alguns de seus conceitos.
Saber criar loops é um destes conhecimentos básicos que vale a pena adquirir.
Um pequeno script pode ajudar a poupar uma enormidade de tempo, no dia a dia de qualquer usuário, de qualquer sistema operacional.
Se achar melhor, adicione esta página aos seus favoritos (Ctrl + D), para ter uma referência rápida no futuro. 😉
Os diferentes tipos de loops do Bash
Os loops (ou laços) são expressões presentes em todas (ou quase todas) as linguagens de programação. Além disso, podem se dividir em tipos diferentes.
No Bash, você pode usar for, while e until.
Veja em que casos cada um é mais indicado:
for — se você tem experiência com outras linguagens de programação, no Bash, o for é um pouco diferente da maioria.
Basicamente é usado para te permitir iterar entre uma série de palavras dentro de uma string.
while — executa um pedaço de código, caso a expressão de controle seja verdadeira. Ele só irá parar quando ela for falsa — ou quando encontrar um break explícito no meio do código em execução.
until — muito semelhante ao while, exceto pelo fato de que o código é executado enquanto a expressão de controle é falsa.
Segue alguns exemplos simples, que você pode usar para compor ou construir um código mais sofisticado, para atender melhor às suas necessidades.
Você pode experimentar este código diretamente na linha de comando do sistema, como no exemplo abaixo
> echo item: $i
… ou pode abrir um editor e escrever o código dentro dele e gravar com algum nome. O meu, vou gravar como exemplo-for.sh:
A primeira linha informa ao sistema que o arquivo deve ser executado com o programa /bin/bash.
Na segunda linha declaramos a variável i como repositório dos diferentes valores contidos em $( ls ).
A terceira linha expõe o valor atual de i.
Por fim, done informa que chegamos ao final do laço for e, se não houver mais nada a ser feito, o programa para por aqui — ou segue sendo executado.
Depois de gravado, execute-o com o bash
bash exemplo-for.sh
Experimente também este script, para colorir texto:
for fg in {30..39}
echo -e "\e["$fg"m apenas um texto colorido pelos caracteres de escape do BASH."
Como criar um loop while no Bash
Veja um exemplo simples de laço while (enquanto), no Bash:
while [ $contador -lt 10 ];
echo O valor atual do contador é: $contador
O argumento -lt pode ser abreviatura de less than ou lower than, que significame "menos que" ou "menor que", em uma tradução livre.
Da mesma forma, usa-se -gt, como abreviatura de greater than, para "maior que".
Exemplo de uso do until no Bash
Se eu fosse traduzir livremente a linha until [ $contador -lt 10 ]; no exemplo abaixo, eu diria "até que (until) a variável contador seja menor que 10…"
Experimente o código e veja o resultado:
until [ $contador -lt 10 ];
echo O valor do meu contador é igual a $contador
Publicado em 20/06/2017 16/06/2017 Categorias Linux, Programação, Tutoriais, UNIXTags bash, loop, shell scriptDeixe um comentário em Exemplos de loops no Bash