Shell Script nosso de cada dia - Episódio 4
Dica publicada em Shell Script / Avançado
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.
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!
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!
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