Shell Script nosso de cada dia - Episódio 4

Publicado por Wagner Souza em 08/01/2016

[ Hits: 2.275 ]

Blog: https://zerotoherosec.blogspot.com/

 


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!

Outras dicas deste autor

Trabalhando com datas no LibreOffice

Erro de chave pública ao atualizar Chrome no Fedora 22

Guias das Melhores Práticas de Segurança para GNU/Linux

Exercício Prático LPIC 11

Shell Script nosso de cada - Episódio 2

Leitura recomendada

Compilação Kernel 4.0.3 no Slackware

Script para adicionar hosts no Nagios

Utilizando arrays em shell script

Instalador Skype automatizado - Zenity

Como criar e manter um mirror do Slackware em seu próprio micro

  

Comentários
[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts