Detectando se um Xbox 360 está on-line

0

Eu tenho trabalhado em um conjunto de páginas PHP que roda em um servidor Apache em uma caixa linux (Ubuntu), que retorna status e informações sobre os dispositivos em minha LAN. Uma coisa que é feita é um teste de ping simples para determinar se o dispositivo está online em relação à LAN.

Executar "ping -c 1 -w 1 host" funciona bem com tudo exceto meu Xbox 360, que parece estar trancado. Se eu usar "nmap -sN xbox360", ele informará que está on-line, mas isso requer privilégios de root.

Alguma idéia de como resolver esse problema? Eu não encontrei nada na internet sobre como habilitar o Xbox 360 para responder a pings, existe algo que não requer privilégios de root (que podem ser executados a partir de um script php) para determinar se o meu Xbox está conectado à LAN? / p>     

por Robert Mashlan 08.07.2013 / 07:55

1 resposta

0

Pergunta antiga que conheço, mas, minha solução (encontrei a pergunta no Google ao procurar uma solução para meu problema) ...

No meu PI de framboesa, crie um script da seguinte forma:

#!/bin/bash
SUBNET=192.168.1.
FOUT=/mnt/sda/inbound/hosts.state
FSTATE=/tmp/host.state

for i in 'seq 1 255';
do
    IP=${SUBNET}${i}
    sudo nmap -sP ${IP} | grep "Host up" >/dev/null

    HOSTSTATE=1
    MAC=1
    if [ $? -eq 0 ]; then
            MAC=$(sudo nmap -sP -n ${IP} | grep MAC | cut -d ' ' -f3)
            DATETIME=$(date)
            HOSTSTATE="${IP},${MAC},up"
    else
            HOSTSTATE="${IP},,down"
    fi

    if [ -z "${MAC}" ]; then
            ## HACK FOR grep NOT RETURNING CORRECT EXIT CODE
            HOSTSTATE="${IP},,down"
    fi

    OLDSTATE=""
    if [ -f ${FSTATE} ]; then
            OLDSTATE=$(grep ${IP} ${FSTATE} 2>/dev/null)
    fi
    if [ -z "${OLDSTATE}" ]; then
            OLDSTATE=${IP},,unknown
    fi

    if [ "${OLDSTATE}" != "${HOSTSTATE}" ]; then
            STATE1=$(echo ${OLDSTATE} | cut -d ',' -f3)
            STATE2=$(echo ${HOSTSTATE} | cut -d ',' -f3)
            CHANGE="from ${STATE1} to ${STATE2}"
            CHANGEMSG="${IP},${MAC} changed ${CHANGE} at $( date )"
            echo ${CHANGEMSG} >> ${FOUT}
            grep -v ${IP} ${FSTATE} >> ${FSTATE}.tmp
            echo ${HOSTSTATE} >> ${FSTATE}.tmp
            mv ${FSTATE}.tmp ${FSTATE}
    fi
done

Em seguida, edite o crontab do usuário por crontab -e , defino-o para:

0,30 * * * * /opt/scripts/checkHostActivity

Finalmente, adicione o usuário aos sudoers para permitir que eles executem os comandos do nmap.

Job jobbed. A cada 30 minutos, examino a rede para ver quais hosts estão ativos e escrevo as alterações em /mnt/sda/inbound/host.state

    
por 09.08.2015 / 19:32