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)

lunes, 26 de septiembre de 2011

Restaurar Zimbra 5.0 migrado a otro server /opt/zimbra

  1. Es necesario tener el directorio /opt/zimbra intacto, antes de empezar ha realizar la recuperacion realizar copia del directorio por un tema de seguridad.
  2. Url: http://techironic.com/index.php/2010/10/06/instalacion-backup-y-restore-de-zimbra-open-source/
  3. Si salio todo bien, pues termina todo aqui.
  4. Si salio un problema sea el cual fuese, primero realizamos un stop al zimbra.
  5. Una vez parado el zimbra, realizamos el proceso de instalacion del zimbra 5.0 para iniciar la reparacion sin eliminar las cuentas.
  6. Cuando nos pida el Upgrade le damos"no" (porque reinstalara y eliminara todo), luego no preguntara si deseamos eliminar las cuentas le damos "NOOO", si no ya fuimos. 
  7. Luego indicamos que ... en el video veran el resto. Provecho

jueves, 22 de septiembre de 2011

PHP - LINUX - SQL 2008 + EJECUCION DE STORE PROCEDURES AVANZADO

Se requiere la instalacion de LAMPP (xampp-linux-1.7.7.tar.gz)

/opt/lampp/etc/freetds.conf
-------------------------------
[SRV2008R2]
        host = IP
        port = 1433
        tds version = 7.0
-------------------------------

Test de prueba PHP

<?php

ini_set("memory_limit","300M");

set_time_limit(0);

$servidor_sqlserver = 'SRV2008R2';

lunes, 12 de septiembre de 2011

Decimal codificado en binario - STRING

En sistemas de computación, Binary-Coded Decimal (BCD) o Decimal codificado en binario es un estándar para representar números decimales en el sistema binario, en donde cada dígito decimal es codificado con una secuencia de 4 bits. Con esta codificación especial de los dígitos decimales en el sistema binario, se pueden realizar operaciones aritméticas como suma, resta, multiplicación y división de números en representación decimal, sin perder en los cálculos la precisión ni tener las inexactitudes en que normalmente se incurre con las conversiones de decimal a binario puro y de binario puro a decimal. La conversión de los números decimales a BCD y viceversa es muy sencilla, pero los cálculos en BCD se llevan más tiempo y son algo más complicados que con números binarios puros.
.
http://es.wikipedia.org/wiki/Decimal_codificado_en_binario

Webservice Soap - SpringSource

Lista de requisitos para crear un proyecto maven.

1.- Crear Proyecto Maven
2.- Tipo:  mavem-archetype-webapp
3.- pom.xml modificar > build dependencies  ( https://github.com/lshimokawa/java-ejemplos/tree/master/apachecxf-jaxws-helloworld)
4.- web.xml
5.- Interface, Clase @Webservice
6.- applicationContext.xml

Notas: Webservices

Interoperatividad
Autodescriptivo
Estandar
Reutilizacion



viernes, 9 de septiembre de 2011

jueves, 8 de septiembre de 2011

Sistema para la gestión de recursos informáticos - Inventario - ocsinventory-ng

Con ustedes una herramienta de mucha Utilidad para el inventario de los equipos informáticos y software. Algo muy útil para el área de soporte técnico.

http://www.ocsinventory-ng.org/



GLPI

Este otro software tiene un modulo para inventario de hardware y software, pero mas se orienta a tickets de atención de incidencias.

http://www.glpi-project.org/spip.php?article41&lang=en

lunes, 5 de septiembre de 2011

Agregar Tomcat 7 a SpringSource

Agregaremos el servicio Tomcat 7.0 ha nuestro ID Springsource.

URL: http://www.reverse.net/pub/apache/tomcat/tomcat-7/v7.0.22/bin/apache-tomcat-7.0.22.zip

Paso 1.-

Crear proyecto GoogleCode

Para poder crear un proyecto en googlecode, debemos estar autentificados, de no ser así es necesario crear nos una cuenta en google.

URL: code.google.com/hosting/

Agregar SubEclipse en springSource - Paso a paso

Aquí muestro el vídeo de la instalación del subeclipse para springsource.


Aqui el paso a paso con imágenes:

viernes, 22 de julio de 2011

CONSULTAS SQL - SQLSERVER

Para obtener el año del S.O

select year(GETDATE())

Devuelve la cantidad de días entre la diferencia de la fecha Actual del S.O y la fecha ingresada

select datediff (dd, '1984-11-27', GETDATE())

Devuelve la cantidad de año entre la diferencia de la fecha Actual del S.O y la fecha ingresada

select datediff (yy, '1984-11-27', GETDATE())

PROGRAMA WEB PARA DIAGRAMAR PROCESOS, REDES, ENTRE OTRAS

Esta es una herramienta web para poder realizar diagramas de red entre otras de una manera rápida, sin necesidad de instalar una aplicación en nuestro computador.

TIPS SOBRE TRABAJO CON RAID

RAID 0 + 1 
Primero distribuye (1 – 2)= Raid 0 luego espeja (1 – 2) (1 – 2) = Raid 1

miércoles, 20 de julio de 2011

PROBLEMA DE ARRANQUE EN SISTEMA OPERATIVO RED HAT EN SERVIDOR IBM BLADECENTER - HS22

Este es un problema presentado cuando se modifico el archivo "fstab" y al reiniciar el equipo presento esto.


CON USTEDES EL COMANDO "TAIL" - SEGUIMIENTO DE ERRORES - GNU/LINUX

No detectar los errores de los servicios que maneja nuestro Linux o Gnu/linux puede ser un problema. Ahora les mostrare a como realizar seguimientos por ejemplo del servidor de correo electrónico:

"tail  -f  /var/log/maillog"

COMANDOS PARA EL MANEJO DE COLAS DE CORREO DE POSTFIX

Este comando le sera util a todos aquellos que utilicen como motor de correo electronico POSTFIX. Aqui el comando "postsuper" con sus parametros y su breve explicacion.

Nota: Hace un tiempo tuve un problema con una maquina infectada, cual saturaba el servidor con 100tos de correos, cual verificando los LOG del S.O (/var/log/maillog) encontre la maquina. Pero para eliminar los mensajes en cola utilice "postsuper -d ALL" liberandolo y dando solucion al problema.

UNA BUENA HERRAMIENTA DE PING, NSLOOKUP, CHEQUEO DE PUERTOS, RUTAS DE PAQUETES (TRACEROUTER)

Es de suma importancia que un administrador de red tenga las herramientas necesarias para poder realizar las pruebas con las altas de los dominios, las ip publicas asignadas, el registro mx de correo, entre otras. Es asi que doy a conocer esta herramienta web.

URL : http://ping.eu

Con la herramienta ping podemos realizar la prueba de respuesta de un host publico (ping.eu) hacia un dominio a verificar.

Tool Ping

lunes, 18 de julio de 2011

SCRIPT DE CONFIGURACIÓN DEL SISTEMA OPERATIVO PARA LA INSTALACION DE ORACLE 10G

Es todo un problema tener que configurar cada vez el Linux (RedHat o Centos) para tenerlo listo para la instalacion de Oracle Database 10g o 11g. Es por eso que he realizado un script para su ejecucion luego de realizar la instalacion el S.O siendo usuario "root".