Pular para o conteúdo

Shell Script nosso de cada dia - Episódio 4

Dica publicada em Shell Script / Avançado
Wagner Souza wagnerfs
Hits: 4.522 Categoria: Shell Script Subcategoria: Avançado
  • Indicar
  • Impressora
  • Denunciar

Shell Script nosso de cada dia - Episódio 4

Retomando nossas atividades...

Um sysadmin precisa descobrir quais máquinas em sua rede possuem o sistema operacional Windows ou Linux. Esta tarefa deve ser feita com um script em shell.

Solução

Um script simples pode ser criado utilizando o ping e obtendo a resposta do TTL, que nada mais é que o tempo de vida de um pacote. O Windows possui um TTL de 128, enquanto máquinas com os sistemas operacionais Linux e Unix possuem um de 64. Sendo assim, segue o script.

#!/bin/bash

IPs="192.168.0.104 192.168.0.101"
j=0


for i in $IPs;
do

testIP=$(ping -c1 $i | grep -i ttl= | cut -d' ' -f6 | sed 's/.*ttl=//')

if [ $testIP -eq 128 ]
then 
	echo "Maquina windows"
		else 
			echo "Maquina linux"
fi

done

Acrescente a quantidade de IPs que achar conveniente ao array. Uma dica que sempre dou é melhorar o script e compartilhar o conhecimento.

Essa foi mais uma dica de Shell Script. Até a próxima!

Exercício Prático LPIC 10

Instalação do PopcornTime Community

Erro ao formatar partições EXT4 no OpenSUSE [Resolvido]

Configurações de rede com o comando ip

Shell Script nosso de cada - Episódio 2

Adicionando serviço ao ntsysv no Red Hat 9

Bloqueando Facebook com IPtables (de forma fácil, intuitiva e eficiente)

Instalador Skype automatizado - Zenity

Limpando o .recycle do Samba

Como trocar senhas de usuários dentro de um Shell Script

#1 Comentário enviado por juniorze em 19/04/2018 - 13:55h
Sei que já estamos a quase 2 anos depois...
Mas dei uma melhorada para array's
e se o destino não for encontrado, pq assim o resultado é:
./Ping.sh: linha 9: [: -eq: esperava operador unário
Maquina linux

Segue nova versão:

#!/bin/bash
clear
IPs=("172.16.18.16" "172.16.18.204" "172.16.18.253")

for i in ${IPs[@]};
do
testIP=$(ping -c1 $i | grep -i ttl= | cut -d' ' -f6 | sed 's/.*ttl=//')
if [ $testIP -eq 128 ] 2>>/dev/null
then
echo "Maquina windows"
elif [ $testIP -eq 64 ] 2>>/dev/null
then
echo "Maquina linux"
else
echo "Destino Não Encontrado"
fi
done

Contribuir com comentário

Entre na sua conta para comentar.