msoliver
(usa Debian)
Enviado em 19/12/2020 - 19:00h
kasbi escreveu:
Olá Pessoal eu preciso de ajuda na criação de um script porém não faço ideia de como começar. gostava de ajuda, será que alguém consegue
é o seguinte Pretende-se desenvolver um script para a shell — chamado pingsweeper.sh — que analise o
estado da ligação do computador a um conjunto de outras máquinas, ligados através da Internet.
Este script deve basear-se no comando ping, que envia uma mensagem ICMP_ECHO_REQUEST
à máquina destinatária e aguarda pela resposta.
Se não houver resposta dentro de um prazo pré-determinado, considera-se que a mensagem se perdeu (e, possivelmente, a outra máquina nãoestá acessível).
O comando a utilizar para testar uma máquina deve ser o seguinte:
$ ping -c 1 <endereço_máquina> 2>&1
A execução do comando pode indicar três possíveis situações:
1. Activo: o comando obteve uma resposta da outra máquina (0% pacotes perdidos).
2. Inactivo: o comando não obteve uma resposta da outra máquina (100% pacotes perdidos).
3. Inválido: o comando não conseguiu obter um endereço válido para a outra máquina
#---------------------------------------------------------------------------------------------------------------------#
Boa tarde Kasbi,
Segue sugestão:
Nota.: As três possíveis "Respostas", estou "pegando" do "exit code", veja no comando "case".
[code]
#!/bin/bash
#-------------------#
#Ping e Relatórios
#-------------------#
cam="\033[33;1m";cvm="\033[31;1m";cf="\033[m";
linha() { printf '%*s' "40" ''|sed "s/ /—/g";}
_ping() {
#-c1 01 ping,-s0 8bits, -W1 Tempo de espera, 1 segundo
read -p "Digite o 'IP': " ip
ping -c1 -s0 -W1 ${ip} &>/dev/null
case $? in
0) stt="Ativo";;
1) stt="Inativo";;
2) stt="Inválido";;
esac
echo "${ip}:Endereço ${stt}" >> temp_00.txt
}
_rel() {
printf "\33c$(linha)\n${cam} Relatório Geral:\e[m\n$(linha)\n";
awk -F":" '{s[$1" "$2]++;}END{for(a in s)print s[a],a}' temp_00.txt|sort -nr|column -t
awk -F":" 'BEGIN{print "'$(linha)'\n'${cam}' Estatísticas:'${cf}'\n'$(linha)'"};
{stt[$2]++;count++;};
END{for(a in stt)
print stt[a]"/"count"\t",a"(s)\t",stt[a]/count*100"%"};
END{print "'$(linha)'"}' temp_00.txt
}
[[ "$1" =~ ^(_ping|_rel)$ ]] && $1 || echo -e "\n$(linha)\n${cvm}Parâmetro Inválido: $1${cf}\nUso: $0 (_ping|_rel)\n$(linha)\n"
______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando:
lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:
Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.
______________________________________________________________________