miércoles, 26 de octubre de 2011

Sniffer de Red - Censa la red cada minuto de los host encendidos y lo registra en una base de datos para una Estadística posterior

Descripcion:


sniffer.sh - Inicio de Archivo
---------------------------------------------------------------------------------------------------
#!/bin/bash
#script inspirado en el creado por: franklin aliaga
#script mejorado y actualizado por: Ivan Vergés (microstudi)
#script modificado para el ingreso a la Base de datos: KZ DR

#declaracion de arrays
declare -a IPS_CONOCIDAS

####################
#Configuracion:
####################

#Array de ip's conocidas, la primera debe ser la del router, no hace falta poner la propia
#separar por espacios las ips
IPS_CONOCIDAS=( "192.168.0.0" )

#Array de MAC's conocidas (para que no liste las direcciones DHCP de ordenadores conocidos)
#para conocer una MAC, usar el comando "arp IP"
#separar por espacios las macs

#Interfaz de red (eth0, wlan0, etc)

#Mascara de red (24=255.255.255.0, 16=255.255.0.0)
#Mi red es de 19 Bits
MASK=19

#####################
#Menu de opciones

#aqui obtenemos la nuestra ip
#if [ ! $LOG ]; then
#echo "Mi ip: $ip"
#fi
#añadimos nuestra IP al array
IPS_CONOCIDAS[${#IPS_CONOCIDAS[*]}]=$ip
#if [ ! $LOG ]; then
#echo "No se controlan los equipos siguientes: "${IPS_CONOCIDAS[*]}
#if [ "${MACS_CONOCIDAS[*]}" != "" ] && [ ! $NOMAC ]; then
# echo "No se controlan los equipos con las MAC siguientes: "${MACS_CONOCIDAS[*]}
#fi
#fi

IPS_MAQUINA='192.168.31.6/32'

#ComproBar si existen los programas que usaremos:
if [ ! -x /usr/bin/nmap ]; then
echo "El programa nmap no está instalado!"
exit
fi
#con este comnado de nmap nos muestra los hosts conectados
#y los guarda en el fichero "-" que es la salida standard
#redireccionada a la variable variable HOST_IPS

/usr/bin/nmap -sP -n --exclude $IPS_MAQUINA ${IPS_CONOCIDAS[0]}/$MASK  | sed '/#/d' - | sed '/Nmap/d' - | sed '/^$/d' -    > /tmp/tmp1

/usr/bin/awk 'BEGIN {x=0}
   {  
if (x<2) {
     printf("%s",$0)
     x=x+1
   }
    if (x==2) {
     printf("\n")
   x = 0
  }
}' /tmp/tmp1 > /tmp/tmp2

HOST_IPS=$(</tmp/tmp2)

rm -rf /tmp/tmp1
rm -rf /tmp/tmp2
rm -rf /root/lista_export.txt

#aqui cortamos el formato obtenido anteriormente de archivo para solo obtener las ip's
IPS=$(echo "$HOST_IPS" | awk '{print $2}' )
MAC1=$(echo "$HOST_IPS" | grep Host  )
#aqui capturamos el numero de lineas que tiene nuestro archivo
#en este caso la cantidad de ip's que hay en el archivo "-" (entrada standard)
contador=$(echo "$IPS" | wc -l - )
contador=$(echo "$contador" | cut -f1 -d "-"  )
total=$(expr $contador - 1)
#esto es para que el script tenga acceso a las X des de crontab

#Bucle de búsqueda entre las ip's encontradas
var=0
while [ $var -le $total ]; do
let var=$var+1
#capturamos la ip por linea
linea=$(echo "$IPS" | sed -n "$var p")
        MAC=$(echo "$MAC1"   | sed -n "$var p" | awk '{print $8}' )

echo "$linea|$MAC" >> lista_export.txt
done

//Se exporta al archivo lista_export.txt para luego ser ingresado a la base de datos

/usr/local/Zend/Core/bin/php /usr/local/Zend/apache2/htdocs/sistemas/net-sistema.php > /dev/null 2>&1

---------------------------------------------------------------------------------------------------
Fin de Archivo

net-sistema.php - Inicio de archivo
---------------------------------------------------------------------------------------------------


<?php

function dame_un_dato($query)
{
        include('connect.php');
        $stid = oci_parse($conn, $query);
        oci_execute($stid, OCI_DEFAULT);
        $row = oci_fetch_array($stid , OCI_RETURN_NULLS);
        return  $row[0];
}

/////////////////////////////////////////////////////////
include ('connect.php');
$archivo = file('/root/lista_export.txt');
//////////////////////////////////////
// DEVUELVE COD_NETWORK + 1
$s_cod_network = dame_un_dato("SELECT lpad( NVL(MAX(mae.Cod_Network),0)+1,6,'0') FROM net_lan_cab mae");
//////////////////////////////////////

$CantPc=0;
foreach($archivo as $linea => $contenido) {
  ++$CantPc;
}

$queryCAB = "insert into net_lan_cab (cod_network,fec_registro,cant_equi_encendidos) VALUES ('$s_cod_network',sysdate,$CantPc)";


$stid = oci_parse($conn, $queryCAB);
        if (!$stid) {
                $e = oci_error($conn);
                print htmlentities($e['message']);
                exit;
        }
$r = oci_execute($stid, OCI_DEFAULT);
        if (!$r) {
                $e = oci_error($stid);
                echo htmlentities($e['message']);
                exit;
        }
$committed = oci_commit($conn);
/////////////////////////////////////////////////

$num_id=0;
foreach($archivo as $linea => $contenido) {

  $i=0;
  $num_ip="";
  $num_mac="";
  ++$num_id;
  $array = explode('|', $contenido);
  foreach($array as $columna) {
    if ($i == 0 ) {
$num_ip=trim($columna);
    }else{
$num_mac=trim($columna);
    }
    ++$i;
  }

$queryDET = "insert into net_lan_det (cod_network, num_ip, num_mac,num_id) VALUES ('$s_cod_network','$num_ip','$num_mac',$num_id)";

$stid = oci_parse($conn, $queryDET);
        if (!$stid) {
                $e = oci_error($conn);
                print htmlentities($e['message']);
                exit;
        }
$r = oci_execute($stid, OCI_DEFAULT);
        if (!$r) {
                $e = oci_error($stid);
                echo htmlentities($e['message']);
                exit;
        }
$committed = oci_commit($conn);
}

?>
---------------------------------------------------------------------------------------------------
Fin de archivo

connect.php - Inicio de archivo
---------------------------------------------------------------------------------------------------
<?
$Servidor = '//ip-servidor/oraclesid'; //suele ser localhost
$Usuario  = "user"; //usuario de la base de datos
$Password = "user"; //contraseña de la base de datos
$conn=oci_connect($Usuario,$Password,$Servidor) or die("</br><Strong>Disculpen las molestias. Estamos trabajando para usted...</Strong>");

if (!$conn) {
$e = oci_error();
print htmlentities($e['message']);
exit;
}
?>
---------------------------------------------------------------------------------------------------
Fin de archivo

crontab -e 

* * * * * /usr/sbin/sniffer.sh

Estructura de las 2 tablas 

cabecera - (net_lan_cab)  cod_network , fec_registro , cant_equi_encendidos
detalle - (net_lan_det) cod_network , num_ip , num_mac , num_id

Exportando solamente la estructura de esquema de Base de datos ORACLE

Exportar solamente la estructura, sin incluir datos, del esquema.

exp system/password file=archivo.dmp log=export.log buffer=300000 owner=esquema rows=n statistics=none

DONDE:
archivo: es el nombre que le des al archivo dmp
exporte: nombre del log
esquema: es el nombre del esquema de la b.d

martes, 25 de octubre de 2011

Error usual de "Windows detecto un conflicto en la direccion IP" y no es un conflicto físico

Créditos: Este caso peculiar fue planteado y solucionado por mi amigo Victor Padilla Caceres, con quien compartimos esta experiencia de persecución.
  
…Conflicto de Windows 7 al ingresar una IP de la red

Se pierde conexión al Dominio y por ende a Internet.

lunes, 17 de octubre de 2011

LIBRO: "APRENDE POO PARA PHP5" - PHP Senior



URL: http://phpsenior.blogspot.com/

openKM - Gestión de versiones de los Documentos

¿Por qué usar un Sistema de Gestión de Documentos?

Las empresas producen montones de documentos, imágenes y otros tipso de información en formato electrónico. La localización de esta información supone una labor que consume mucho tiempo.

En las empresas, los usuarios suelen guardar los documentos en carpetas de su ordenador. Nadie sabe qué información hay en toda la empresa y qué información es necesaria.

jueves, 13 de octubre de 2011

ROUTE - ACCESO A EQUIPO DE OTRA RED CON DISTINTA PUERTA DE ENLACE

El caso que presento es el siguiente,

Existen 2 redes en una misma red física donde el gateway es el mismo equipo en común, que tiene una ip física y la otra virtual en la misma tarjeta de red ( 192.168.1.1 / 192.168.2.1). Pero las maquinas de la RED 2 solo podrán acceder  a las maquinas que tengan el mismo gateway  ( 192.168.1.1 / 192.168.2.1). Quiere decir que no se podra acceder al equipo que tiene el AppWeb, es por eso que para poder arreglar este inconveniente en la maquina donde se encuentra la aplicación hay que agregar la siguiente regla.

Regla de routeo:

route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1


Mysql - Importar y export BD

1.- Exportar todas las bases de datos

mysqldump -u root -p"password" --all-databases > backup-all.sql

2.- Importar la base de datos

mysql -u username -p databasename < filename.sql

Sin user:pass

/opt/lampp/bin/mysql -u root   < /backup/backup-web/backup-all_2012-05-22.sql

URL: http://www.regoremor.com/mysql/exportacion-e-importacion-de-bases-de-datos-mysql-linux/

Programación bash en Linux - Shell Script - While/If/For

Aqui les dejo un link muy bueno para realizar una programación sencilla. Podran realizar un menu de ejecución de aplicaciones creadas por ustedes mismos y entregar al usuario Final.


URL: http://linuxconfig.org/Bash_scripting_Tutorial

Inicio automatico de servicio nuevo (source) - chkconfig - Centos/RedHat

Realizare una demostración con el disparador o ejecutor del LAMPP ubicado en el directorio /opt/lampp/

(Asi quedará)

martes, 4 de octubre de 2011

Listado de Directorios, Archivos y Otros - Linux

ls -d */   (listar solamente directorios)
find /ruta -type f  ( listar solamente archivos )
ls -lrt | awk '/^[-]/'    ( listar solamente archivos )
ls -lap | grep -v "/"    ( listar solamente archivos y ocultos)