Acho que a solução mais fácil é usar solicitações de eco ICMP (ping). Para isso, você deve configurar a caixa XP para responder às mensagens ICMP, conforme descrito aqui .
Agora, verifique se o Linux e a máquina XP estão na mesma rede e se ambos têm um endereço IP. Você pode verificar isso no Linux com
ifconfig
e no Windows com
ipconfig /all
Você precisará do endereço IP do XP para o seguinte script:
#!/bin/bash
time (
while [ true ]; do
ping -c 1 "$1" > /dev/null || break
sleep 60
done
)
Salvar este script em algum arquivo, por exemplo pingtimer.sh
e torná-lo executável com chmod +x pingtimer.sh
Agora você pode iniciá-lo com
./pingtimer.sh <target IP address>
dentro do mesmo diretório.
Vamos quebrar isso:
-
time ()
mede o tempo que o comando dentro do()
levou para executar. -
while [true]; do ...; done
repete o comando interno (...
) infinitamente ou até ser interrompido ou quebrado. -
ping -c 1 "$1" > /dev/null
envia uma solicitação de ping para o endereço IP armazenado em$1
, que é o primeiro argumento do programa, ou seja, o IP de destino. Comoping
produz muita saída, vamos apenas descartar isso para/dev/null
-
... || break
quebrará o 'infinito' enquanto loop se o comando antes do operador||
retornar um valor diferente de zero. No caso de ping, isso acontece se pelo menos um pacote ICMP não foi respondido. Se isso acontecer, por exemplo porque a máquina de destino está desativada, o programa será encerrado, imprimindo a saída detime
. -
sleep 60
fará com que o processo durma por 60 segundos, após o qual outra solicitação de eco ICMP é enviada. Ajuste este valor para provar. Observe que alguns firewalls deixarão de responder se você começar a inundá-lo com pings.