Translate

lunes, noviembre 17, 2014

Cambiar hora del sistema (Linux)

Para cambiar la hora del sistema usaremos el comando date, pero hemos de tener en cuenta que al reinicializar el ordenador, éste cogerá la hora de la BIOS y nos volverá a colocar la hora anterior, para evitar esto cambiaremos también la hora de la BIOS con el comando hwclock como se detalla a continuación:
Para no tener problemas, os recomiendo borrar primero el fichero /etc/adjtime, no pasa nada por borrarlo, pues se crea autmáticamente y solo sirve para la configuración de la zona horaria, puede tener un aspecto como este:
------
[root@localhost ~]# cat /etc/adjtime
0.041498 1177502852 0.000000
1177502852
LOCAL
[root@localhost ~]#
-----
Supongamos queremos poner: 27-Mayo-2007 y la hora 17:27.
Esto lo haremos como root:
# date -s "2013/05/13 17:27"
Sun May 27 17:27:00 CET 2007
Ahora realizaremos el mismo cambio para actualizar la fecha en la BIOS.
# hwclock --set --date="2013-05-13 17:27"
Para comprobarlo tecleamos:
# hwclock
Fri Feb 25 16:25:06 2000  -0.010586 seconds
Y ya está!

Podemos meter un pipe para cambiar y sellar la hora en la misma linea:


[root@srvlinux~]# date -s "2013/05/23 9:35" | hwclock --set --date="2013-05-23 9:35"

viernes, noviembre 14, 2014

Usar la hora de un servidor interno NTP (en la red interna)

En la red interna es totalmente necesario mantener sincronizados nuestros servidores además de puestos de trabajo, para mantener sincronizados nuestros servidores GNU/Linux con un controlados de dominio windows que, a su vez, recive la hora de un servidor horario externo (adómico por ejemplo) tenemos que proceder de la siguiente manera:

hay que parar servicio iptables, ya que bloquea el puerto 123
Ya estamos en condiciones de hacer uso del comando ntpdate que actualizará la hora de nuestro sistema con la del servidor de hora que le pidamos, la sintaxis es la siguiente (el parámetro -u debemos usarlo para evitar que un cortafuegos nos corte la conexión UDP en el puerto 123 que usa NTP):
ntpdate -u dirección_servidor
Configuración
La idea no es pedirle a nuestro equipo de forma manual que pida la hora al servidor NTP, la idea es automatizar la tarea y que se haga de forma periódica y transparente. Para ello lo configuraremos como servicio. Las instrucciones que comento a partir de aquí, son propias de distribuciones derivadas de Red Hat, como pueden ser Fedora, CentOSo Scientific Linux, en Debian, Ubuntu y derivadas cambiar parcialmente, pero la idea es la misma.
Lo primero que debemos hacer es editar el fichero /etc/ntpd.conf y buscar dentro de él la zona donde se encuentran el listado de servidores, por defecto aparecerá algo como lo que muestro a continuación:
Yo aqui pongo la dirección de mi servidor NTP interno (mi red local), lo pongo por IP para así evitar el uso del servidor DNS y tengo algo menos de dependecia a los servidores windows de mi red:
server IP_DE_MI_SRV_NTP
Los sustituimos por la lista de servidores NTP que hayamos escogido (lo ideal es poner por lo menos 3), salvamos y salimos del fichero.
Lo próximo será asegurarnos que el servicio NTP se activará en cada inicio del sistema:

chkconfig ntpd on

miércoles, noviembre 12, 2014

Buscar una cadena de texto en editor VIM y que la reemplace (VIM II)

Vim es un editor en línea de comandos muy popular en Linux. Su popularidad se debe principalmente a que puede ejecutarse en cualquier ambiente, por más complicado que sea, y ofrece un conjunto poderoso de comandos, entre ellos las famosas “expresiones regulares” de Unix).
Vayamos al grano, y dejemos un ejemplo de los clásicos que sirven para sorprender en una fiesta de usuarios Windows ;-)
Una vez ejecutado el editor, para acceder a la línea de comandos deberemos presionar los “:” (dos puntos), donde digitaremos lo siguiente:

1,$ s/texto a reemplazar/Texto sustituto/g


Esto significa:
  • “1″ es la primera línea donde comenzaremos la búsqueda/reemplazo
  • “$” significa la última línea donde terminaremos la búsqueda/reemplazo, en este caso “$” representa el fin del archivo (podemos sustituirla por el número de línea hasta donde queremos que llegue)
  • “s/” significa “search”, o “buscar”, y lo que aparece seguido a la barra es la cadena a buscar.
  • “/” como separador, y la cadena siguiente es el texto que reemplaza la cadena buscada
  • “/g” para terminar significa “global” (lo opuesto sería no hacer la sustitución a todo lo que se encuentre, o hacerlo de forma “interactiva”).
En resumen: buscar en todo el archivo que estamos editando la cadena “texto a reemplazar” y la sustituye por “Texto sustituto”, no importa la cantidad de veces que aparezca.

martes, noviembre 11, 2014

Editor VI (I), comándos básicos para el uso cotidiano (también valido para VIM)



Para realizar una búsqueda introducir "/ texto a buscar", para seguir buscando en el documento pulsar "n" (quiere decir next)
para borrar una linea entera "dd"
para editar introducir "i"
para salir de editar  darle a esc-->:q
para salir sin salvar   darle a esc-->:q!

para salir salvando   darle a esc-->:x

lunes, noviembre 10, 2014

Activación Proxy inverso apache (II):

Vamos a activar un proxy inverso de apache, muy util para enmascarar direcciones web que pasen primero por el frontal


#modulos necesarios para el funcionamiento de proxy inverso
LoadModule proxy_module        modules/mod_proxy.so
LoadModule proxy_http_module   modules/mod_proxy_http.so
#modulo necesario para traducir correctamente las URL con caracter "?" en serv. web
LoadModule rewrite_module      modules/mod_rewrite.so



# ponemos la direccion que "enmascarará" el frontal proxy:


ProxyPass /Direcciónorigen
 http://apache:8081/DirecciónDestino

viernes, noviembre 07, 2014

Instalar Jboss5as en DEBIAN GNU/Linux + Sun jdk 1.6



Hay que actualizar las fuentes de datos apt:
http://wiki.debian.org/JBossPackaging   ---->el wiki para actualizar las sources apt para jboss

Editamos el sources.list y metemos "non-free" al final de la linea deb
ejecutamos un apt-get update (para actualizar las fuentes)
ejecutamos apt-get install sun-java6-jdk (asi ya tenemos la maquina virtual de java)

Para instalar jboss solo necesitamos bajar el .zip de jboss de la versión que queramos, la descomprimimos con unzip en /opt

Ejecutamos ./run.sh -b 0.0.0.0 (para todos los interfaces de red)

en 5 minutos tenemos corriendo el jboss en http://serv_jboss:8080

jueves, noviembre 06, 2014

-AWSTAS: Gráficas con estadísticas de accesos al servidor Apache (Serie Apache I):

En debian 5.0 "lenny":

Lo primero instalamos awstats con apt-get:

#apt-get install awstats

Una vez instalado tenemos que editar el fichero /etc/awstats/awstats.conf y cambiar los siguientes parámetros:
LogFile debe ser igual a la ubicación de nuestro fichero access.log, por ejemplo:
LogFile=”/var/log/apache2/access.log”
Cambiamos tambien SiteDomain, aquí tenemos que poner nuestro nombre de dominio, por ejemplo:
SiteDomain=”MiSrvApache”

Con estos párametros de momento es suficiente, podemos cambiar más para personalizar como se muestran las estadísticas.
Una vez hecho esto tenemos que actualizar la base de datos de estadísticas para este dominio, para ello lanzamos:
perl /usr/lib/cgi-bin/awstats.pl -config=MiSrvApache-update


La primera vez tenemos que hacerlo de forma manual (tarda un poco) después podemos programarlo en crontab.
Ejecutarlo a las 12 de la noche cada día

0 0 * * * /usr/bin/perl /usr/lib/cgi-bin/awstats.pl -config=MiSrvApache -update

Se pueden generar los informes de forma dinámica accediendo al script cgi en el servidor web:
http://MiSrvApache/cgi-bin/awstats.pl?config=MiSrvApache

Os pongo en modo "desglosado" una instalación en debian 5.0 "lenny:"
Bien, pues dicho y hecho. Se supone que ya estamos conectados al servidor mediante ssh. Nos vamos al directorio opt con
cd /opt
y desde allí descargamos el paquete con
wget http://surfnet.dl.sourceforge.net/sourceforge/awstats/awstats-6.7.tar.gz
(la dirección indicada es un mirror con la versión 6.7. Lo mejor es ir a la página http://awstats.sourceforge.net y escoger desde allí la versión más reciente y el mejor mirror según nuestra localización.)
Seguidamente lo descomprimimos:
tar zxf awstats-6.7.tar.gz
Tendremos un directorio llamado awstats-6.7 que renombraremos a awstats a secas:
mv awstats-6.7 awstats
Ahora tenemos que conseguir que Apache permita ejecutar archivos perl en el directorio donde se encuentra el programa principal de Awstats. Para esto tenemos que modificar la configuración de Apache. Aviso de que en mi caso he creado un sitio virtual al que solo se puede acceder mediante SSL, y es ahí y solo ahí donde voy a permitir la ejecución de Awstats. Además protegeré el programa mediante usuario y contraseña.
Evidentemente se puede hacer de forma que Awstats sea accesible desde otros sitios o todos los sitios con o sin SSL. En ese caso habría que añadir el código que pongo más abajo en /etc/apache2/apache2.conf Yo he preferido hacerlo disponible en un solo sitio, autenticado y mediante SSL porque lo considero más seguro.
En /etc/apache2/sites-available/default-ssl añadir al final (repito que default-ssl es un sitio que he creado yo, si no lo tienes, tendrás que crearlo:
ScriptAlias /awstats/ /opt/awstats/wwwroot/cgi-bin/
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
Con ésto permitimos la ejecución del programa en el servidor Apache. Pero necesitamos crear unos “alias” para algunos directorios de Awstats, de lo contrario, entre otras cosas, no cargarían las imágenes. También en /etc/apache2/sites-available/default-ssl tras el código anterior, pegamos éste:
Alias /classes “/opt/awstats/wwwroot/classes/”
Alias /css “/opt/awstats/wwwroot/css/”
Alias /icon “/opt/awstats/wwwroot/icon/”
Alias /js “/opt/awstats/wwwroot/js/”
Options None
AllowOverride None
Order allow,deny
Allow from all
Y, finalmente, es ese mismo archivo, si queremos proteger Awstats con usuario y contraseña, pegamos tras lo anterior:
AuthUserFile /opt/awstats/.htpasswd
#AuthGroupFile /path/to/.group
AuthName “AWStats”
AuthType Basic
require valid-user
Lo guardamos y refrescamos la configuración de Apache:
/etc/init.d/apache2 reload
Bien, ahora necesitamos crear un directorio donde Awstats guarde las estadísticas:
mkdir /opt/awstats/data
Y, por supuesto, crearemos un usuario para poder acceder mediante Web a Awstats:
htpasswd -bcm /opt/awstats/.htpasswd “usuario” “contraseña”
Por ahora todo perfecto. Seguidamente tenemos que crear un archivo de configuración para cada sitio Web del que deseemos conseguir estadísticas. Creamos un directorio donde se guardarán estas configuraciones:
mkdir /etc/awstats
Y copiamos allí el archivo de muestra de configuración que viene con Awstats:
cp -p /opt/awstats/wwwroot/cgi-bin/awstats.model.conf /etc/awstats/
Este archivo hay que editarlo y configurarlo correctamente. En la directiva LogFile pondremos
LogFile=”/var/log/apache2/access.log”
En SiteDomain pondremos el dominio principal de nuestro sitio
SiteDomain=”www.pacosanchez.com”
En HostAliase volvemos a poner nuestro dominio, por ejemplo, con y sin “www” y cualquier otro subdominio que utilicemos con ese dominio.
HostAliases=”www.pacosanchez.com pacosanchez.com REGEX[^.*\.pacosanchez\.com$]“
En DirData indicamos el directorio de datos que hemos creado anteriormente:
DirData=”/opt/awstats/data”
El resto de las opciones se pueden dejar por defecto o las podemos personalizar leyendo en la documentación para qué sirve cada una. Por cada Web de la que deseemos obtener estadísticas por separado, tenemos que crear un archivo de configuración.
Ya solo nos falta ejecutar el script para actualizar las estadísticas:
perl /opt/awstats/wwwroot/cgi-bin/awstats.pl -config=pacosanchez.com -update



Para que la ejecución de scripts perl sea más segura, vamos a crear un usuario llamado awstats cuyo directorio sea /opt/awststs:
[root@servidor ~]# useradd -d /opt/awstats awstats
Ahora entramos como usuario awstats:
[root@servidor ~]# su – awstats
Editamos el crontab del usuario awstats con nano:
[awstats@servidor ~]# EDITOR=nano crontab -e
Y añadimos lo siguiente en una sola línea para que awstats actualice las estadísticas cada hora en punto:
0 * * * * /opt/awstats/tools/awstats_updateall.pl now -confdir=”/etc” -awstatsprog=”/opt/awstats/wwwroot/cgi-bin/awstats.pl” >/dev/null
A partir de ahora podremos consultar las completas estadísitcas que nos ofrece este programa desde la dirección https://www.dominio.com/awstats/awstats.pl?config=pacosanchez.com
Lo que sigue tras “awstats.pl?config=” será el nombre del dominio del cual queremos consultar las estadísticas, y tiene que coincidir exactamente con el nombre que le hemos dado a su archivo de configuración en /etc/awstats quitándole awstats y conf. Por ejemplo, para el dominio debian.org el archivo de configuración se llamaría awstats.debian.org.conf y lo llamaríamos desde “…awstats.pl?config=debian.org
Mas adelante haremos algunos cambios que ampliarán la información mostrada por Awstats, pero eso será en otra ocasión.






miércoles, noviembre 05, 2014

Nos creamos un servidor NAS casero con Linux



Nos interesa sacar partido a las principales herramientas de Linux para que nos baje los torrent y nos mande un mail cuando finalice la bajada de nuestros ficheros.

Correo y cron


Para instalar un servidor de correo y que envie mails a nuestra direcion de correo tenemos que tener instalado mailx y exim4


#apt-get install mailx exim4-config


Despues tenemos que configurar el servidor de correo para que envie desde nuestra maquina:


#dpkg-reconfigure exim4-config


despues de eso añades como "internet site, mail recibed and send by smtp
le das solo a la loopback interface para que escuche peticiones
entrantes y listo, aceptara cualquier smtp de tu maquina. Si quieres de
tu red interna añades por ejemplo 192.168.0.0/88 o tu rango extenso de

ip. Eso si, sin autentificacion.


Para sacar el listado de un directorio y mandarmelo por mail usamos el siguiente comando:

#ls /home/carlos/.aMule/Incoming/ | mailx -s "Listado de bajadas en emule" mimail@gmail.com

Para efectuar un test a una direccion de red que le pasemos con un ping ( ping de una sola respuesta) le damos el siguiente script:

#!/bin/bash

MALO=`ping -rc 1 $1|grep Unreachable`

if `test "$MALO" != ""`
then echo "No existe"
else echo "OK"
fi
prueba llamándolo con la IP, por ejemplo, si lo llamas prueba.sh:

$ prueba.sh 192.168.1.2
$ prueba.sh 192.168.1.5

El mismo ejercicio pero generando una pagina web con formato:

#!/bin/bash
echo "" > /root/index.html
MALO=`ping -rc 1 $1| grep Unreachable`

if `test "$MALO" != ""`
then echo "NAS-micasa Caido" >> /root/index.html

else echo "NAS-micasa OK" >> /root/index.html
fi

echo "
" >> /root/index.html

El ejercicio adaptado a mi red para vigilar un servidor:
#!/bin/bash

MALO=`ping -rc 1 192.168.2.105 | grep Unreachable`

if `test "$MALO" != ""`
then echo "Estado servidor NAS: Caido" | mail -s "Estado del Servidor NAS" rompeola@gmail.com
else echo "Nas levantado, no mando mail, no hace falta"  > /dev/null
fi


Podemos agregar una entrada cron para que automáticamente mande los mails con la frecuencia que deseemos:

-metemos el comando anterior en un script (script.sh y le damos permisos de ejecucion chmos +x script.sh)
-agregar la entrada cron:
#crontab -e ---->Entramos en modo edicion de cron

  0,10,20 * * * * /bin/script.sh     --->> se ejecuta todos los dias a todas las horas durante los minutos 0, 10 y 20


Servidor NAS, necesitaremos un cliente torrent que permita administración vía web como

 torrentflux,


192.168.2.105 --- administracion web puerto 80
192.168.2.105:9091  -->> Pagina de descargas torrent
192.168.2.105:4080  -->> Pagina de descargas emule