Comparar conteudo da variavel

1. Comparar conteudo da variavel

Caraol Bastos Ianely
carol_ianely

(usa Debian)

Enviado em 23/11/2021 - 08:46h

Bom dia pessoal,
esou tentando fazer um script que scaneie a rede e guarde os dados encontrados em um arquivo (Até aqui OK),
mas daqui pra frente estou tendeo dificuldades extremas, pois eu quero filtrar ips adicionados ao arquivo de scan e
adiciona-lo em uma variavel, compara-la e realizar uma ação como exibir uma mensagem, enviar um email e etc

exemplo:
1 ip = cat scanrede | grep 192.168.0.10
2 if $ip eq "192.168.0.10" then
3 echo " equipamento 192.168.0.10 ficou ligado a noite "
4 fi

O sistema retorna erro na linha 2. Se alguem puder me dar uma orientação, ficarei muito grata.


  


2. Re: Comparar conteudo da variavel

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 23/11/2021 - 13:30h

carol_ianely escreveu:

Bom dia pessoal,
esou tentando fazer um script que scaneie a rede e guarde os dados encontrados em um arquivo (Até aqui OK),
mas daqui pra frente estou tendeo dificuldades extremas, pois eu quero filtrar ips adicionados ao arquivo de scan e
adiciona-lo em uma variavel, compara-la e realizar uma ação como exibir uma mensagem, enviar um email e etc

exemplo:
1 ip = cat scanrede | grep 192.168.0.10
2 if $ip eq "192.168.0.10" then
3 echo " equipamento 192.168.0.10 ficou ligado a noite "
4 fi

O sistema retorna erro na linha 2. Se alguem puder me dar uma orientação, ficarei muito grata.


v aí se ajuda
ip=`grep "192.168.0.10" scanrede`
[[ "$ip" = "192.168.0.10" ]] && echo "equipamento 192.168.0.10 ficou ligado a noite" || echo "equipamento 192.168.0.10 não ficou ligado a noite"


EDIT: existem outras maneiras de fazer !!!
1 - Vc pode colocar o grep diretamente no teste !!!
2 - Ao invés de comparar a variável com uma string vc pode simplesmente verificar se a variável está vazia !!!

------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------




3. Re: Comparar conteudo da variavel

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 23/11/2021 - 18:04h

carol_ianely escreveu:

Bom dia pessoal,
esou tentando fazer um script que scaneie a rede e guarde os dados encontrados em um arquivo (Até aqui OK),
mas daqui pra frente estou tendeo dificuldades extremas, pois eu quero filtrar ips adicionados ao arquivo de scan e
adiciona-lo em uma variavel, compara-la e realizar uma ação como exibir uma mensagem, enviar um email e etc

exemplo:
1 ip = cat scanrede | grep 192.168.0.10
2 if $ip eq "192.168.0.10" then
3 echo " equipamento 192.168.0.10 ficou ligado a noite "
4 fi

O sistema retorna erro na linha 2. Se alguem puder me dar uma orientação, ficarei muito grata.

Boa tarde Carol.

01 - ip = cat scanrede | grep 192.168.0.10
Para atribuir o resultado de um comando a uma variável, faça:
ip=$(cat scanrede | grep 192.168.0.10)
Sempre que for atribuir um valor para uma VAR, não deixe espaço entre o " = "

02 2 if $ip eq "192.168.0.10" then
if [ "$ip" = "192.168.0.10" ];then....
-eq é para comparar números
= ou == compara "string"


Sugestão:

ip="192.168.0.32";
grep -qw "$ip" ips.txt && echo "$ip ficou ligado"

--------------------------------------------------------------------------------------------------------------------------
Ou

if grep -qw "$ip" ips.txt;then
echo "$ip ligado a noite "
else
echo "$ip não encontrado"
fi

Sugestão para leitura, muito útil.....
https://aurelio.net/shell/canivete/

Para verificar uma sequência de IP's,
pode usar:
for ip in 192.168.0.{1..16};do
grep -qw "$ip" ips.txt && echo "$ip ficou ligado"
done


É isso...
Note que usei o parâmetro "w" no grep,
Isso é para "casar" somente com "a palavra completa".
Outras opções são:
Usar o fim de linha "$",
Ou o limitador de borda "\b"
Veja a saída sem o w, $, ou \b, em uma lista completa de ip's:

grep "192.168.0.10" ips.txt
192.168.0.10
192.168.0.100
192.168.0.101
192.168.0.102
192.168.0.103
192.168.0.104
192.168.0.105
192.168.0.106
192.168.0.107
192.168.0.108
192.168.0.109


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts