Mes: julio 2018

Bienvenidos a la Feria de Santiaguito (Odio mi Pobreza)

Antes de empezar, voy a abrir mi paraguas por que seguramente me van a llover mentadas de madre, y pues son gajes del oficio, pero los invito a leer mi argumento y si lo refutan, con gusto voy y la chingo.

En el reglamento de movilidad reza de manera íntegra en su página 2:

“Que el Secretario de Movilidad podrá tomar medidas para salvaguardar las condiciones que motivaron el otorgamiento de las concesiones, evitar se cause un perjuicio o riesgo para el servicio o el usuario, e incluso para preservar la movilidad del lugar en que se presta el mismo, incluyendo la cancelación u otorgamiento, en términos de ley.
Que las concesiones, permisos y autorizaciones del transporte público y sus servicios conexos son de interés público,por ende, se hace necesario continuar y concluir la situación en que se encuentran diversos prestadores del servicio, quienes, por diversas causas, no han finalizado sus trámites dentro del marco legal que los obliga a ser competentes y eficaces en su actividad.”

En el mismo reglamento podemos encontrar las responsabilidades respecto a los Seguros de Viajero (usuarios), en los artículos 24 sección VII, 25 sección XVII y 26 sección I; y aclaro, no es nada nuevo puesto que en este otro reglamento (observe usted la fecha) en el articulo 54 y 55 se aborda de igual manera el tema del seguro a usuarios.

Pero miren que no es berrinche, por que si volteamos a ver quienes son los pendejos tontos podemos ver la gaceta del 20 de marzo, sí esa por la que se pararon de pestañas los concesionarios y transportistas; y esta otra gaceta del 14 de Abril del 2014, observamos que los pendejos tontos somos los usuarios, por no exigir que se cumpla lo estipulado por la ley con el afán de salvaguardar la integridad de todos: operadores y usuarios.

En otro orden de ideas, les pregunto: ¿alguien aquí es corredor de seguros?, bueno si alguien lo es pendejeeme corríjame si me equivoco, pero en el caso de un accidente en el transporte público una cosa básica que se averigua, es si la unidad se operaba en condiciones normales y dentro de la norma, una de ellas el sobrecupo, si alguien a pedido uber se habrán dado cuenta que la mayoría dice máximo 4 personas, la razón es simple así fué diseñado el auto y eso es lo que cubre el seguro, para fácil un auto compacto con 8 personas arriba no aplica, lo normal son 5, 2 adelante y 3 atrás.

Y si ya llegaron hasta acá leyendo se preguntara usted amable lector ¿Que chingados tiene que ver con el título?, permítame a usted platicarle mi historia de hoy.

Yo soy pobre, tengo que usar el transporte público en la ruta Tenango-Santiaguito-Rayón, normalmente en taxi, por que aparte soy gordo y en las cajitas (Vans) no me acomodo.

Hoy de regreso realicé escala en Santiaguito, y para completar la ruta a Tenango abordé un taxi de la base “Galicia” (que al día de hoy, no me he topado con uno sólo que hable gallego), acompañado de mis 2 acreedoras (mis hijas pues) y aquí viene mi pecado y tal vez el de muchos mexicanos: la maldita pobreza. Esta última me hizo pensar que mis hijas ocupan un solo espacio de viajero (en realidad así es, la pobreza a ella las hizo flacas y a mi gordo), por lo que nos subimos en la parte de atrás, donde ya había una chica con su bebé en brazos (por favor si lees esto, corrobora la historia) entonces, antes de arrancar ya habíamos 4 católicos, un teísta agnóstico (ósea yo) y el amable/gentil operador, avanzado un tercio del viaje subió una persona más, y así llegamos nuestro destino, haga usted sus cuentas de cuantas personas en total íbamos abordo.

Me dispuse a pagar al amable/gentil operador, que tampoco hablaba gallego a Dios gracias, y aconteció lo siguiente:

Operador: Le comento que mayores de 5 años pagan pasaje
Yo: Claro, sólo por favor muéstrame tu seguro de viajero
Operador:¿Seguro de Viajero?, que es eso
Yo (con cara de “no mamar”): Sí, ósea si nos pasa algo como justificamos que pagué
Operador:No pues no traigo, pero por esta vez le voy a cobrar 2
Yo(molesto y ya descendiendo de la unidad): No cobrame 3, ¿que número de unidad tienes?
Operador: No así déjalo, pero para la próxima ya sabe
Yo: Si desde un inicio me dices que me vas a cobrar 3, ocupo 3 lugares y te pago 3, no hasta que voy a bajar

Entonces, no quiero que me den la razón, pero si hubiera pagado los 3 y hubiera acontecido un accidente, solo 5 personas hubiéramos sido cubiertas por el seguro, eso incluía forzosamente al operador (así lo establece el seguro) y 4 más, el resto hubieran sido volados.

Así que si vienen a la feria de Santiaguito, bienvenidos, pero traigansen (typo adrede) su pasaje para cualquier acompañante mayor de 5 años, ya no cuenta en piernas y de cualquier modo exijan  un cupo para 4 personas.

Aunque esto me lleva a otra lógica, la vuelta como local especial te la cobran a 45, es decir, como si fueran 5 personas, cuando el cupo es de 4, obviamente sin contar al chofer.

¿Que demonios falló ahí?, en todo caso tanto peca el que mata a la vaca, como el que le agarra la pata.

P.D. La foto cortesía de mi esposa, Te Amo Mucho.

Alertas en un Bot de Telegram con Powershell

Una de las necesidades de un Sysadmin, es  informarse en tiempo y forma de todos los errores y warnings de los servicios de misión crítica, ya que ellos implican tiempos muertos, en el peor de los casos, pero sobre todo de riesgos que se pueden remediar a través de acciones preventivas.

El visor de eventos de Windows Guindos tiene mucha información al respecto y en muchos de los casos nos da información clave para solventar un problema.

De ahí surgió la idea de enviar los eventos relevantes a través de un medio que me permitiera tenerlos ipso facto, intente primero por e-mail, pero no soy fan ni de enviar ni de recibir correos, además de que la cuenta de correo institucional, no la toco ni de chiste fuera de horas de trabajo y no quería llenarla de spam, para luego tener que depurarla.

Así que tenía instalado el Telegram y un Bot personal, que sabía que podía ocupar para eso, pero no tenía ni idea de como hacerlo, así que me puse a investigar y el resultado es el siguiente:

PRERREQUISITOS
  • Tener un Bot de telegram, sino saben como aquí está documentado
  • Tener la API Key de ese Bot
  • Tener el ChatID de un chat de tu cuenta con tu Bot, ese lo pueden obtener con un Bot que hay en Telegram, búsquenlo se llama @my_id_bot
  • Paciencia y un entorno de pruebas donde no puedas hacer mal a nadie.

A continuación el script, esta completamente documentado de manera clara, por lo que creo no debería haber dudas y si las hay, los leo en comentarios o al e-mail.

#Se declaran las variables
#Obtenemos el pool de eventos, seleccionamos el log, el origen y el ID del evento, luego se selecciona el primero (el último, más reciente)
$event = Get-EventLog -LogName System -Source "Microsoft-Windows-Directory-Services-SAM" | where {$_.eventID -eq 12294} | Select-Object -First 1
#Asiganos el valor del BotKey que nos da BotFather
$BotKey = "TUBOTKEY"
#Seleccionamos los parámetros de formato regional México
$culture = New-Object system.globalization.cultureinfo("es-MX")
#Extraemos la fecha del evento
$Fecha=Get-date $event.TimeGenerated -Format ($culture.DateTimeFormat.LongDatePattern)
#Extraemos la hora del evento
$Hora =Get-date $event.TimeGenerated -Format ($culture.DateTimeFormat.LongTimePattern)
##Extraemos el texto del evento
$mensaje = $event.Message
#Conectamos a la API de telegram con la key asignada
$GetChatID = Invoke-WebRequest -Uri "https://api.telegram.org/bot$BotKey/getUpdates"
#Se crea la función que manda el mensaje a telegram, recibiendo de parametros la BotKey, ChatID (como Array por si fueran varios) y el mensaje
function Send-TeleMessage([string] $BotKey , [array] $ChatIDs , [string] $Message)
{#Se cre la variable con la URL de la API que ejecuta el envío del mensaje
    $sendMsgLink = "https://api.telegram.org/bot$BotKey/sendMessage"
    #Se crea al bucle para cada elemento del Array
    foreach ($ID in $ChatIDs)
    {        
        try
        {#Se ejecuta el POST a la URL            
            $ExecuteInvokeWeb = Invoke-WebRequest -Uri "$sendMsgLink" -Method Post -ContentType "application/json;charset=utf-8" -Body (ConvertTo-Json -Compress -InputObject @{chat_id=$ID; text="$Message"}) -ErrorAction SilentlyContinue
            #Se recibe el resultado del POST
            $Status = (ConvertFrom-Json -InputObject $ExecuteInvokeWeb.Content)
            #Si el resultado, es ok, envia un mensaje satisfactorio, sino hace un catch del error y lo muestra.  
            if($Status.ok){Write-Host "El mensaje se envío correctamente al Chat ID : $ID (Type : $($Status.result.chat.type))" -ForegroundColor Green}
        }
        catch [Exception]
        {
            $exception = $_.Exception.ToString().Split(".")[2]
            Write-Host "Falló el envío del mensaje al Chat ID : $ID ($exception)" -ForegroundColor Red
        }
    }
}
#Se ejecuta la función con los parametros necesarios
Send-TeleMessage -BotKey $BotKey -ChatIDs "TUCHATID" -Message "$($Fecha) $($Hora) $($mensaje)"

Después de esto, hay que crear una tarea programada en windows, que ejecute este script cada que se genere un registro del evento, evidentemente el ID del evento debe coincidir para que informa de manera asertiva, el resto de las adecuaciones a sus necesidades deberían ser sencillas y el resultado es algo como esto:

Salu2, Emmanuel.