Archivo

Archivo para la categoría ‘Sin categoría’

Reporting de HylaFAX

Viernes, 30 de julio de 2010 Enric Solsona Sin comentarios

Aquí dejo un pequeño script para sacar la información de los logs del HylaFAX.

La información que saca (report) la envía por mail. Aquí dejo un extracto de la información enviada:

Ejemplo de report

En dicho report podemos ver los envíos con errores del tipo:

Busy signal detected; too many attempts to dial

Failure to train remote modem at 2400 bps or minimum speed

No carrier detected

No carrier detected; too many attempts to dial

No local dialtone; too many attempts to dial

No receiver protocol (T.30 T1 timeout)

No response to PPS repeated 3 times

RSPREC error/got DCN (sender abort)

etc…

Aquí dejo el documento para la descarga

Y aquí el código.

#!/bin/bash
echo “Haciendo limpieza”
rm -R /tmp/temporales
mkdir /tmp/temporales
cd /var/spool/hylafax/doneq/
echo “Realizando check del dia $2″
find ./ -newermt “$1 $2, $3″ -ls| while read line;do export FILE=$(echo “${line}”|awk ‘{print $11}’); cp ${FILE} /tmp/temporales/; done
echo “Realizando check del dia $5″
find ./ -newermt “$4 $5, $6″ -ls| while read line;do export FILE=$(echo “${line}”|awk ‘{print $11}’); cp ${FILE} /tmp/temporales/; done
export DIR_FAXES=”/tmp/temporales/”
export RUTA_FINAL=”/root/hylaing/pruebas-hylafax/ch”
export STATE_8=”/root/hylaing/pruebas-hylafax/ch/S8″
export FAXES_ERRONEOS=”/root/hylaing/pruebas-hylafax/informe_faxes_$(date +%s).txt”
echo “Realizando fichero de errores”
find ${DIR_FAXES} -name “q*” |while read file ; do
export STATE=$(grep “state:” ${file} | cut -d ‘:’ -f2 )
mkdir ${RUTA_FINAL}/S${STATE} 2>/dev/null
cp ${file} ${RUTA_FINAL}/S${STATE}/
done
echo “Fecha|identificador del fax|numero de telf-fax destino|Documento|Estado de error”>> ${FAXES_ERRONEOS}
echo “Realizando paso 2 de fichero de errores”
find ${STATE_8} -name “q*”| while read line; do
export FECHA=$(cat ${line} | grep “tts:” | cut -d ‘:’ -f2 | awk ‘{print $1}’)
FECHA=$(date -d@${FECHA})
export TELF_FAX=$(cat ${line} | grep “external:”| cut -d ‘:’ -f2 | awk ‘{print $1}’)
export STATUS=$(cat ${line} | grep “status:”| cut -d ‘:’ -f2 )
export DOC=$(cat ${line} | grep “tiff:”| cut -d ‘:’ -f4 )
export FAX=$(echo “${DOC}”| cut -d ‘/’ -f2| cut -d ‘.’ -f1|cut -d ‘c’ -f2)
echo “${FECHA}|${FAX}|${TELF_FAX}|/var/spool/hylafax/${DOC}|${STATUS}” >> ${FAXES_ERRONEOS}
done
echo “Realizando limpiaza”
rm -R ${RUTA_FINAL}/S* 2>/dev/null
echo “Comprimiendo fichero”
zip ${FAXES_ERRONEOS}.zip ${FAXES_ERRONEOS}
echo “Enviando mail”
mutt -s “Informe Faxes” -a ${FAXES_ERRONEOS}.zip mail@dominio.com < /dev/null
echo “Proceso finalizado”

Categories: Debian, HylaFAX, Linux, Sin categoría, Software Tags:

Instalar y configurar proftpd

Miércoles, 28 de julio de 2010 Enric Solsona Sin comentarios

Este es un pequeño manual para la instalación y configuración básica de un proftpd, instalar el software, dar de alta usuarios, ver un poco los permisos etc… Esta instalación esta realizada en una Fedora Core 13, pero prácticamente todos los comandos son usables en una Debian (por ejemplo) Instalación de proftpd:

[root@bluehat ~]# yum install proftpd

En una Debian será apt-get install proftpd Editamos el fichero de configuración. A diferencia que la instalación de Debian, el proftpd en Fedora no pregunta por el tipo de instalación (standalone/inetd) ni otros parámetros (nombre del servidor ftp, etc..) En este caso editamos el fichero de configuración:

[root@bluehat ~]# vim /etc/proftpd.conf

En debian /etc/proftpd/proftpd.conf Revisamos los parámetros típicos/básicos de la configuración:

ServerName                      “BluHat Ftp Server”

Mi consejo es dejar en DNS lookups en off. Lo que hace la directiva es que cada vez que te conectas, mira en el DNS si tu IP/Nombre son correctos, eso hace que si no tienes configurado un dominio o DNS correctamente detectes una lentitud muy grande en las transferencias.

# Don’t do reverse DNS lookups (hangs on DNS problems)

UseReverseDNS                   off Iniciamos el proftpd

[root@bluehat ~]# /etc/init.d/proftpd start

Ahora vamos agregar un usuario. Por ejemplo ftpuser

adduser ftpuser

modificamos su contraseña:

passwd ftpuser

Una vez agregado el usuario, este tiene permisos para acceder a una shell del sistema. Modificaremos los permisos del usuario para  que no pueda acceder. Lo que hacemos es modificar su Shell poniendo /sbin/nologin en el fichero /etc/passwd Ya tenemos creado el usuario. El acceso por defecto será su home. Esto se define en el parámetro siguiente del pproftpd.conf (la opción ~)

DefaultRoot                     ~ !adm

En Debian esta opción esta deshabilitada, solo tenemos que quitar la “#” de la politica. Si vemos que al conectarnos aparece error de usuario/contraseña invalida tendremos que mirar los logs. Aun así, lo mas seguro es que la shell que le hemos definido en /etc/passwd no exista (en el caso de Debian) tendremos que editar el fichero /etc/shells  y agregar la shell

vim /etc/shells

Si queremos hacer que el usuario tenga acceso a un directorio especifico, modificamos su home (lógicamente deberemos aplicarle los permisos adecuados para poder leer/escribir en dicho directorio por ejemplo:

ftpuser:x:501:501::/directorio_web/web_de_ftpuser:/sbin/nologin

También podemos crear un enlace simbólico en un directorio de su carpeta hacia otra. En la de destino también deberá tener permisos. ln -s /var/www/ftpuser/web/    www Lo que hará sera crear una carpeta con un enlace hacia la web (en otro directorio llamado ftpuser)



Truncar archivos LDF de SQL Server

Miércoles, 28 de julio de 2010 Enric Solsona Sin comentarios

Desde hace un tiempo, tengo varias Bases de Datos en que el fichero LDF se va llenando sin parar.
Aquí dejo una sentencia para vaciar dicho fichero y dejar de tener problemas con los espacios

use @Base_de_Datos;

BACKUP LOG @Base_de_Datos WITH NO_LOG

DBCC SHRINKFILE (@Base_de_Datos_Log, 10) WITH NO_INFOMSGS

Aquí tenemos el ejemplo:

Después podemos ver la diferencia de espacio del log:

Categories: SQL, Sin categoría, Windows Tags:

Manual SELinux

Viernes, 16 de julio de 2010 Enric Solsona Sin comentarios

Buscando información he encontrado un manual muy detallado y bien desarrollado que explica la base/funcionamiento y usos de SELinux.

NSA

Dejo aquí varios links para su descarga así como el de la fuente:

SELinux en la web de NSA

PDF osties.com

PDF Codigo Libre

Fuente

VbScript para duplex en impresora y predeterminarla

Jueves, 15 de julio de 2010 Enric Solsona Sin comentarios

Hace tiempo que el mundo lucha por un espacio mas verde.

“Todos” reciclamos, contaminamos menos etc…

Flor

La empresa por la que trabajo en la actualizad, no es menos. Por esto, entre otros motivos, me he visto envuelto en una tarea de configurar de forma automática todos los ordenadores (hay un spool).

La solución era;

Configurar el duplex en la impresora del spool.

Eliminar la impresora del usuario

Conectar de nuevo la impresora del usuario (se establecen las configuración que hay en el spool)

Establecer la impresora predeterminada.

Para realizarlo nada mejor que un VbScript por Active Directory.

No hace nada mas que sacar un listado de las impresoras de red, las guarda en un fichero (con el nombre de red Ej: \\spool\printer1) Guardar en otro fichero la impresora predeterminada (de la misma manera, con un fichero) y  luego conectarlas todas de nuevo.

Aquí tenemos el script:

Const ForAppending = 8
Const ForReading = 1

‘ Get the local computer name.
strComputer = “.”
Dim aqui

‘ MsgBox “Printers have been mapped.” & vbCRLF & varDelText & vbCRLF & vbCRLF & “Impresoras Mapeadas”, 64, “Script Complete”
‘strComputer = “.”
‘Set objWMIService = GetObject(“winmgmts:” _
‘ & “{impersonationLevel=impersonate}!\\” _
‘ & strComputer & “\root\cimv2″)
‘Set colInstalledPrinters = objWMIService.ExecQuery _
‘ (“Select * from Win32_PrinterConfiguration “)
‘For Each objPrinter In colInstalledPrinters
‘ objPrinter.Duplex = False

‘Wscript.Echo “Duplex: ” & objPrinter.Duplex & objPrinter.Name
‘Next

Set oShell = CreateObject(“Wscript.Shell”)
strUserProfile = oShell.ExpandEnvironmentStrings(“%USERPROFILE%”)
Set filesys = CreateObject(“Scripting.FileSystemObject”)
dim filesys, filetxt, getname, path, demofile, demofile3, filesys3

path = filesys.GetAbsolutePathName(strUserProfile & “\text.txt”)
getname = filesys.GetFileName(path)

If filesys.FileExists(path) Then
Set filesys= CreateObject(“Scripting.FileSystemObject”)
set demofile = filesys.GetFile(strUserProfile & “\text.txt”)
demofile.Delete
End If

path3 = filesys.GetAbsolutePathName(strUserProfile & “\text2.txt”)
getname = filesys.GetFileName(path3)
If filesys.FileExists(path3) Then

Set filesys3= CreateObject(“Scripting.FileSystemObject”)
set demofile3 = filesys3.GetFile(strUserProfile & “\text2.txt”)
demofile3.Delete
End If

Set WshNetwork = CreateObject(“WScript.Network”)
Set objWMIService = GetObject(“winmgmts:{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2″)
Set colInstalledPrinters = objWMIService.ExecQuery(“Select * from Win32_Printer”)
Set colItems = objWMIService.ExecQuery(“Select * from Win32_ComputerSystem”,,48)
Set WshShell = WScript.CreateObject(“WScript.Shell”)
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
filOutput = strUserProfile & “\text.txt”
filOutput2 = strUserProfile & “\text2.txt”

‘ Creates a text file with the listing of all network printers for the logged in user.
Set objOutputFile = objFSO.OpenTextFile (filOutput, ForAppending, True)
Set objOutputFile2 = objFSO.OpenTextFile (filOutput2, ForAppending, True)
For Each objPrinter in colInstalledPrinters
strTest = Left(objPrinter.Name, 2)
If strTest = “\\” Then
If objPrinter.Name = “\\Gestetner09\P9CORMFP” then
‘MsgBox “AQUESTA NO” & objPrinter.Name
elseif objPrinter.Name = “\\Gestetner09\P9CORMFPFACT” then
‘MsgBox “AQUESTA NO” & objPrinter.Name
else
‘MsgBox objPrinter.Name
objOutputFile.WriteLine(objPrinter.Name)
WshNetwork.RemovePrinterConnection objPrinter.Name
End If

If objPrinter.Default = True Then

aqui = objPrinter.Name
objOutputFile2.WriteLine(objPrinter.Name)
‘MsgBox aqui
‘MsgBox objPrinter.Name & “DEFAULT”

End If

End If
Next
objOutputFile.Close
‘MsgBox “Backup Echo ‘” & filOutput & “‘.”, 64, “Script Complete”

‘ Opens the text file matching the logged in user and reconnects to the printers listed.
Set objTextFile = objFSO.OpenTextFile (filOutput, ForReading)

‘Set objTextFile2 = objFSO.OpenTextFile (filOutput2, ForReading)
‘ Do Until objTextFile2.AtEndOfStream
‘ strPrinter = objTextFile2.Readline
‘ strTest = Left(strPrinter2, 2)
‘Loop

Do Until objTextFile.AtEndOfStream
strPrinter = objTextFile.Readline
strTest = Left(strPrinter, 2)

‘ If strTest = “\\” Then
‘MsgBox strPrinter & ” ” & strPrinter2
WshNetwork.AddWindowsPrinterConnection strPrinter
if strPrinter = aqui Then

‘WshNetwork.SetDefaultPrinter strPrinter2
WshNetwork.SetDefaultPrinter aqui
End If
‘ End If

Loop

‘MsgBox “Impresoras Mapeadas”, 64, “Script Complete”

objTextFile.Close

‘ MsgBox “Printers have been mapped.” & vbCRLF & varDelText & vbCRLF & vbCRLF & “Impresoras Mapeadas”, 64, “Script Complete”
‘strComputer = “.”
‘Set objWMIService = GetObject(“winmgmts:” _
‘ & “{impersonationLevel=impersonate}!\\” _
‘ & strComputer & “\root\cimv2″)
‘Set colInstalledPrinters = objWMIService.ExecQuery _
‘ (“Select * from Win32_PrinterConfiguration “)
‘For Each objPrinter In colInstalledPrinters
‘ objPrinter.Duplex = False

‘MsgBox objPrinter.Duplex
‘Next
‘MsgBox “Finalizado. Impresora por defecto ” & aqui
Wscript.Quit

Aquí para descargarlo

Categories: Sin categoría, Windows Tags:

Agregar disco en Linux Fdisk y mkfs

Martes, 13 de julio de 2010 Enric Solsona Sin comentarios

Pasos para instalar nuestro nuevo disco duro en nuestro linux;

Añadimos  físicamente el nuevo disco duro en nuestra máquina.

Listar las particiones de nuestros discos para poder identificar nuestro nuevo disco duro:

# fdisk -l

Nos saldrá una entrada nueva con el mensaje: El disco x no contiene una tabla de particiones válida

Voy a exponer mi caso concreto, vosotros tendréis que adaptarlo a vuestro caso concreto:

En mi caso, he añadido un disco duro de VmWare de 8GB , la cola de salida del comando anterior me muestra:

Disco /dev/sdc: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000El disco /dev/sdc no contiene una tabla de particiones válida

Tomamos nota de /dev/sdc

Si fuera un disco IDE seria HDA en vez de SDC

Si queremos particionarlo (en mi caso he creado una sola partición):

# fdisk/dev/sdc

Orden (m para obtener ayuda): m
Orden Acción
a Conmuta el indicador de iniciable
b Modifica la etiqueta de disco bsd
c Conmuta el indicador de compatibilidad con DOS
d Suprime una partición
l Lista los tipos de particiones conocidos
m Imprime este menú
n Añade una nueva partición
o Crea una nueva tabla de particiones DOS vacía
p Imprime la tabla de particiones
q Sale sin guardar los cambios
s Crea una nueva etiqueta de disco Sun
t Cambia el identificador de sistema de una partición
u Cambia las unidades de visualización/entrada
v Verifica la tabla de particiones
w Escribe la tabla en el disco y sale
x Funciones adicionales (sólo para usuarios avanzados)

Al salir darle a “w

Ahora formatearemos la partición creada:

# mkfs -t ext3 /dev/sdc

Creamos directorio de montaje:

# mkdir -p /media/hdd2

Editaremos fstab

# vim /etc/fstab

Añadiremos:

/dev/sdc /media/hdd2 ext3 defaults 0 0

(Nota: podemos cambiar defaults por otras opciones de montaje, como pot ejemplo user, más adelante escribiré sobre fstab)

Montamos:

# mount -a

Ya tenemos el nuevo dispositivo

df -h

Categories: Debian, Fedora, Linux, Sin categoría, Software, VmWare Tags:

Default Password por device

Martes, 25 de mayo de 2010 Enric Solsona Sin comentarios

De gran utilidad en mas de una ocasión:

Default PasswordLink

Categories: Sin categoría, Software Tags:

google shell

Miércoles, 5 de mayo de 2010 Enric Solsona Sin comentarios

Mirando por la red me he encontrado con una versión no oficial de Google en formato shell. La verdad es que es mas que sorprendente..

Google Shell

Link aqui

Categories: Linux, Sin categoría Tags:

Debian + hardinfo + Fibonacci

Jueves, 29 de abril de 2010 Enric Solsona Sin comentarios

Hace unos días que estoy preparando la certificación LPIC-1. Cosas de la vida :)
Mirando documentación de la certificació estuve probando unos comandos del primer apartado. Uno de ellos es hardinfo (info) que te hace un “system profiler y benchmark”.

apt-get install hardinfo

En el apartado del benchmark hace (entre otros puntos) un calculo que me sorprendió bastante. Calcula el numero 42 de la secuencia de fibonacci (que es el numero 267914296)

Fibonacci

La secuencia de fibonacci es simple a la vez que muy interesante por su representación en la naturaleza. La sucesión inicia con 0 y 1, y a partir de ahí cada elemento es la suma de los dos anteriores.

Hasta aquí todo “normal” si no fuera por la parte “natural” de dicha sucesión.

En un blog (muy parecido visualmente a este, y para no repetirme) explican muy bien dicha similitud, y por esto copio un fragmento haciendo gran referencia al mismo (http://crislosi.wordpress.com/2007/03/24/la-sucesion-de-fibonacci-y-la-naturaleza/)

El problema de los conejos:

Una pareja de conejos tarda un mes en alcanzar la edad fértil,
a partir de ese momento cada vez engendra una pareja de conejos, que a su vez,
tras ser fértiles engendrarán cada mes una pareja de conejos.
¿Cuántos conejos habrá al cabo de un determinado número
de meses?.”Fibonacci

Como podéis ver en el gráfico, el número de parejas a lo largo de los meses coincide con los términos de la sucesión.La sucesión de Fibonacci En Hojas, Plantas, Flores…Las ramas y las hojas de las
plantas se distribuyen buscando siempre recibir el máximo de luz para
cada una de ellas. Por eso ninguna hoja nace justo en la vertical de la anterior.
La distribución de las hojas alrededor del tallo de las plantas se produce
siguiendo secuencias basadas exclusivamente en estos números.El número de espirales en numerosas flores y frutos también se
ajusta a parejas consecutivas de términos de esta sucesión: los
girasoles tienen 55 espirales en un sentido y 89 en el otro, o bien 89 y 144.Las margaritas presentan las semillas en forma de 21 y 34 espirales.

Y cualquier variedad de piña presenta siempre un número de espirales
que coincide con dos términos de la sucesión de los conejos de
Fibonacci, 8 y 13; o 5 y 8.

Hablando un poquito del tema con mi professora de mates (por cierto, saludos Mercedes!) me enseño un vídeo, para mi realmente espectacular, donde se muestra parte de esta relación numerica-natural

Mas información en Wiki
Mas información en crislosi

Para que luego digan que las mates no valen para nada.. :P

Parece que el mundo vegetal tenga programado en sus códigos genéticos
del crecimiento los términos de la sucesión de Fibonacci.

Categories: Debian, Linux, Sin categoría, Software Tags:

lo llaman el mejor trabajo del mundo…

Viernes, 8 de enero de 2010 Enric Solsona Sin comentarios

Categories: Sin categoría Tags: