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