Acceso denegado en Windows XP


Si tenemos acceso denegado al acceder a ciertos archivos, especialmente luego de una reinstalación, seguimos los siguientes pasos:

1) Nos logueamos con una cuenta con permisos de administrador.

2) Vamos al Panel de Control –> Apariencia y Temas –> Opciones de Carpeta –> Ver y desmarcamos “Utilizar uso compartido simple de archivos (recomendado)”

3) Luego hacemos click con el boton derecho del mouse sobre la carpeta con problemas de permisos –> Propiedades –> Seguridad

Seguramente aparezca un mensaje advirtiendo de los problemas de seguridad de dicha carpeta.

4) Allí mismo vamos a  Avanzadas –> Propietario –> Nombre y seleccionamos nuestro nombre de usuario. A continuación tildamos “Reemplazar propietario en subcontenedores y objetos”.

5) Aplicamos todo y aceptamos todo.

Listo

 

scripts: qmail usage statistics


Aquí varios scripts utilizados para analizar el uso del servidor de correo qmail. Se pueden utilizar independientemente o el primero llamará al resto:

[root@test scripts]# cat chkStatus.sh 
#!/bin/bash
echo ""
echo ""
echo "Consultas de estado. Servidor Qmail"
echo "==================================="
echo ""
echo "TCP Server Hits:"
/root/scripts/chkTcpServerHits.sh $1|cut -c12-50
echo "RBL Hits:"
/root/scripts/chkRblHits.sh $1|cut -c12-50
echo "SPAM Hits:"
/root/scripts/chkSpamHits.sh $1|cut -c13-50
echo "Spam Deleted: "
/root/scripts/chkSpamHitsDeleted.sh $1|cut -c13-50
echo "Virus Hits:"
/root/scripts/chkVirusHits.sh $1|cut -c13-50
echo "Qtrap Hits:"
/root/scripts/chkQtrapHits.sh $1|cut -c12-50
echo "Failure:"
/root/scripts/chkFailure.sh $1|cut -c12-50
echo "Pop3 Hits:"
/root/scripts/chkPopHits.sh $1|cut -c12-50
echo "Send Local:"
/root/scripts/chkSendLocal.sh $1|cut -c12-50
echo "Send Remote:"
/root/scripts/chkSendRemote.sh $1|cut -c12-50
echo ""
echo "Estado de las colas: "
qmailctl queue
echo ""
echo "Uptime: "
uptime
echo ""

[root@test scripts]# cat chkTcpServerHits.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de tcpserver: pid de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco "rblsmtpd" en los logs para determinar la cantidad de lineas que lo contienen
cat /var/log/qmail/qmail-smtpd/*|grep "tcpserver: pid"| \
# convert Time Atomic International timestamp to normal human readable format <-- motherfucker yeahhh!!!
/usr/local/bin/tai64nlocal | \
# busco el human readable timestamp para todas las instancias de la fecha
grep $fecha | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkRblHits.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de rblsmtpd de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco "rblsmtpd" en los logs para determinar la cantidad de lineas que lo contienen
cat /var/log/qmail/qmail-smtpd/*|grep "rblsmtpd:"| \
# convert Time Atomic International timestamp to normal human readable format <-- motherfucker yeahhh!!!
/usr/local/bin/tai64nlocal | \
# busco el human readable timestamp para todas las instancias de la fecha
grep $fecha | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkSpamHits.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de SPAM de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%c --date=$1|cut -c5-15`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco para determinar la cantidad de lineas que lo contienen
cat /var/spool/qscan/qmail-queue.log|grep "smells like SPAM"|cut -c6-16| \
# busco la fecha
grep "$fecha" | \
# cuento numero de lineas
wc -l
# end
exit

[root@einstein scripts]# cat chkSpamHitsDeleted.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de SPAM eliminado de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%c --date=$1|cut -c5-15`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco para determinar la cantidad de lineas que lo contienen
cat /var/spool/qscan/qmail-queue.log|grep "deleting message..."|cut -c6-16| \
# busco la fecha
grep "$fecha" | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkVirusHits.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de virus de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%c --date=$1|cut -c5-15`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco para determinar la cantidad de lineas que lo contienen
cat /var/spool/qscan/qmail-queue.log|grep "there be a virus"|cut -c6-16| \
# busco la fecha
grep "$fecha" | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkQtrapHits.sh 
#!/bin/bash
# 20070418-hvivani-Obtiene total dets del qtrap  de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
fechaQtrap=`date +%m/%d/%y --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco en los logs para determinar la cantidad de lineas que lo contienen
cat /home/vpopmail/qtrap/logs/qtrap.log|grep "$fechaQtrap"|wc -l
# end
exit

[root@test scripts]# cat chkFailure.sh 
#!/bin/bash
# 20070418-hvivani-Obtiene total de failure de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco en los logs para determinar la cantidad de lineas que lo contienen
cat /var/log/qmail/qmail-send/*|grep "failure: "| \
# convert Time Atomic International timestamp to normal human readable format <-- motherfucker yeahhh!!!
/usr/local/bin/tai64nlocal | \
# busco el human readable timestamp para todas las instancias de la fecha
grep $fecha | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkPopHits.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de tcpserver: pid de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco "rblsmtpd" en los logs para determinar la cantidad de lineas que lo contienen
cat /var/log/qmail/qmail-pop3d/*|grep "tcpserver: pid"| \
# convert Time Atomic International timestamp to normal human readable format <-- motherfucker yeahhh!!!
/usr/local/bin/tai64nlocal | \
# busco el human readable timestamp para todas las instancias de la fecha
grep $fecha | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkSendLocal.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de entregas locales de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco "rblsmtpd" en los logs para determinar la cantidad de lineas que lo contienen
cat /var/log/qmail/qmail-send/*|grep "to local "| \
# convert Time Atomic International timestamp to normal human readable format <-- motherfucker yeahhh!!!
/usr/local/bin/tai64nlocal | \
# busco el human readable timestamp para todas las instancias de la fecha
grep $fecha | \
# cuento numero de lineas
wc -l
# end
exit

[root@test scripts]# cat chkSendRemote.sh 
#!/bin/bash
# 20070417-hvivani-Obtiene total de entregas remotas de los logs de qmail para una fecha pasada por linea de comandos.
fecha=`date +%Y-%m-%d --date=$1`
# imprimo fecha. Puede cambiarse para otros dias
echo $fecha | \
# coloco una coma
awk '{printf $0","}' \
# busco "rblsmtpd" en los logs para determinar la cantidad de lineas que lo contienen
cat /var/log/qmail/qmail-send/*|grep  "to remote "| \
# convert Time Atomic International timestamp to normal human readable format <-- motherfucker yeahhh!!!
/usr/local/bin/tai64nlocal | \
# busco el human readable timestamp para todas las instancias de la fecha
grep $fecha | \
# cuento numero de lineas
wc -l
# end
exit

Control de Potencia con PC


Siempre quise poder controlar cualquier dispositivo a través de una PC.
La manera mas sencilla es a través del puerto paralelo:Puerto Paralelo:

Los pines 2 al 9 son de salida.
los pines 10 al 13 son de entrada.

También denominado puerto de impresora ó LPT éste puerto dispone de tres
canales de comunicaciones cuyos pines envían señales desde y hacia la
computadora todos al mismo tiempo, de ahí el término paralelo.
Inicialmente la plataforma PC permite disponer de hasta un máximo de
tres puertos paralelos, usualmente denominados LPT1, LPT2 y LPT3.
Exceptuando las nuevas computadoras iMac de la firma Apple Computers
todas las computadoras personales disponen al menos de un puerto paralelo
al cual generalmente se lo llama LPT1. A comienzos de la computación
personal (cuando reinaban las XT) el puerto paralelo venía incluido
en la plaqueta controladora de vídeo. Luego, con la llegada de las
controladoras VGA el puerto comenzó a ser incorporado en las
controladoras de unidades de disco (mas conocidas como multifunción).
Pero con la quinta generación en PC (cuando apareció el Pentium de Intel)
cambió todo nuevamente quedando la placa multifunción incorporada a la
placa base del sistema o Motherboard.

Los terminales del puerto paralelo sólo pueden manejar señales digitales,
cuyos valores de tensión representan estados altos o bajos. Cuando no hay
tensión en el pin se asume un estado lógico bajo mientras que cuando hay
una tensión cercana a los 5v el estado asumido es el alto. Cada pin puede
drenar un máximo de 50mA, insuficiente para manejar cualquier tipo de
carga mediana o pesada. Pero es suficiente para encender un diodo LED.

Para controlar el estado de los pines del puerto paralelo basta con
escribir un número entero positivo de 8 bits en la dirección del mismo.
El pin de datos 0, que físicamente está conectado al terminal 2 del
contector, asume el peso 1. Este es el bit de menos peso en la palabra
de datos de dicho puerto. Siguiendo la tabla de abajo observará que es
muy simple manejar puntualmente cada uno de los pines.

 

Por ejemplo, si queremos hacer que los terminales 4, 6, 8 y 9 del
puerto paralelo se enciendan quedando los otros apagados debemos sumar
los valores correspondientes a esos pines y enviar dicho resultado a
la dirección del puerto. En este ejemplo el dato a enviar sería:
4 + 16 + 64 + 128 lo que equivale a 212

Para que todos los pines se enciendan tendremos que enviar el valor 255,
mientras que para que todos se apaguen deberemos enviar el valor 0.

La dirección del puerto LPT1 usualmente es 378, la del puerto LPT2 suele
ser 278 y la del puerto LPT3 casi siempre es 3BC. Aunque esto depende de
como esté configurado su hardware. Una forma de determinar la dirección
del puerto es presionando la tecla Pause al comienzo de la carga del
sistema operativo. Verá una tabla donde el BIOS reporta los parámetros
básicos del equipo, incluyendo datos sobre los puertos.

Control de Potencia con Triacs:

Este circuito permite manejar cargas que funcionen con 220V de la red
eléctrica y que consuman no mas de 1500W. Las posibilidades son:
Lámparas, cafeteras, veladores, electrodomésticos, accesorios, etc.
Televisores y equipos de sonido también pueden ser conectados, pero
seria inútil ya que éstos equipos requieren ser encendidos por “soft”
presionando la tecla Power. Entonces, al darle alimentación el equipo
quedará a la espera de ser encendido.

circuitotriacs

La señal digital proveniente del puerto es limitada en corriente y
aplicada al cátodo del LED interno del optoacoplador. El ánodo de ese
diodo es cableado a MASA digital (pin 25 del puerto paralelo). El
brillo producido por el LED acciona el Triac del opto, que, a su vez,
acciona el triac de potencia. La red RC conectada en paralelo con el
triac de potencia limita la velocidad de evolución de la tensión ante
cargas inductivas.

El optoacoplador incluye en su interior un circuito de detección de
cruce por cero (denominado ZCC). Este sistema hace que la conmutación
sea posible sólo cuando el semiciclo de la corriente alterna se
encuentra en 0V.

El optoacoplador puede ser un MOC3040 ó un MOC3041. El triac debe ser
capaz de manejar 8A sobre 400V. Es indispensable montar el Triac en
un buen disipador térmico.

El circuito mostrado arriba corresponde a un solo canal. Para montar
un sistema de mas canales repetir este tantas veces como canales
necesarios. Recuerde conectar sólo un circuito a cada pin del puerto
paralelo.

Control de Portencia Con Relés:

El relé es un dispositivo mecánico capaz de comandar cargas pesadas
a partir de una pequeña tensión aplicada a su bobina. Básicamente la
bobina contenida en su interior genera un campo magnético que acciona
el interruptor mecánico. Ese interruptor es el encargado de manejar
la potencia en sí, quedando al circuito electrónico la labor de
“mover” la bobina. Permite así aislar mecánicamente la sección de
potencia de la de control. Pero para accionar la bobina la corriente
y tensión presente en un puerto paralelo no es suficiente.

circuitoreles

Este circuito es extremadamente simple y permite manejar ocho relés
con bobinas de 12V a partir de los pines de un puerto paralelo.
Podemos decir que TODOS los componentes de protección y limitación
de corriente, además de los transistores de potencia están incluidos
dentro del circuito integrado.

Si “miramos con la lupa” podremos ver en el interior del chip
ULN2803 ocho esquemas como el de abajo, uno para cada uno de los
canales.

canal

Es normal que la cápsula de este circuito integrado esté tibia con
respecto a la temperatura ambiente. Se debe, como era de suponerse,
a que la corriente requerida por cada relé pasa por sus “entrañas”
y, como sabemos, el manejo de corriente genera calor.

Con las llaves de cada relé el usuario puede manejar lo que le plazca,
siempre que no exceda las especificaciones de tensión y corriente
para la cual están diseñadas. De requerir mayores potencias se puede
emplear el relé para accionar un contactor industrial ú otro relé de
mayor corriente. Es una buena práctica colocar en cada relé un fusible
de protección. Siempre es mas simple cambiar un fusible que desoldar
un relé o reparar pistas de un circuito impreso.

En esta plaqueta he usado los 8 puertos de salida directamente con relés y los 4 puertos de entrada como interruptores, es decir, un circuito normal abierto entre el pin de entrada y masa.
Esta es la plaqueta terminada:
Nov2801

Estos puentes de alambre que se ven son errores míos en el diseño del pcb.

 Aquí pueden descargar los fuentes de control en Visual Basic 6.

runtime foxpro windows 2.6


Al intentar ejecutar un archivo de foxpro 2.6 para windows, podemos obtener el siguiente mensaje de error: “Cannot locate Fox Pro support library”.

Sin embargo, para poder ejecutar los compilados de foxprow 2.6, no es necesario instalar ningún runtime especial, solo debemos copiar los siguientes archivos:

- foxw2600.esl en el mismo directorio que el ejecutable
- foxfont.fon en el mismo directorio del ejecutable

 

 

Dejar de Fumar


Fumar es un placer… dicen…, perdón, decimos….

Lo que pasa es que deja de ser un placer cuando ya es un habito…,

Deja de ser placer cuando incrementamos la cantidad de cigarrillos en el día…

Deja de ser un placer cuando sentimos culpa por no poder dejarlo…

Deja de ser un placer cuando nos damos cuenta de que el cigarrillo nos controla….

Deja de ser un placer cuando nos engañamos a nosotros mismos con excusas para seguir fumando…

Yo dejé de fumar a los 30 por una sola razón:

No quería que mi hija que estaba por nacer me viera con el cigarrillo en la mano desde chica.

No quería que me preguntara “papá, por que fumas ?”

y sobre todo, no quería que ella creciera con la idea de que “fumar es algo normal de los grandes porque papá fuma.”

Coincido: es dificil dejar de fumar.

Pero se puede.

Fuí bajando la cantidad de cigarrillos por día, anotando en un papelito que llevaba en el bolsillo cuantos había fumado y a que hora.

Luego comencé a limitar la cantidad de cigarrillos por día, desde los dos atados diarios, bajé a un atado durante unos días, luego 15, luego 10, luego 5, luego 2… hasta que me animé a estar 1 día sin fumar.

Pero no fué facil… y fallé. El intento con este método lo hice 2 veces y recién a la tercera pude lograrlo.

Por supuesto que el ingrediente fundamental es tomar la decisión de dejar el cigarrillo. Pero también hoy en día hay mucha ayuda para lograrlo, como por ejemplo el odranal, que es una droga utilizada para inhibir la adicción.

Por sobre todo: No nos engañemos a nosotros mismos. Yo recuerdo que me ponía una y mil excusas para fumar un cigarrillo o para no dejarlo.

Los primero días les va a parecer que les falta un amigo, una compañia… falsa compañia diría yo.

Como resultado puedo decirles que la vida de un no fumador es una vida nueva:

– Redescubrir los sabores y lo olores.

– Sentirse bien fisicamente

El fumador no lo entiende hasta que no lo deja, porque el cigarrillo no se lo permite.

Se puede.

script para verificar conexión


Este script verifica la conexión con un determinado servidor. Puede ser utilizado con un router/modem y, eventualmente reiniciarlo a través de un comando expect / spawn.

[root@test scripts]# cat chkconn 
dd=`date +%d`
mm=`date +%m`
YY=`date +%Y`
HH=`date +%H`
MM=`date +%M`
d=0
u=0
HOSTS="www.google.com newton 10.0.1.4 fabrica.dyndns.org"
for HOST in $HOSTS
do
   ping $HOST -c 1|grep " 0% packet loss" > /dev/null
   if [ $? = 0 ] 
   then
      echo "$YY$mm$dd$HH$MM $HOST está levantado"
      let "u=u+1" 
   else
      echo "$YY$mm$dd$HH$MM $HOST no es accesible" >> /var/log/chkconn.log
      let "d=d+1"
   fi
done
echo
#echo "$u sistemas levantados"
#echo "$d sistemas inaccesibles"
#### Si hay mas de tres servidores inaccesibles, reinicia el modem ADSL
#if [[ $d > 3 ]]
#then
#   echo "$YY$mm$dd$HH$MM - Hay $d sistemas off-line" >> /var/log/chkconn.log
#   /usr/bin/expect /root/scripts/reboot.exp
#else
#   echo "Ok."
#fi

 

[root@test scripts]# cat reboot.exp 
spawn telnet 10.0.1.4

expect "NetDSL>"
send "reboot\r"

expect "r"

Control de Acceso del Personal económico


Corría el año 2003 y nos pidieron un sistema de control de acceso. Estas son las ideas que surgen cuando no hay presupuesto:

2013-09-27 18.13.51

2013-09-27 18.16.02Tomamos una vieja pistola lectora de código de barras, la pusimos dentro de una caja con una ranura para pasar la tarjeta y reemplazamos el botón por un sensor de presión.

reloj

Las tarjetas poseen un Code 39 con el legajo del empleado y el programa en la pc se ocupa de guardar la fichada en la base de datos. En esa época casi ningún sistema comercial grababa directamente en una base de datos remota.

Este sistema está funcionando desde el 25/11/2003.

Gracias Carlitos B. por tu ayuda con el sensor.