Mostrando entradas con la etiqueta IP. Mostrar todas las entradas
Mostrando entradas con la etiqueta IP. Mostrar todas las entradas

viernes, 9 de noviembre de 2018

SCRIPT PARA LA RECONEXION CON LA RED WIFI_ETECSA



Tuve este problema de que mi Nano M5 perdiera la conexión con la Wifi ETECTSA cada algunos minutos, así que  cada vez que deseaba usar el internet , tenía que reiniciar en Nano y esperar un tiempo, pues esto se toma su tiempo.
Luego mucho investigar sobre el asunto y probar todos los códigos publicados en la internet me di cuenta que al menos con mi Nano nada funcionaba, ni bajando el último Firmware.
Comencé a “cacharear” hasta que di con una solución al problema: conectarse mediante un cliente SSH y ejecutar el siguiente código:


#Moises Soft 09/11/2018
#!/bin/sh
logger Escaneando WIFI_ETECSA ini
while sleep 60
logger Escaneando WIFI_ETECSA
do
if ping -c 3 10.180.0.30 > /tmp/null
then
logger 10.180.0.30 ok
else
logger Conexion con WIFI_ETECSA perdida
sleep 1
if ! ping -c 3 10.180.0.30 > /tmp/null
then
logger Reconectando a WIFI_ETECSA
udhcpc -i ath0 -s /var/etc/udhcpc/udhcpc
fi
fi
done 2>&1 &


El problema era que hacer esto cada vez que yo encendiera el Nano era muy pesado, así que programe un cliente SSH que solo necesita una configuración inicial luego guarda estos datos cada vez que se abre y además de eso al ejecutarse si el nano no está encendido en ese momento queda a la espera cada 10 segundo hace el intento nuevamente y solo finaliza cuando se conecte y ejecute el script en el nano.
Aquí comparto el enlace del software, desarrollado en .Net (debe tener instalado en su PC el .net Framework 4.5), normalmente ya viene instalado en las ultimas versión de WINDOW, de lo contrario tendrá que instalarlo manualmente antes de poner usar este programa.

Links de descarga: http://moises-soft.net/web/upload/ssh-to-nano.rar


miércoles, 25 de julio de 2012

Detectar País, Región , Ciudad, Latitud , Zona horaria dado el IP de un cliente web. Código PHP




Una buena práctica en sitios web que necesiten registro de usuario es detectar el país y otros datos que pueden ser útiles aportando valor agregado y seguridad a su web .


¿Cómo detectar el IP real de un usuario que entra a su web?

Este código está en montones de páginas, lo comparto con ustedes en la clase que verán más adelante : método es getRealIP() de la clase IPLocalizador.


¿Cómo determinar dado el IP de un cliente , datos como: país , zona , ciudad , coordenadas , zona horaria?

Para ello podemos hacer uso de alguna API en internet que brinde el servicio gratis. Yo en este caso recomiendo usar el API que proporciona la web: www.ipinfodb.com

Paso 1: Registrarse en la web (http://www.ipinfodb.com/register.php) al registrarse y confirmar , obtienes una llave, esta llave no es más que un código que te identifica para hacer distintas consultas.

Ahora solo tenemos que hacer envíos al API de la siguiente manera:

http://api.ipinfodb.com/v3/ip-city/?key={llave}&ip={IP}


Como se puede ver en la URL anterior, se pasa de forma obligatoria key y ip. De forma opcional se pueden pasar los siguientes parámetros:


Parámetro
Valor por defecto
Posibles valores y significado
format  
raw
raw =>  Formato texto separado por punto y coma
xml => Formato XML
json => Formato  json



 Comparto con ustedes las siguientes clases usadas en un proyecto desarrollado por Moises Soft:


class IPLocalizadorData{
   var $statusCode; // estado de los datos
   var $ipAddress;   // IP
   var $countryCode;  // Código de 2 caracteres del país
   var $countryName;   // Nombre del país en Inglés
   var $regionName;    // nombre de la región
   var $cityName;      // nombre de la ciudad
   var $zipCode;       // código postal
   var $latitude;      // latitud
   var $longitude;     // Longitud
   var $timeZone;      // Zona horaria
}


class IPLocalizador {
     /**
     *
     * @param string $ip
     * @param string $key
     * @return IPLocalizadorData
     */
    static function getData($ip,$key)
    {
       if (!$ip) $ip = self::getRealIP();


        if (!$key)
        $key = "su llave";
        $response =   file_get_contents("http://api.ipinfodb.com/v3/ip-city/?key=$key&ip=$ip&format=raw");

       $part = split(";", $response);

       $r = new IPLocalizadorData();
       $r->statusCode = $part[0];
       $r->ipAddress = $part[2];
       $r->countryCode = $part[3];
       $r->countryName = $part[4];
       $r->regionName = $part[5];
       $r->cityName = $part[6];
       $r->zipCode = $part[7];
       $r->latitude = $part[8];
       $r->longitude = $part[9];
       $r->timeZone = $part[10];

       return  $r; 
    }

static  function getRealIP()
{

   if( $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
   {
      $client_ip =
         ( !empty($_SERVER['REMOTE_ADDR']) ) ?
            $_SERVER['REMOTE_ADDR']
            :
            ( ( !empty($_ENV['REMOTE_ADDR']) ) ?
               $_ENV['REMOTE_ADDR']
               :
               "unknown" );

      // los proxys van añadiendo al final de esta cabecera
      // las direcciones ip que van "ocultando". Para localizar la ip real
      // del usuario se comienza a mirar por el principio hasta encontrar
      // una dirección ip que no sea del rango privado. En caso de no
      // encontrarse ninguna se toma como valor el REMOTE_ADDR

      $entries = split('[, ]', $_SERVER['HTTP_X_FORWARDED_FOR']);

      reset($entries);
      while (list(, $entry) = each($entries))
      {
         $entry = trim($entry);
         if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) )
         {
            // http://www.faqs.org/rfcs/rfc1918.html
            $private_ip = array(
                  '/^0\./',
                  '/^127\.0\.0\.1/',
                  '/^192\.168\..*/',
                  '/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/',
                  '/^10\..*/');

            $found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);

            if ($client_ip != $found_ip)
            {
               $client_ip = $found_ip;
               break;
            }
         }
      }
   }
   else
   {
      $client_ip =
         ( !empty($_SERVER['REMOTE_ADDR']) ) ?
            $_SERVER['REMOTE_ADDR']
            :
            ( ( !empty($_ENV['REMOTE_ADDR']) ) ?
               $_ENV['REMOTE_ADDR']
               :
               "unknown" );
   }

   return $client_ip;

}

}


De modo que usted llamando al método getData($ip,$key) de la clase IPLocalizador, puede obtener un objeto de la clase IPLocalizadorData , con toda la información que inicialmente deseábamos obtener.


Limitantes de la API

Esta API es gratis , y solo dejará hacer 2 consultas por segundo , por lo que es muy recomendado solo hacer la consulta 1 vez y almacenar la información en las variables de sección , cookies o base de dato.