Download capítulo 1 manual técnico

Document related concepts
no text concepts found
Transcript
2
CAPÍTULO 1
MANUAL TÉCNICO
3
ESTANDARES,OBJETIVOS,COMPONENTES
INSTALACION DE CENTOS 5
4
5 21
CONFIGURACION
DE LA RED
22-23
MAQ.VIRTUAL
24-28
TOMCAT
29-33
SAMBA
34-43
DNS
44-46
HTTPD
47-48
SNMP
49-53
VNC
54-56
PROCESOS Y FUNCIONES
IMPLEMENTACION DEL SNMP
62
CAPTURA DE SOFTWARE MEDIANTE SNMP
63
CAPTURA DE HARDWARE MEDIANTE SNMP
64
OIDS PERMITEN CAPTURA MEDIANTE SNMP
65
EJECUCION SNMP
66
GENERACION DE REPORTES
65
SCRIPTS DE LA BASE DE DATOS
67-73
4
1.1. Estándares del Sistema
Los estándares son una forma organizada de asignar los nombres a los
objetos para ayudar a entender la lógica de un sistema.
1.2. Objetivo
Los estándares utilizados por el sistema fueron diseñados para que el
código sea preciso, completo.
1.3. Componentes del Sistema
•
Configuración del Servidor SNMP Y VNC.
•
Desarrollo de la Aplicación.
•
Objetos de la Base de Datos
5
INSTALACIÓN DE CENTOS 5
1. Inicie su máquina utilizando la opción de booteo desde el CD, DVD
deberia poder apreciar una imagen similar a la siguiente .
Este es el gestor de arranque, en el podemos introducir algunas opciones de
arranque del instalador, en nuestro caso al tratarse de una instalación simple,
presionaremos
ENTER
para
configuraciones por defecto.
que
la
instalación
se
inicie
con
las
6
2. Ahora veremos la pantalla de verificación de medios Esta pantalla nos
indica que la instalación se la realizara a partir de un medio extraible de
instalación (CD, DVD Pendrive) entonces el instalador
nos pregunta si nosotros queremos probar los medios (verificar si no tiene
errores) ya que una vez que el instalador comience necesitara de la gran
mayoría de los programas que están en el cd o dvd por lo que un cd
defectuosos podría ser la causa de una instalación fallida, es recomendable
que se realice esta verificación si no se desean tener problemas.
7
3. Finalmente cargara el instalador con un entorno gráfico bastante sencillo
En el cual lo único que nos queda es hacer click en siguiente.
4. En primer lugar escogemos el idioma de nuestra instalación.
8
5. Posteriormente escogemos la distribución de idioma del teclado
6. Luego tendremos que indicarle al sistema la disposición de espacio físico
que tendrán los datos .
Como vemos en la imagen podemos escoger entre 4 opciones básicamente,
la primera elimina todas las particiones del disco y particiona todo
automáticamente.
9
La segunda busca las particiones tipo ext2 ext3 volumenes lógicos y swap y
las elimina y particiona todo automáticamente. La tercera toma el espacio
libre que quede en el disco y particiona todo automáticamente. La cuarta que
es la que utilizaremos en esta instalación nos permite efectuar las tareas de
forma manual.
7. Hay que notar que esta marcada la opción revisar y modificar la capa de
particiones .
Ahora bien dependiendo si tenemos instalado ya algún sistema operativo en
el disco duro veremos el espacio disponible del disco, principalmente
debemos crear dos particiones para una configuración básica, la particion
Swap y la raiz (/)
10
8. Entonces hacemos click en el botón Nuevo y procedemos a crear la
particion swap
La partición swap se utiliza como memoria virtual intercambio por lo tanto es
necesaria para GNU/Linux.
9. Ahora crearemos la partición raiz donde se instalar el sistema
propiamente dicho.
11
Vemos en la imagen que hemos escogido el formato ext3 y también se ha
marcado la opción “Completar hasta el tamaño máximo permitido” de esta
forma se utilizara el espacio disponible, también podrías definir un tamaño
que se ajuste a tus necesidades solo recuerda que este tamaño debe ser
mínimamente de 4 Gb.
10. La siguiente pantalla consulta sobre si queremos instalar el Gestor de
arranque GRUB .
12
11. En la pantalla terminamos añadiendo las configuraciones que
corresponden. a la puerta de enlace predeterminada, el nombre de la
maquina y los DNS de ser necesarios.
12. Luego escogemos la zona horaria, de forma muy sencilla, simplemente
seleccionando nuestra ubicación en el mapa y listo.
13
13. Ahora el sistema nos solicita la contraseña que se utilizara para el
administrador del equipo.
14. Ahora podemos ver que el instalador nos muestra grupos de software
que guardan alguna relación entre si... entre los cuales podemos escoger
aquel que se adecue a nuestras necesidades.
14
También en la parte inferior se puede notar que existe la opción de
personalizar Luego y personalizar ahora escogemos la opcion personalizar
ahora (recomendado) pasaremos a una pantalla donde se podrán
seleccionar los paquetes de forma individual para una personalización eficaz.
15. Al haber escogido en la pantalla personalizar ahora nos muestra la lista
de paquetes que podemos instalar.
En el lado izquierdo tenemos los diferentes grupos de paquetes, en el lado
derecho están sub grupos de los mismos los cuales seleccionamos por el
check de opción para instalar o des intalar.
15
16. Si nos situamos sobre alguno de los subgrupos del lado derecho y
hacemos click en el botón paquetes opcionales veremos una lista mas
detallada de los paquetes que se pueden o no instalar.
17. Hasta este punto la configuración y selección de paquetes a terminado
cuando haga click en Siguiente se procederá a realizar los cambios en el
sistema
16
18. Vemos el progreso de los cambios así como la copia de archivos en el
sistema.
19. Al finalizar la instalación muestra un mensaje que indica que todo termino
correctamente salimos y debemos configurar el bios de la máquina para que
inicie desde el disco duro. Al hacer click en finalizar, el sistema se reiniciara.
17
20. si todo salio bien (eso espero) verán en pantalla el cargador de arranque
de CentOS 5.
El cargador de arranque por defecto oculta el menu de grub donde se
podrian seleccionar diferentes sistemas instalados y o variaciones de estos,
en este punto al presionar alguna tecla el sistema entra al menu de grub, si
no apretamos ninguna tecla, grub cargará el sistema definido por defecto.
21. Vemos como CentOS inicia el cargado del sistema base
18
22. Posteriormente se pasara a las pantallas de configuración del nuevo
sistema. Iniciando con un Bienvenido.
23. Después configurar el Corta Fuegos de CentOS para que permita el paso
de los servicios que se vayan a utilizar
19
24. Luego la configuración de SELinux, dependiendo del tipo de ambiente
que requieras (en este caso escogimos deshabilitado)
25. La configuración de la fecha y hora.
20
26. Creación de nuevos usuarios de forma rápida y sencilla;
27. Una configuración sencilla del dispositivo de sonido, CentOS reconoce
una gran variedad de dispositivos
21
28. Cuando todo esto este listo podremos iniciar nuestra máquina colocando
root y la contraseña y presenta el entorno grafico de CentOS 5 que es muy
parecido al de Fedora.
29. Modo grafico de CentOS listo para trabajar.
22
CONFIGURACION DE LA RED:
La siguiente configuración se la aplica a cualquier tarjeta de red sea para el
servidor como para los clientes.
1.- Configuramos la primera tarjeta eth0
En nuestro caso esta tarjeta es la externa la misma que va a tener
salida a Internet.
Instrucción: vi /etc/sysconfig/network-scripts/ifcfg-eth0
Editamos lo siguiente:
BOOTPROTO = none
IPADDR = IP del proveedor de Internet.
DEVICE = eth0
ONBOOT = yes
NETMASK = 255.255.255.0
GATEWAY= del proveedor de Internet.
23
2.- Configuramos la primera tarjeta eth1
En nuestro caso esta tarjeta es la interna que va a dar salidad a la red
local.
Instrucción: vi /etc/sysconfig/network-scripts/ifcfg-eth1
Editamos lo siguiente:
BOOTPROTO = none
IPADDR = 192.168.3.1
DEVICE = eth0
ONBOOT = yes
NETMASK = 255.255.255.0
GATEWAY = IP del proveedor de internet.
24
Maquina Virtual y Tomcat
Primero debemos confirmar si tenemos instalados los paquetes abajo
descritos, sino los tenemos los debemos bajar.
•
Java SDK 5.0, que se puede obtener de aquí, seleccionar Java SE Update 12 ( sin
características adicionales ): En este caso el archivo para Linux es jdk-1_5_0_12-linuxi586-rpm.bin.
•
Tomcat 5.5.23, que se puede obtener de aquí ( Core, en formato tar.gz ): En este caso
el archivo multiplataforma es apache-tomcat-5.5.23.tar.gz.
•
Eclipse 3.3 con Web Tools Project, que se puede obtener de aquí ( All in One, para
Linux ): En este caso el archivo para Linux es wtp-all-in-one-sdk-R-2.0-200706260303linux-gtk.tar.gz.
CONFIGURACION MAQUINA VIRTUAL
Se verifica la versión de la máquina virtual de Java:
[root@curso09 JVM]# whereis java
java: /usr/bin/java /etc/java /usr/lib/java /usr/share/java
[root@curso09 JVM]# /usr/bin/java -version
java version "1.4.2"
gij (GNU libgcj) version 4.1.1 20061011 (Red Hat 4.1.1-30)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
25
El directorio JVM en el CD contiene la versión más actual de JVM 5.0 hasta
este momento.
[root@curso09 JVM]# pwd
/media/LPT/JVM
[root@curso09 JVM]# ll
total 46674
-r-xr-xr-x 1 root root 47793615 ago 7 01:22 jdk-1_5_0_12-linux-i586- rpm.bin
Se copia el archivo al disco duro. El archivo no debe ejecutarse en el
directorio montado, ya que el sistema intentará extraer la información del
archivo y coloarla en el directorio actual. Para evitar esto, se copia al
directorio home del usuario que inició sesión, en este caso root.
[root@curso09 JVM]# cd
[root@curso09 ~]# cp ./jdk-1_5_0_12-linux-i586-rpm.bin /root
[root@curso09 ~]# ll
total 46808
-rw------- 1 root root 1500 jul 28 10:32 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 ago 7 10:56 Desktop
-rw-r--r-- 1 root root 32130 jul 28 10:32 install.log
-rw-r--r-- 1 root root 4768 jul 28 10:29 install.log.syslog
-r-xr-xr-x 1 root root 47793615 ago 7 11:09 jdk-1_5_0_12-linux-i586- rpm.bin
-rw-r--r-- 1 root root 20480 ago 7 11:07 JVM_install.txt
El archivo es un bin, por lo que debe ejecutarse a través de un shell. Si se
usa el shell actual ( bash en la mayoría de los linux ), el sistema mostrará el
siguiente error.
26
[root@curso09 ~]# ./jdk-1_5_0_12-linux-i586-rpm.bin
bash: ./jdk-1_5_0_12-linux-i586-rpm.bin: /bin/sh: bad interpreter:
Permiso denegado
Esto se debe a que el shell utilizado para crear el archivo bin es un /bin/sh.
Por lo tanto ejecutar utilizando la siguiente instrucción:
[root@curso09 ~]# ./bin/sh jdk-1_5_0_12-linux-i586-rpm.bin
Sun Microsystems, Inc. Binary Code License Agreement
for the JAVA 2 PLATFORM STANDARD EDITION DEVELOPMENT KIT 5.0
SUN MICROSYSTEMS, INC. ("SUN") IS WILLING TO LICENSE THE
SOFTWARE IDENTIFIED BELOW TO YOU ONLY UPON THE CONDITION
THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS BINARY
CODE LICENSE AGREEMENT AND SUPPLEMENTAL LICENSE TERMS
(COLLECTIVELY "AGREEMENT"). PLEASE READ THE AGREEMENT
CAREFULLY. BY DOWNLOADING OR INSTALLING THIS SOFTWARE, YOU
ACCEPT THE TERMS OF THE AGREEMENT. INDICATE ACCEPTANCE BY
SELECTING THE "ACCEPT" BUTTON AT THE BOTTOM OF THE
AGREEMENT. IF YOU ARE NOT WILLING TO BE BOUND BY ALL THE
TERMS, SELECT THE "DECLINE" BUTTON AT THE BOTTOM OF THE
AGREEMENT AND THE DOWNLOAD OR INSTALL PROCESS WILL NOT
CONTINUE.
...
27
Aceptar los términos de la licencia, de otra manera no se permite la
instalación
Do you agree to the above license terms? [yes or no]
yes
Unpacking...
Checksumming...
Extracting...
inflating: jdk-1_5_0_12-linux-i586.rpm
Preparing... ############################# [100%]
1:jdk ############################# [100%]
Done.
Verificar la instalación actual de la máquina virtual. En este caso se propone
la instalación de una más actualizada ( Java SE 5 ó 6 ).
[root@curso09 ~]# whereis java
java: /usr/bin/java /etc/java /usr/lib/java /usr/share/java
[root@curso09 ~]# /usr/bin/java -version
java version "1.4.2"
gij (GNU libgcj) version 4.1.1 20061011 (Red Hat 4.1.1-30)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Para conocer el directorio de instalación de la nueva JVM, se utiliza el
siguiente comando. Verificar los directorios indicados en negritas.
28
[root@curso09 ~]# find / -name java
/var/lib/alternatives/java
/etc/alternatives/java
/etc/java
/usr/bin/java
/usr/share/java
/usr/java
/usr/java/jdk1.5.0_12/bin/java
/usr/java/jdk1.5.0_12/jre/bin/java
/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre/bin/java
/usr/lib/java
/usr/lib/openoffice.org2.0/share/Scripts/java
Editar el archivo .bash_profile para agregar la variable de ambiente
JAVA_HOME.
[root@curso09 ~]# ll -a
total 94020
drwxr-x--- 16 root root 4096 ago 7 11:10 .
drwxr-xr-x 23 root root 4096 ago 7 10:55 ..
-rw------- 1 root root 1500 jul 28 10:32 anaconda-ks.cfg
[root@curso09 ~]# vi .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then#[5;9H. ~/.bashrc
# User specific environment and startup programs
export JAVA_HOME=/usr/java/jdk1.5.0_12
PATH=$JAVA_HOME/bin:$PATH:$HOME/bin
export PATH
unset USERNAME
29
CONFIGURACION TOMCAT
Ahora se realiza la instalación de Tomcat. Para ello copiamos el archivo del
CD al disco duro. Este paso no es realmente necesario, se puede hacer
referencia al archivo en el CD.
[root@curso09 ~]# cp /media/LPT/ApacheTomcat/5.5.23/apache-tomcat-5.5.23.tar.gz .
[root@curso09 ~]# ll
total 99760
-rw------- 1 root root 1500 jul 28 10:32 anaconda-ks.cfg
-r-xr-xr-x 1 root root 5977561 ago 7 11:16 apache-tomcat-5.5.23.tar.gz
drwxr-xr-x 2 root root 4096 ago 7 10:56 Desktop
-rw-r--r-- 1 root root 32130 jul 28 10:32 install.log
-rw-r--r-- 1 root root 4768 jul 28 10:29 install.log.syslog
Para instalar Tomcat se debe colocar en el directorio donde será instalado;
en este caso es /usr. Después, ejecutar el comando tar con las opciones
xzvf.
[root@curso09 ~]# cd /usr/
[root@curso09 usr]# ls
bin etc games include java kerberos lib libexec local sbin share src tmp X11R6
[root@curso09 usr]# tar xzvf apache-tomcat-5.5.23.tar.gz
apache-tomcat-5.5.23/bin/catalina.sh
apache-tomcat-5.5.23/bin/digest.sh
apache-tomcat-5.5.23/bin/setclasspath.sh
30
Verificar que el archivo apache-tomcat-5.5.23 se haya creado exitósamente,
y ver su contenido.
[root@curso09 usr]# ls
apache-tomcat-5.5.23 bin etc games include java kerberos lib libexec local sbin share src tmp
X11R6
[root@curso09 usr]# cd apache-tomcat-5.5.23/
[root@curso09 apache-tomcat-5.5.23]# ll
total 68
drwxr-xr-x 2 root root 4096 ago 7 11:17 bin
drwxr-xr-x 6 root root 4096 mar 5 09:26 common
drwxr-xr-x 3 root root 4096 mar 5 09:27 conf
-rw-r--r-- 1 root root 11357 mar 5 09:27 LICENSE
drwxr-xr-x 4 root root 4096 mar 5 09:26 shared
drwxr-xr-x 2 root root 4096 ago 7 11:17 temp
drwxr-xr-x 8 root root 4096 mar 5 09:26 webapps
drwxr-xr-x 2 root root 4096 mar 5 09:26 work
Editar nuevamente el archivo ./bash_profile para agregar la variable de
ambiente CATALINA_HOME.
[root@curso09 apache-tomcat-5.5.23]# vi /root/.bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then#[5;9H. ~/.bashrc
fi
# User specific environment and startup programs
export JAVA_HOME=/usr/java/jdk1.5.0_12
export CATALINA_HOME=/usr/apache-tomcat-5.5.23
PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$PATH:$HOME/bin
export PATH
unset USERNAME
31
Ejecutar el archivo .bash_profile para cargar el nuevo ambiente.
[root@curso09 apache-tomcat-5.5.23]# . /root/.bash_profile
[root@curso09 apache-tomcat-5.5.23]# java -version
java version "1.5.0_12"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_12-b04)
Java HotSpot(TM) Client VM (build 1.5.0_12-b04, mixed mode, sharing)
Ejecutar dentro del directorio /usr/apache-tomcat-5.5.23/bin el archivo
startup.sh para ejecutar Tomcat.
[root@curso09 usr]# cd /usr/apache-tomcat-5.5.23/
[root@curso09 apache-tomcat-5.5.23]# cd bin
[root@curso09 bin]# ll
total 588
-rw-r--r-- 1 root root 23669 mar 5 09:26 bootstrap.jarç
-rw-r--r-- 1 root root 8962 mar 5 09:26 catalina.bat
-rwxr-xr-x 1 root root 12044 mar 5 09:26 catalina.sh
-rw-r--r-- 1 root root 968 mar 5 09:26 catalina-tasks.xml
…
[root@curso09 bin]# ./startup.sh
Using CATALINA_BASE: /usr/apache-tomcat-5.5.23
Using CATALINA_HOME: /usr/apache-tomcat-5.5.23
Using CATALINA_TMPDIR: /usr/apache-tomcat-5.5.23/temp
Using JRE_HOME: /usr/java/jdk1.5.0_12
Verificar en la bitácora /usr/apache-tomcat-5.5.23/logs/catalina.out que el
servidor se haya levantado exitósamente.
32
[root@curso09 bin]# tail -f ../logs/catalina.out
7/08/2007 11:29:17 AM org.apache.coyote.http11.Http11BaseProtocol start
INFO: Arrancando Coyote HTTP/1.1 en puerto http-8080
7/08/2007 11:29:18 AM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
7/08/2007 11:29:18 AM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/24 config=null
7/08/2007 11:29:18 AM org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
7/08/2007 11:29:18 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1934 ms
Probar que la página http://localhost:8080 se ejecute satisfactoriamente.
33
Una vez verificada la ejecución de Tomcat, apagarlo utilizando el script
shutdown.sh.
[root@curso09
bin]#
./shutdown.sh
Using
CATALINA_BASE:
/usr/apache-tomcat-5.5.23
Using
CATALINA_HOME:
/usr/apache-tomcat-5.5.23
Using
CATALINA_TMPDIR:
/usr/apache-tomcat-5.5.23/temp
Using JRE_HOME: /usr/java/jdk1.5.0_12
Para colocar la pagina web:
Se ubica la pagina web para que sea levantada mediante el tomcat es:
Usr/shared/webapps/root
Dentro de la carpeta root se coloca la carpeta que contiene la pagina
principal y la subpaginas, el index se lo coloca en la parte dentro de la
carpeta root .
34
CONFIGURACION SAMBA
SAMBA es un conjunto de programas, originalmente creados por Andrew
Tridgell y actualmente mantenidos por The SAMBA Team, bajo la Licencia
Publica General GNU, y que implementan en sistemas basados sobre UNIX®
el protocolo SMB. Sirve como reemplazo total para Windows® NT, Warp®,
NFS® o servidores Netware®.
Necesitará tener instalados los siguientes paquetes, que seguramente
vienen incluidos en los discos de instalación de su distribución predilecta:
• samba:
Servidor SMB.
• samba-client:
Diversos clientes para el protoclo SMB.
• samba-
Ficheros necesarios para cliente y servidor.
common:
Consulte a la base de datos RPM del sistema si se encuentran instalados
estos paquetes, utilizando el siguiente mandato:
rpm -q samba samba-client samba-common
Si se utiliza Red Hat™ Enterprise Linux, solo bastará realizar lo siguiente
para instalar o actualizar la programática necesaria:
35
up2date -i samba samba-client
Si utiliza CentOS 4 o White Box Enterprise Linux 4, solo bastará realizar lo
siguiente para instalar o actualizar la programática necesaria:
yum -y install samba samba-client
Alta de cuentas de usuario.
Es importante sincronizar las cuentas entre el servidor Samba y las
estaciones Windows®. Es decir, si en una máquina con Windows®
ingresamos como el usuario "paco" con clave de acceso "elpatito16", en el
servidor Samba deberá existir también dicha cuenta con ese mismo nombre
y la misma clave de acceso. Como la mayoría de las cuentas de usuario que
se utilizarán para acceder hacia samba no requieren acceso al interprete de
mandatos del sistema, no es necesario asignar clave de acceso con el
mandato passwd y se deberá definir /sbin/nologin o bien /bin/false como
interpete de mandatos para la cuenta de usuario involucrada.
useradd -s /sbin/nologin usuario-windows
smbpasswd -a usuario-windows
36
No hace falta se asigne una clave de acceso en el sistema con el mandato
passwd puesto que la cuenta no tendrá acceso al interprete de mandatos.
Si se necesita que las cuentas se puedan utilizar para acceder hacia otros
servicios como serían Telnet, SSH, etc, es decir, que se permita acceso al
interprete de mandatos, será necesario especificar /bin/bash como interprete
de mandatos y además se deberá asignar una clave de acceso en el sistema
con el mandato passwd:
useradd -s /bin/bash usuario-windows
passwd usuario-windows
smbpasswd -a usuario-windows
El fichero lmhosts es necesario empezar resolviendo localmente los
nombres NetBIOS asociándolos con direcciones IP correspondientes. Para
fines prácticos el nombre NetBIOS debe tener un máximo de 11 caracteres.
Normalmente tomaremos como referencia el nombre corto del servidor o
el nombre corto que se asigno como alias a la interfaz de red. Este lo
estableceremos
en
el
fichero
/etc/samba/lmhosts,
en
donde
encontraremos lo siguiente:
127.0.0.1
localhost
Debemos añadir entonces el nombre que hayamos elegido asociado a la
dirección IP que se tenga dentro de la red local. Opcionalmente podrá
37
añadir también los nombres y dirección IP del resto de las máquinas que
conformen la red local. La separación de espacios se hace con un tabulador.
Ejemplo:
127.0.0.1
localhost
192.168.1.5
maquinalinux
192.168.1.6
isaac
192.168.1.7
finanzas
192.168.1.8
direccion
PARÁMETROS PRINCIPALES DEL FICHERO SMB.CONF.
Modifique el fichero /etc/samba/smb.conf con cualquier editor de texto.
Dentro de este notará que la información que le será de utilidad viene
comentada con un símbolo # y los ejemplos con ; (punto y coma), siendo
estos últimos los que tomaremos como referencia.
Empezaremos por establecer el grupo de trabajo editando el valor del
parámetro workgroup asignando un grupo de trabajo deseado:
workgroup = MIGRUPO
Opcionalmente puede establecer con el parámetro netbios name otro
nombre distinto para el servidor si acaso fuese necesario, pero siempre
tomando en cuenta que dicho nombre deberá corresponder con el
establecido en el fichero /etc/samba/lmhosts:
38
netbios name = maquinalinux
El parámetro server string es de carácter descriptivo. Puede utilizarse un
comentario breve que de una descripción del servidor.
server string = Servidor Samba %v en %L
PARÁMETROS ÚTILES PARA LA SEGURIDAD.
La seguridad es importante y esta se puede establecer primeramente
estableciendo la lista de control de acceso que definirá que máquinas o redes
podrán acceder hacia el servidor. El parámetro hosts allow sirve para
determinar esto. Si la red consiste en la máquinas con dirección IP desde
192.168.1.1 hasta 192.168.1.254, el rango de direcciones IP que se definirá
en hosts allow será 192.168.1. de modo tal que solo se permitirá el acceso
dichas máquinas. Note por favor el punto al final de cada rango. Modifique
ésta de manera que quede del siguiente modo:
hosts allow = 192.168.1. 127.
El parámetro interfaces permite establecer desde que interfaces de red del
sistema se escucharán peticiones. Samba no responderá a peticiones
provenientes desde cualquier interfaz no especificada. Esto es útil cuando
Samba se ejecuta en un servidor que sirve también de puerta de enlace para
39
la red local, impidiendo se establezcan conexiones desde fuera de la red
local.
interfaces = 192.168.1.254/24
COMPARTIENDO DIRECTORIOS A TRAVÉS DE SAMBA.
Para los directorios o volúmenes que se irán a compartir, en el mismo fichero
de configuración encontrará distintos ejemplos para distintas situaciones
particulares. En general, puede utilizar el siguiente ejemplo que funcionará
para la mayoría:
[Lo_que_sea]
comment = Comentario que se le ocurra
path = /cualquier/ruta/que/desee/compartir
El volumen puede utilizar cualquiera de las siguientes opciones:
Opción
Descripción
guest ok
Define si ser permitirá el acceso como usuario invitado. El valor
puede ser Yes o No.
public
Es un equivalente del parámetro guest ok, es decir define si ser
permitirá el acceso como usuario invitado. El valor puede ser Yes o
No.
browseable
Define si se permitirá mostrar este recurso en las listas de recursos
compartidos. El valor puede ser Yes o No.
writable
Define si ser permitirá la escritura. Es el parámetro contrario de read
40
only. El valor puede ser Yes o No. Ejemplos: «writable = Yes» es lo
mismo que «read only = No». Obviamente «writable = No» es lo
mismo que «read only = Yes»
valid users
Define que usuarios o grupos pueden acceder al recurso
compartido. Los valores pueden ser nombres de usuarios
separados por comas o bien nombres de grupo antecedidos por una
@. Ejemplo: fulano, mengano, @administradores
write list
Define que usuarios o grupos pueden acceder con permiso de
escritura. Los valores pueden ser nombres de usuarios separados
por comas o bien nombres de grupo antecedidos por una @.
Ejemplo: fulano, mengano, @administradores
admin users
Define que usuarios o grupos pueden acceder con permisos
administrativos para el recurso. Es decir, podrán acceder hacia el
recurso realizando todas las operaciones como super-usuarios. Los
valores pueden ser nombres de usuarios separados por comas o
bien nombres de grupo antecedidos por una @. Ejemplo: fulano,
mengano, @administradores
directory mask
Es lo mismo que directory mode. Define que permiso en el sistema
tendrán los subdirectorios creados dentro del recurso. Ejemplos:
1777
create mask
Define que permiso en el sistema tendrán los nuevos ficheros
creados dentro del recurso. Ejemplo: 0644
En el siguiente ejemplo se compartirá a través de Samba el recurso
denominado ftp, el cual está localizado en el directorio /var/ftp/pub del disco
duro. Se permitirá el acceso a cualquiera pero será un recurso de solo lectura
salvo para los usuarios administrador y fulano. Todo directorio nuevo que sea
41
creado en su interior tendrá permiso 755 y todo fichero que sea puesto en su
interior tendrá permiso 644.
[ftp]
comment = Directorio del servidor FTP
path = /var/ftp/pub
guest ok = Yes
read only = Yes
write list = fulano, administrador
directory mask = 0755
create mask = 0644
ACCEDIENDO HACIA SAMBA.
Modo texto.
Smbclient.
Indudablemente el método más práctico y seguro es el mandato smbclient.
Este permite acceder hacía cualquier servidor Samba o Windows® como si
fuese el mandato ftp en modo texto.
Para acceder al cualquier recurso de alguna máquina Windows® o servidor
SAMBA determine primero que volúmenes o recursos compartidos posee
está. utilice el mandato smbclient del siguiente modo:
smbclient -U usuario -L alguna_maquina
42
Lo cual le devolvería más menos lo siguiente:
Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]
Sharename
---------
Type
----
Comment
-------
homes
Disk
Home Directories
netlogon
Disk
Network Logon Service
ftp
Disk
IPC$
ftp
IPC
ADMIN$
epl5900
hp2550bw
IPC Service (Servidor Samba 3.0.7-1.3E en mi-servidor)
IPC
IPC Service (Servidor Samba 3.0.7-1.3E en mi-servidor)
Printer Created by redhat-config-printer 0.6.x
Printer Created by redhat-config-printer 0.6.x
Anonymous login successful
Domain=[MI-DOMINIO] OS=[Unix] Server=[Samba 3.0.7-1.3E]
Server
--------mi-servidor
Workgroup
--------MI-DOMINIO
Comment
------Servidor Samba 3.0.7-1.3E en mi-servidor
Master
------MI-SERVIDOR
La siguiente corresponde a la sintaxis básica para poder navegar los
recursos compartidos por la máquina Windows® o el servidor SAMBA:
smbclient //alguna_maquina/recurso -U usuario
43
Modo gráfico
Desde el entorno de GNOME.
Si utiliza GNOME 2.x o superior, éste incluye un módulo para Nautilus que
permite acceder hacia los recursos compartidos a través de Samba sin
necesidad de modificar cosa alguna en el sistema. Solo hay que hacer clic en
Servidores de red en el menú de GNOME.
Por su parte, desde Windows deberá ser posible acceder sin problemas
hacia Samba como si fuese hacia cualquier otra máquina con Windows.
Vaya, ni Windows ni el usuario notarán siquiera la diferencia.
44
CONFIGURACION DNS
Revisar si esta instalado el bind en nuestro sistema.
# rpm –q bind
1. Ir al Setup y habilitar named
2.
Ir al vi /etc/named.conf y editar el siguiente fichero donde se creará la
zona se agrega:
zone “seminario.com” IN {
type master;
notify no;
file “seminario.com”;
};
3.
Ir a la ruta cd /var/named/chroot/var/named/
# cp localhost.zone topico.com ( se copia el archivo de configuracion que
nos va a servir de respaldo)
45
4. Modificar el archivo que copiamos en este caso seminario.com
#vi seminario.com
$TTL 86400
@
IN
SOA seminario.com.
root.seminario.com.
(
13 ; serial
28800 ; refresh
14400 ; retry
3600000 ; expire
86400 ; ttl
)
IN NSgrupo4
localhost
IN A
127.0.0.1
grupo4
IN A
192.168.3.1 (ip del servidor)
www
CNAME
seminario
(Grabar y salir)
5.
Ir a la siguiente ruta para redireccionar la maquina
# vi /etc/resolv.conf
46
Aquí se agrega o se verifica si esta lo siguiente:
search localdomain
nameserver 192.168.3.1 (esta IP es la del servidor)
6.
Reiniciar los servicios del named
# Service named restart
7.
Para probar el servidor, realice un ping a www.seminario.com
Revise que la IP que aparece sea la que ud. ha configurado en el DNS.
#ping www.seminario.com
PING topico.topico.com (192.168.3.1) 56(84) bytes of data
64 bytes from 192.168.3.1: icmp_seq=0 ttl=64 time=0.205 ms
64 bytes from 192.168.3.1: icmp_seq=0 ttl=64 time=0.205 ms
64 bytes from 192.168.3.1: icmp_seq=0 ttl=64 time=0.205 ms
64 bytes from 192.168.3.1: icmp_seq=0 ttl=64 time=0.205 ms
47
CONFIGURACION DEL HTTPD
Revisar si esta instalado el httpd en nuestro sistema.
# rpm –q httpd
1.
Ir al vi /etc/httpd/conf/httpd.conf y editar el siguiente fichero
Buscar las siguientes lineas (Puede hacerlo por secciones o por lineas) y
descomentarlas:
Listen 80
DocumentRoot “/var/www/html”
Directory Index index.html index.doc
(aquí se agrega el nombre y la extensión del archivo que se va a crear, si no
se encuentra especificado)
**Guardar y salir**
48
2.
Ir a la siguiente ruta cd/var/www/html/ y crear la carpeta donde se va
a guardar el sitio
# mkdir sitio
# cd sitio
# touch index.html
# vi index.html
Esto es una prueba de Web Server (Agregar cualquier texto)
3.
Verificar si la configuración del navegador esta por Proxy y si lo está
habilitar a Internet directamente.
Existen dos formas de resolverlo:
3.1.
Ir a Aplicaciones/ Internet/ Firefox Web Browser / Edit/
Preferences/General/Connection/Connection
Settings/Direct
connection to the internet.
3.2.
Ir a Aplicaciones/ Preferencias/ Proxy de la red/ Conexión
directa a Internet
4.
Ir al navegador y cargar la página.
49
CONFIGURACION SNMP
SNMP EN LINUX
SNMP (Simple Network Management Protocol) es un protocolo ampliamente
utilizado en la administración de redes para supervisar la salud y el bienestar
del equipo de la red, equipo de computo.
Fichero de configuración.
El fichero /etc/snmp/snmpd.conf que se instala por defecto es una
verdadera maraña de comentarios y opciones de todo tipo. Lo más
recomendable será cerrar un fichero nuevo y limpio de contenido.
cd /etc/snmp
mv snmpd.conf snmpd.conf-OLD
touch snmpd.conf
Se deben crear las listas de control de acceso (ACL) correspondientes en el
fichero /etc/snmp/snmpd.conf y que servirán para definir quien tendrá
acceso hacia el servicio snmpd. A una de estas listas se le otorgará permiso
de acceso de lectura y escritura para lo que sea necesario y a la otra de solo
lectura. Por razones de seguridad solo la interfaz 127.0.0.1 será la de lectura
escritura. Se otorgará permiso de acceso de solo lectura a una red o bien a
una IP en la otra lista de control de acceso (ACL).
50
De modo tal se podrían agregar un par de líneas como las siguientes:
com2sec local 127.0.0.1/32 Cl4v3-d3-Acc3s0
com2sec miredlocal 192.168.1.0/24 Cl4v3-d3-Acc3s0
En lo anterior la primera línea significa que habrá una lista de control de
acceso denominada «local» y que corresponderá solo a 127.0.0.1/32,
asignando Cl4v3-d3-Acc3s0 como clave de acceso. La segunda línea hace lo
mismo pero definiendo a la red 192.168.1.0/24. Se puede definir lo que uno
guste mientras no sea la clave de root, esto porque dicha clave se transmite
a través de la red en forma de texto simple (es decir, sin cifrar).
DEFINICIÓN DE GRUPOS.
Se van a crear dos grupos: MyRWGroup y MyROGroup. El primero será un
grupo al que se asignarán más adelante permisos de lectura escritura y el
segundo será un grupo al que posteriormente se asignarán permisos de solo
lectura. Por cada grupo se asignan tres líneas que especifican el tipo de
acceso que se permitirá en un momento dado a un grupo en particular. Es
decir, MyRWGroup se asocia a local y MyROGroup a miredlocal.
51
Inicie el servicio de SNMP y añada éste al resto de los servicios que arrancan
junto con el sistema:
service snmpd start
chkconfig snmpd on
Comprobaciones.
Suponiendo que sea signó como clave de acceso Cl4v3-d3-Acc3s0 en un
sistema cuya dirección IP es 192.168.1.254, para probar si la configuración
funciona, solo hay que ejecutar los dos siguiente mandatos a fin verificar que
devuelvan información acerca del sistema consultado.
snmpwalk
-v
1
192.168.1.254
-c
Cl4v3-d3-Acc3s0
snmpwalk -v 1 192.168.1.254 -c Cl4v3-d3-Acc3s0 interfaces
system
52
SNMP En Windows
Se debe abrir el Asistente para componentes de Windows, se debe dar clic
en Inicio, Panel de Control, doble clic en Agregar o Quitar Programas y a
continuación en Agregar o Quitar componentes de Windows.
1. Asistente para componentes de Windows.
2. En la pantalla de componentes hacer clic en Herramientas de
administración y supervisión, luego en Detalles.
3. Activar la casilla de verificación Protocolo simple de administración
de redes, clic en aceptar.
4. Dar clic en siguiente
Configurar las propiedades del Agente
Se debe ingresar al Administrador de Equipos, dar clic en Inicio,
Panel de Control, doble clic en Herramientas administrativas, y luego en
Administración de Equipos.
1. Abrir el administrador de equipos
2. Dar clic en Servicios y Aplicaciones
3. Luego en Servicios
4. Dar clic en Servicios SNMP
5. En el menú Acción, clic en Propiedades
6. En la ficha Agente, en el Contacto, escribir el nombre del usuario.
53
7. En Ubicación, escribir la ubicación física del equipo.
8. En Servicio activar las casillas de verificación y dar clic en Aceptar.
Para ingresar en Administración de Equipos, dar clic en Inicio, Panel de
Control, doble clic en Herramientas Administrativas y luego en
Administración de Equipos.
1. Abrir Administrador de Equipos.
2. Dar clic en Servicios y Aplicaciones
3. Dar clic en Servicios.
4. En el menú Acción, clic en Propiedades.
5. En Capturas, Nombre de Comunidad, escribir el nombre de
comunidad a la que el equipo enviará los mensajes de captura, luega
dar clic en Agregar a la lista.
6. Destinos de capturas, hacer clic en Agregar.
7. En Nombre, Dirección IP o IPX del host, escribir la información del
host y hacer clic en Agregar.
8. Realizar los mismos pasos si se desea ingresar más comunidades.
54
CONFIGURACION DE VNC
El software a instalar en cada una de ellas será el siguiente:
vnc-server-4.1.1-38.fc5
openssh-server-4.3p2-4
openssh-4.3p2-4
openssh-clients-4.3p2-4 (Cliente opcional)
Primeramente, configuraremos el demonio sshd para que "escuche", por
seguridad, en un puerto diferente al puerto por defecto de SSH (el 22). Para
esto, en el sistema Fedora referido anteriormente, modificaremos un par de
líneas del archivo de configuración /etc/ssh/sshd_config:
Port 20011
ListenAddress 192.168.1.5
Con esto establecemos el puerto por defecto de sshd sobre el 20011 y
establecemos la IP de la máquina local en 192.168.1.5. Una vez hechos los
cambios, grabamos el fichero y nos aseguramos de reiniciar el servicio de
sshd:
[root@server ~]# service sshd status
Se está ejecutando sshd (pid 26641 26638 1723)...
Una vez configurado el servidor de SSH, atenderemos a la configuración de
VNC. Dicha configuración está basada en Sesiones de Servidor, lo que
quiere decir que, para cada sesión que queramos abrir en la máquina linux,
55
se creará una confiuguración y un slot diferente. Cada sesión tiene asignado
un número que las diferencia de las demás. En Fedora se añaden los
servidores mediante la edición del fichero /etc/sysconfig/vncservers y la
adición de las líneas siguientes:
VNCSERVERS="2:user001"
VNCSERVERARGS[2]="-geometry 800x600"
El parámetro VNCSERVERS se iguala al par Sesión:Nombre de usuario y el
parámetro VNCSERVERARGS[Número de Sesión] indica el tamaño de
salida de la pantalla del servidor. Cada usuario añadido a los distintos
servidores de VNC, tendrá asignada una contraseña que se establecerá
mediante la ejecución del comando vncpasswd desde la sesión de cada
usuario:
[user001@server ~]$ vncpasswd
Password:
Esto creará un fichero en .vnc/passwd bajo el directorio home del usuario
concreto. Otro fichero, .vnc/xstartup, contiene el entorno gráfico a cargar en
la sesión de VNC. Por ejemplo, si queremos cargar una sesión del entorno
fluxbox (consume pocos recursos), dejaremos el archivo indicado de la
siguiente manera:
#!/bin/sh
exec /etc/X11/xinit/xinitrc
exec fluxbox
56
Y le asignaremos los permisos de ejecución correspondientes:
[user001@server ~]$ chmod +x /home/user001/.vnc/xstartup
Para terminar con el lado del servidor, cuidaremos que el puerto para realizar
la conexión (SSH) está abierto en el cortafuegos.
Con la sesión ya iniciada en el servidor, ejecutaremos el comando
/etc/init.d/vncserver start mediante el usuario root:
[root@server ~]# /etc/init.d/vncserver start
Iniciando Servidor VNC: 2:user001
New
'server.logistiscs.com:2
(user001)'
desktop
is
server.logistics.com:2
Starting applications specified in /home/user001/.vnc/xstartup
Log file is /home/user001/.vnc/server.logistics.com:2.log
[ OK ]
Ahora ya podemos ejecutar el programa vncviewer, configurando la primera
pantalla de esta forma:
Una vez aceptada la conexión ya podemos ingresar a la maquina.
57
CONFIGURACION DE SENDMAIL
-
etc ] rpm –qa sendmail
La instrucción que a continuación se detalla nos permite ver todos los puerto
abiertos en el servidor, en este caso el puerto 53 DNS.
-
etc ] neststat –an | more
-
etc ] rpm -qa dovecot
-
etc ] vi dovecot.conf
En el archivo se procede a descomentar la linea siguiente:
Protocols = imap imaps pop3
-
etc ] service dovecot start
-
etc ] netstart –an | more
-
etc ] vi rc.local
-
cd /mail/
-
mail ] vi sendmail.cf
-
Buscar la linea # local info #
-
Insertar la linea gmail.com
-
Buscar la linea # Cw localhost
-
Editar la linea:
-
Cwgmai.com
58
-
Modficar O DaemonPortOptions = Port = smtp.Addr= 127.0.0.1, Name
= MTA por O DaemonPortOptions = Port = smtp.Addr= 0.0.0.0, Name
= MTA
-
mail ] service sendmail start
-
mail ] service xinetd restart
Me permite levantar los subsistemas actualizando todos los servicios y
protocolos del servidor.
-
cd /etc/sysconfig/
-
sysconfig ] vi network
working = yes
hostname = gmail.com
-
netstat –an | more
-
service xinetd restart
-
service sendmail restart
-
vi host
Modificar el siguiente bloque
127.0.0.1
127.0.0.1
localhost.localdomin localhost
gmail.com
-
cd /etc/xinetd.d/
-
vi krb5-telnet
Modificar:
-
disable = no
xinetd ] service xinetd restart
gmail
59
-
adduser grupo 4
-
passwd grupo4
-
mail grupo4.
WEBMIN
Webmin es una cómoda herramienta mediante la cual vamos a poder
configurar todo aquello que podríamos configurar con un programa hecho
para estos menesteres, pero ayudados de nuestro navegador favorito y a
golpe de ratón igual que estuvieramos navegando, con la seguridad de que
solo nosotros vamos a poder usarlo y de que todos los cambios que
hagamos en el sistema mediante él van a ser tan válidos como si se hubieran
hecho con otra herramienta.
1. haremos es bajarnos Webmin y e instalarlo.
En nuestro caso hemos bajado el webmin-1.380-1-noarch.rpm
2.Hemos descomprimido y a continuación procedemos a su instalación, lo
corremos con la siguiente instrucción:
Ivh – webmin-1.380-1-noarch.rpm
60
3.Ingresamos al firefox donde escribimos en la barra de navegación:
https://locahost:10000
4. Nos solicita el Login con el que queramos acceder, en este caso hemos
introducido el usuario root y su contraseña.
El webmin nos presenta un menu que
se encuentra en el lado lateral
izquierdo de la paguina donde podemos configurar :
-
La red O incluso el hardware de nuestro sistema.
-
Gestiona nuestro servidor de correo o web.
-
Iinterfaz de comandos de shell, etc.
La combinación de Webmin con iptables o con cualquier otro metodo de
filtrado de direcciones ip,hacen de este programa una herramienta ideal para
la administración remota de nuestros servidores pero también como hemos
61
visto, puede ser nuestra herramienta personal de configuración de nuestro
sistema operativo.
POSTGRESQL
Esta base de datos se la administro mediante el Webmin.
1.- Corremos el PostgreSQL mediante el siguiente comando:
Service postgresql restart o start.
O se lo puede activar mediante la herramienta del webmin.
2.-Creamos el Scrip de la base y lo corremos mediante el Webmin, este
administrador nos permite crear la base, correr funciones, crear usuarios, etc.
62
Implementacion del SNMP .
public Snmp conectaSNMP()
{
Snmp snmp =null;
try
{
nmp = new Snmp(new DefaultUdpTransportMapping());
snmp.listen();
}
catch (Throwable e)
{
e.printStackTrace();
}
return snmp;
}
public VariableBinding consultaSNMP(CommunityTarget target,Snmp snmp, OID oid)
{
VariableBinding resultado=null;
try
{
PDU command = new PDU();
command.setType(PDU.GET);
command.add(new VariableBinding(oid));
ResponseEvent responseEvent = snmp.send(command, target);
if (responseEvent != null)
{
PDU response=responseEvent.getResponse();
if(response!=null)
{
resultado= response.get(0);
}
}
}
catch (Throwable e)
{
e.printStackTrace();
}
return resultado;
}
//Devuelve el Objeto VariableBinding para el oid especifico, nulo si fracasa la conexión
public VariableBinding extraeOID(String host,String port,String comunidad,String oid_original)
{
VariableBinding respuesta=null;
CommunityTarget target=targetSNMP(host,port,comunidad);
Snmp snmp = conectaSNMP();
OID _oid_ultimo=new OID(oid_original);
respuesta=consultaSNMP(target, snmp,_oid_ultimo);
cierraSNMP(snmp);
return respuesta;
}
63
CAPTURA DE SOFTWARE MEDIANTE SNMP
public SoftwareSNMP() {
}
public boolean agregaSWInstalados(String host,Parametros param)
{
boolean resultado=false;
int codigo_maq=procedimientoExtraeCodMaq(host);
Vector respuesta=(new comSMNP()).extraeOIDSHijos(host, param.getSnmp_puerto(),
param.getSnmp_comunidad(), InventarioOIDS.OIDRaiz_AplicacionesInstaladas);
Vector sw_almacenado=Reporte.getReporteTodoSW(Integer.toString(codigo_maq));
Vector sw_actual=getVectorBeans(respuesta);
if(respuesta!=null)//Llena la BD de ispositivos
{
int codigo_maquina=procedimientoExtraeCodMaq(host);
if(codigo_maquina>0)
{
procedimientoLimpiaSWInstalado(codigo_maquina);
for(int i=0;i<respuesta.size();i++)
{
String sw=((VariableBinding)respuesta.elementAt(i)).getVariable().toString();
if(!procedimientoSWInstalado(codigo_maquina,sw))
break;
}
if(tieneHistoria(codigo_maquina))
{
Vector nuevos=extraeDiferencia(sw_actual,sw_almacenado);
for(int i=0;i<nuevos.size();i++)
{
String nuevo_dispositivo=(String)nuevos.elementAt(i);
if(!procedimientoInsertaAlarma(codigo_maquina,nuevo_dispositivo,Nuevos,alarma_software))
break;
String mensaje=Correo.construyeMensaje(host,nuevo_dispositivo,Nuevos);
Correo.enviaCorreo(param.getMail_operador(), "Nuevo Software en "+host, mensaje);
}
Vector faltantes=extraeDiferencia(sw_almacenado,sw_actual);
for(int i=0;i<faltantes.size();i++)
{
String falta_dispositivo=(String)faltantes.elementAt(i);
if(!procedimientoInsertaAlarma(codigo_maquina,falta_dispositivo,Faltantes,alarma_software))
break;
String mensaje=Correo.construyeMensaje(host,falta_dispositivo,Faltantes);
Correo.enviaCorreo(param.getMail_operador(), "Falta Software en "+host, mensaje);
}
resultado=true;
}
}
return resultado;
}
64
CAPTURA DEL HARDWARE MEDIANTE SNMP
public boolean agregaOtrosDispositivos(String host,Parametros param)
{
boolean resultado=false;
int codigo_maquina=procedimientoExtraeCodMaq(host);
Vector respuesta=(new comSMNP()).extraeOIDSHijos(host,param.getSnmp_puerto(),
param.getSnmp_comunidad(), InventarioOIDS.OIDRaiz_OtrosDispositivos);
Vector hw_almacenado=Reporte.getReporteTodoHW(Integer.toString(codigo_maquina));
Vector hw_actual=getVectorBeans(respuesta);
if(respuesta!=null)//Llena la BD de Dispositivos
{
if(codigo_maquina>0)
{
procedimientoLimpiaOtrosDisp(codigo_maquina);
for(int i=0;i<respuesta.size();i++)
{
String dispositivo=((VariableBinding)respuesta.elementAt(i)).getVariable().toString();
if(!procedimientoInsertaOtrosDisp(codigo_maquina,dispositivo))
break;
}
if(tieneHistoria(codigo_maquina))
{
Vector nuevos=extraeDiferencia(hw_actual,hw_almacenado);
for(int i=0;i<nuevos.size();i++)
{
String nuevo_dispositivo=(String)nuevos.elementAt(i);
if(!procedimientoInsertaAlarma(codigo_maquina,nuevo_dispositivo,Nuevos,alarma_hardware))
break;
String mensaje=Correo.construyeMensaje(host,nuevo_dispositivo,Nuevos);
Correo.enviaCorreo(param.getMail_operador(), "Nuevo Dispositivo en "+host, mensaje);
Vector faltantes=extraeDiferencia(hw_almacenado,hw_actual);
for(int i=0;i<faltantes.size();i++)
{
String falta_dispositivo=(String)faltantes.elementAt(i);
if(!procedimientoInsertaAlarma(codigo_maquina,falta_dispositivo,Faltantes,alarma_hardware))
break;
String mensaje=Correo.construyeMensaje(host,falta_dispositivo,Faltantes);
Correo.enviaCorreo(param.getMail_operador(), "Falta Dispositivo en "+host, mensaje);
}
}
resultado=true;
}
}
return resultado;
}
65
OIDS QUE PERMITEN AL SNMP SENSAR LOS EQUIPOS
public class InventarioOIDS
{
public static String OIDRaiz_OtrosDispositivos="1.3.6.1.2.1.25.3.2.1.3";
public static String OIDRaiz_DispositivosALmacen="1.3.6.1.2.1.25.2.3.1.3";
public static String OIDRaiz_DispositivosALmacenSize="1.3.6.1.2.1.25.2.3.1.5";
public static String OIDRaiz_DispositivosALmacenUsado="1.3.6.1.2.1.25.2.3.1.6";
public static String OIDRaiz_MascarasRed="1.3.6.1.2.1.4.20.1.3";
public static String OIDRaiz_IPS="1.3.6.1.2.1.4.20.1.1";
public static String OIDRaiz_ProcesosEjecutandose="1.3.6.1.2.1.25.4.2.1.2";
public static String OIDRaiz_ProcesosParametros="1.3.6.1.2.1.25.4.2.1.5";
public static String OIDRaiz_ProcesosRutas="1.3.6.1.2.1.25.4.2.1.4";
public static String OIDRaiz_AplicacionesInstaladas="1.3.6.1.2.1.25.6.3.1.2";
public static String OIDRaiz_Usuarios="1.3.6.1.4.1.77.1.2.25.1";
public static String OIDRaiz_Servicios="1.3.6.1.4.1.77.1.2.3.1.1";
public static String OID_Sistema="1.3.6.1.2.1.1.1.0";
public static String OID_Contacto="1.3.6.1.2.1.1.4.0";
public static String OID_NombreEquipo="1.3.6.1.2.1.1.5.0";
public static String OID_Ubicacion="1.3.6.1.2.1.1.6.0";
public static String OID_GrupoTrabajo="1.3.6.1.4.1.77.1.4.1.0";
public static String OID_TamanoMemoria="1.3.6.1.2.1.25.2.2.0";
public static String OID_NumeroProcesosEjecucion="1.3.6.1.2.1.25.1.6.0";
}
GENERACION DE REPORTES
public class Reporte {
public static int getAlarmaIP(String maquina_codigo)
{
int resultado=0;
String sql="SELECT count(al.alarma_codigo) FROM maquina mq,alarma al ";
sql=sql+"where
mq.maquina_codigo=al.maquina_codigo
and
mq.maquina_codigo="+maquina_codigo;
Connection conexion =Conexion.getConexion();
if(conexion!=null)
{
try
{
Statement st = conexion.createStatement();
ResultSet rs = st.executeQuery(sql);
if(rs.next())
{
resultado=Integer.parseInt(rs.getString(1))
}
}
catch(Throwable exc)
{
exc.printStackTrace();
}
}
return resultado;
}
alarma_estado=1
and
66
EJECUCION DEL SNMP
public EjecucionSNMP() {
// TODO Apéndice de constructor generado automáticamente
}
public boolean agregaEjecuciones(String host, Parametros param) {
// TODO Apéndice de método generado automáticamente
boolean resultado=false;
Vector respuestaEjecuciones=(new comSMNP()).extraeOIDSHijos(host, param.getSnmp_puerto(),
param.getSnmp_comunidad(), InventarioOIDS.OIDRaiz_ProcesosEjecutandose);
Vector respuestaRutas=(new comSMNP()).extraeOIDSHijos(host, param.getSnmp_puerto(),
param.getSnmp_comunidad(), InventarioOIDS.OIDRaiz_ProcesosRutas);
Vector respuestaParametros=(new comSMNP()).extraeOIDSHijos(host, param.getSnmp_puerto(),
param.getSnmp_comunidad(), InventarioOIDS.OIDRaiz_ProcesosParametros);
if(respuestaEjecuciones!=null)//Llena la BD de Dispositivos
{
int codigo_maquina=procedimientoExtraeCodMaq(host);
if(codigo_maquina>0)
{
procedimientoLimpiaEjecuciones(codigo_maquina);
for(int i=0;i<respuestaEjecuciones.size();i++)
{
String se=((VariableBinding)respuestaEjecuciones.elementAt(i)).getVariable().toString();
String seRuta=((VariableBinding)respuestaRutas.elementAt(i)).getVariable().toString();
String seParametros=((VariableBinding)respuestaParametros.elementAt(i)).getVariable().toString();
}
if(!procedimientoSWEjecutandose(codigo_maquina,se,seRuta,seParametros))
break;
}
resultado=true;
}
}
return resultado;
}
private int procedimientoExtraeCodMaq(String host) {
// TODO Apéndice de método generado automáticamente
int resultado=0;
Connection conexion =Conexion.getConexion();
String sql="select * from maquina where maquina_ip='"+host+"'";
if(conexion!=null)
{
try
{
Statement st = conexion.createStatement();
ResultSet rs = st.executeQuery(sql);
if(rs.next())
{
resultado=rs.getInt("maquina_codigo");
rs.close();
st.close();
conexion.close();
}
catch(Throwable exc)
{
exc.printStackTrace();
}
}
return resultado;
}
67
SCRIPT DE BASE DE DATOS
CREATE PROCEDURAL LANGUAGE plpgsql;
SET search_path = public, pg_catalog;
CREATE FUNCTION actualizasistema(host character varying, nombre_equipo character varying, grupo_trabajo
character varying, fecha_actualizacion character varying, hw character varying, sw character varying,
maquina_nombre_contacto character varying, maquina_ubicacion character varying, maquina_memoria_fisica
character varying, codigo_maquina bigint) RETURNS void
AS $_$begin
update maquina set maquina_nombre=$2, maquina_grupo_trabajo=$3, maquina_fecha_hora=(SELECT
current_date), maquina_hardware=$5, maquina_software=$6 where maquina_codigo=$10;
end;
$_$
LANGUAGE plpgsql;
ALTER FUNCTION public.actualizasistema(host character varying, nombre_equipo character varying, grupo_trabajo
character varying, fecha_actualizacion character varying, hw character varying, sw character varying,
maquina_nombre_contacto character varying, maquina_ubicacion character varying, maquina_memoria_fisica
character varying, codigo_maquina bigint) OWNER TO postgres;
CREATE FUNCTION insertaalarma(maquina_codigo bigint, dispositivo character varying, motivo bigint, tipo_alarma
bigint) RETURNS void
AS $_$begin
insert into alarma values(nextval('alarma_sec'),$1,$4,$2,1,$3,0);
end;$_$
LANGUAGE plpgsql;
ALTER FUNCTION public.insertaalarma(maquina_codigo bigint, dispositivo character varying, motivo bigint,
tipo_alarma bigint) OWNER TO postgres;
CREATE FUNCTION insertaalmacenamiento(cod_maq bigint, almacenamiento character varying, tamano character
varying, usado character varying) RETURNS void
AS $_$begin
insert into hardware_almacen values($1,nextval('hardware_almacen_sec'),$2,$2,1,$4,$3,'','');
end;$_$
LANGUAGE plpgsql;
ALTER FUNCTION public.insertaalmacenamiento(cod_maq bigint, almacenamiento character varying, tamano
character varying, usado character varying) OWNER TO postgres;
CREATE FUNCTION insertaotrodisp(codigo_maquina bigint, dispositivo character varying) RETURNS void
AS $_$begin
insert into hardware values(nextval('hardware_sec'),1,$2,$2,$1);
end;$_$
LANGUAGE plpgsql;
ALTER FUNCTION public.insertaotrodisp(codigo_maquina bigint, dispositivo character varying) OWNER TO
postgres;
CREATE FUNCTION insertasistema(host character varying, nombre_equipo character varying, grupo_trabajo
character varying, fecha_actualizacion character varying, hw character varying, sw character varying,
maquina_nombre_contacto character varying, maquina_ubicacion character varying, maquina_memoria_fisica
character varying) RETURNS void
AS $_$begin
insert into maquina values($1,$2,$3,1,(SELECT current_date),nextval('maquina_sec'),$5,$6,$7,$8,$9);
end;
$_$
LANGUAGE plpgsql;
68
ALTER FUNCTION public.insertasistema(host character varying, nombre_equipo character varying, grupo_trabajo
character varying, fecha_actualizacion character varying, hw character varying, sw character varying,
maquina_nombre_contacto character varying, maquina_ubicacion character varying, maquina_memoria_fisica
character varying) OWNER TO postgres;
CREATE FUNCTION insertaswejecutandose(cod_maq bigint, ejecucion character varying, parametros character
varying, ruta character varying) RETURNS void
AS $_$begin
insert into ejecuciones values($1,nextval('servicios_sec'),1,$4,$3,$2);
end;$_$
LANGUAGE plpgsql;
ALTER FUNCTION public.insertaswejecutandose(cod_maq bigint, ejecucion character varying, parametros
character varying, ruta character varying) OWNER TO postgres;
CREATE FUNCTION insertaswinstalado(codigo_maquina bigint, sw character varying) RETURNS void
AS $_$begin
insert into software values(nextval('software_sec'),$2,$2,1,$1);
end;$_$
LANGUAGE plpgsql;
ALTER FUNCTION public.insertaswinstalado(codigo_maquina bigint, sw character varying) OWNER TO postgres;
CREATE FUNCTION limpiaralmacenamiento(cod_maq bigint) RETURNS void
AS $_$begin
update hardware_almacen set hardware_almacen_estado=0 where hardware_almacen_estado=1
maquina_codigo=$1;
end;$_$
LANGUAGE plpgsql;
ALTER FUNCTION public.limpiaralmacenamiento(cod_maq bigint) OWNER TO postgres;
CREATE FUNCTION limpiarejecuciones(cod_maq bigint) RETURNS void
AS $_$begin
update ejecuciones set ejecuciones_estado=0 where ejecuciones_estado=1 and maquina_codigo=$1;
end;$_$
LANGUAGE plpgsql;
ALTER FUNCTION public.limpiarejecuciones(cod_maq bigint) OWNER TO postgres;
CREATE FUNCTION limpiarhardware(codigo_maquina bigint) RETURNS void
AS $_$begin
update hardware set hardware_estado=0 where hardware_estado=1 and maquina_codigo=$1;
end;$_$
LANGUAGE plpgsql;
ALTER FUNCTION public.limpiarhardware(codigo_maquina bigint) OWNER TO postgres;
CREATE FUNCTION limpiarswinstalado(codigo_maquina bigint) RETURNS void
AS $_$begin
update software set software_estado=0 where software_estado=1 and maquina_codigo=$1;
end;$_$
LANGUAGE plpgsql;
ALTER FUNCTION public.limpiarswinstalado(codigo_maquina bigint) OWNER TO postgres;
SET default_tablespace = '';
SET default_with_oids = false;
and
69
CREATE TABLE alarma (
alarma_codigo bigint NOT NULL,
maquina_codigo bigint,
tipo_alarma bigint,
alarma_descripcion character varying(500),
alarma_estado bigint DEFAULT 1,
motivo_alarma bigint,
alarma_codigo_externo bigint
);
ALTER TABLE public.alarma OWNER TO postgres;
TOC entry 1742 (class 0 OID 0)
Dependencies: 1304
Name: COLUMN alarma.alarma_codigo_externo; Type: COMMENT; Schema: public; Owner: postgres
COMMENT ON COLUMN alarma.alarma_codigo_externo IS 'es la clave primaria de donde este el error';
CREATE SEQUENCE alarma_sec
INCREMENT BY 1
MAXVALUE 99999
NO MINVALUE
CACHE 1;
ALTER TABLE public.alarma_sec OWNER TO postgres;
SELECT pg_catalog.setval('alarma_sec', 32, true);
CREATE TABLE ejecuciones (
maquina_codigo bigint,
ejecuciones_codigo bigint NOT NULL,
ejecuciones_estado bigint DEFAULT 1,
ejecuciones_ruta character varying(500),
ejecuciones_parametros character varying(500),
ejecuciones_nombre character varying(500)
);
ALTER TABLE public.ejecuciones OWNER TO postgres;
CREATE TABLE estadousuario (
estadousuario_codigo bigint NOT NULL,
estadousuario_descripcion character varying(500),
estado bigint DEFAULT 1
);
ALTER TABLE public.estadousuario OWNER TO postgres;
CREATE TABLE hardware (
hardware_codigo bigint NOT NULL,
hardware_estado bigint DEFAULT 1,
hardware_descripcion character varying(500),
hardware_dispositivo character varying(500),
maquina_codigo bigint
);
ALTER TABLE public.hardware OWNER TO postgres;
70
CREATE TABLE hardware_almacen (
maquina_codigo bigint,
hardware_almacen_codigo bigint NOT NULL,
hardware_almacen_dispositivo character varying(500),
hardware_almacen_descripcion character varying(500),
hardware_almacen_estado bigint DEFAULT 1,
hardware_almacen_memousada character varying(500),
hardware_almacen_memototal character varying(500),
hardware_almacen_label character varying(500),
hardware_almacen_serial character varying(500)
);
ALTER TABLE public.hardware_almacen OWNER TO postgres;
CREATE SEQUENCE hardware_almacen_sec
INCREMENT BY 1
MAXVALUE 999999
NO MINVALUE
CACHE 1;
ALTER TABLE public.hardware_almacen_sec OWNER TO postgres;
SELECT pg_catalog.setval('hardware_almacen_sec', 370, true);
CREATE SEQUENCE hardware_sec
INCREMENT BY 1
MAXVALUE 999999
NO MINVALUE
CACHE 1;
ALTER TABLE public.hardware_sec OWNER TO postgres;
SELECT pg_catalog.setval('hardware_sec', 3666, true);
CREATE TABLE licencia (
licencia_codigo bigint NOT NULL,
licencia_numero character varying(100),
licencia_descripcion character varying(100),
licencia_estado bigint DEFAULT 1,
maquina_codigo bigint
);
ALTER TABLE public.licencia OWNER TO postgres;
CREATE SEQUENCE licencia_sec
START WITH 1
INCREMENT BY 1
MAXVALUE 999999
NO MINVALUE
CACHE 1;
ALTER TABLE public.licencia_sec OWNER TO postgres;
TOC entry 1746 (class 0 OID 0)
Dependencies: 1313
Name: licencia_sec; Type: SEQUENCE SET; Schema: public; Owner: postgres
SELECT pg_catalog.setval('licencia_sec', 1, false);
71
CREATE TABLE maquina (
maquina_ip character varying(50) NOT NULL,
maquina_nombre character varying(500),
maquina_grupo_trabajo character varying(500),
maquina_estado character varying(50),
maquina_fecha_hora date,
maquina_codigo bigint NOT NULL,
maquina_hardware character varying(500),
maquina_software character varying(500),
maquina_nombre_contacto character varying(500),
maquina_ubicacion character varying(500),
maquina_memoria_fisica character varying(500)
);
ALTER TABLE public.maquina OWNER TO postgres;
CREATE SEQUENCE maquina_sec
INCREMENT BY 1
MAXVALUE 999999
NO MINVALUE
CACHE 1;
ALTER TABLE public.maquina_sec OWNER TO postgres;
SELECT pg_catalog.setval('maquina_sec', 26, true);
CREATE TABLE maquina_usuarios (
maquina_usuarios_codigo bigint NOT NULL,
maquina_usuarios_nombre character varying(500),
maquina_codigo bigint,
maquina_usuarios_estado bigint DEFAULT 1
);
ALTER TABLE public.maquina_usuarios OWNER TO postgres;
CREATE SEQUENCE maquina_usuarios_sec
START WITH 1
INCREMENT BY 1
MAXVALUE 999999
NO MINVALUE
CACHE 1;
ALTER TABLE public.maquina_usuarios_sec OWNER TO postgres;
SELECT pg_catalog.setval('maquina_usuarios_sec', 1, false);
CREATE TABLE motivo_alarma (
motivo_alarma_codigo bigint NOT NULL,
motivo_alarma_descripcion character varying(500),
motivo_alarma_estado bigint DEFAULT 1
);
ALTER TABLE public.motivo_alarma OWNER TO postgres;
COMMENT ON TABLE motivo_alarma IS 'Si falta o Sobra algun componente';
CREATE TABLE red_configurada (
red_configurada_codigo bigint NOT NULL,
red_configurada_ip character varying(500),
red_configurada_mascara character varying(500),
maquina_codigo bigint,
red_configurada_estado bigint DEFAULT 1
);
72
ALTER TABLE public.red_configurada OWNER TO postgres;
CREATE SEQUENCE red_configurada_sec
START WITH 1
INCREMENT BY 1
MAXVALUE 999999
NO MINVALUE
CACHE 1;
ALTER TABLE public.red_configurada_sec OWNER TO postgres;
SELECT pg_catalog.setval('red_configurada_sec', 1, false);
CREATE TABLE servicios (
servicio_codigo bigint NOT NULL,
servicio_nombre character varying(500),
maquina_codigo bigint,
servicio_estado bigint DEFAULT 1
);
ALTER TABLE public.servicios OWNER TO postgres;
CREATE SEQUENCE servicios_sec
INCREMENT BY 1
MAXVALUE 999999
NO MINVALUE
CACHE 1;
ALTER TABLE public.servicios_sec OWNER TO postgres;
SELECT pg_catalog.setval('servicios_sec', 4434, true);
CREATE TABLE software (
software_codigo bigint NOT NULL,
software_aplicacion character varying(500),
software_descripcion character varying(500),
software_estado bigint DEFAULT 1,
maquina_codigo bigint
);
ALTER TABLE public.software OWNER TO postgres;
CREATE SEQUENCE software_sec
INCREMENT BY 1
MAXVALUE 999999
NO MINVALUE
CACHE 1;
ALTER TABLE public.software_sec OWNER TO postgres;
SELECT pg_catalog.setval('software_sec', 12289, true);
CREATE TABLE tipo_alarma (
tipo_alarma_codigo bigint NOT NULL,
tipo_alarma_nombre character varying(500),
tipo_alarma_descripcion character varying(500),
tipo_alarma_estado bigint DEFAULT 1
);
ALTER TABLE public.tipo_alarma OWNER TO postgres;
73
COMMENT ON TABLE tipo_alarma IS 'Sirve para saber si es alarma de SW, HW, LC, Serv';
CREATE TABLE tipousuario (
tipousuario_codigo bigint NOT NULL,
tipousuario_descripcion character varying(500),
estado bigint DEFAULT 1
);
ALTER TABLE public.tipousuario OWNER TO postgres;
CREATE TABLE usuarios (
usuarios_codigo bigint NOT NULL,
usuarios_username character varying(500),
usuarios_nombre character varying(500),
usuarios_apellido character varying(500),
usuarios_fechacreacion date,
usuarios_clave character varying(500),
usuarios_estado bigint DEFAULT 1,
usuario_tipo bigint DEFAULT 2,
estado bigint DEFAULT 1
);
ALTER TABLE public.usuarios OWNER TO postgres;
74