General

winrm un ssh per windows i des de linux

WinRM és com un “ssh” per Windows 2008 i superior (com a mínim, no he vist si també inferiors)

Existeixen varis “ports” o “clients” o com vulgueu dir-li en GNU/Linux, un d’ells en python i molt senzill de fer funcionar, no permet tenir una shell interactiva però si executar comandes de CMD o PowerShell per fer les accions que vulguis

El codi font està a: https://github.com/diyan/pywinrm

Configuració client Linux
Instal·lar segons la web de github, requereix tenir python-pip instal·lat

apt-get install python-pip
pip install http://github.com/diyan/pywinrm/archive/master.zip

Configuració Windows
Iniciar CMD i executar les següents comandes:

winrm set winrm/config/service/auth @{Basic="true"}
winrm set winrm/config/service @{AllowUnencrypted="True"}

Exemple bàsic per executar un simple ipconfig

#!/usr/bin/python
import winrm
host='HostName'
user='Username'
passwd='Password'

s = winrm.Session('http://' + host + ':5985/wsman', auth=(user,passwd))
r = s.run_cmd('ipconfig', ['/all'])
print r.std_out

Ara toca scriptar i jugar;) a la pàgina de github hi trobareu més informació al respecte

General

Response.flush killing ASP pages

Aquesta setmana ha sigut molt dura, després d’hores i hores d’investigació, lectures, proves, errors, problemes, etc.

Teniem problemes amb una web que càrrega molt lent en Windows 2012 R2 quan en un Windows 2003 s’executava en qüestió de un segon, fent proves en altres versions de Windows amb un script com aquest:

<%
starttime = Now()
response.Write("Start: "&starttime&vbcrlf)
Server.ScriptTimeout = 1800000
volta = 0
do while not volta > 100000
volta = volta+1
Response.Write(". ")
Response.Flush()
loop
endtime = Now()
response.Write("
End: "&endtime&vbcrlf)
dif = DateDiff("s", starttime, endtime)
response.Write("
Diff: "&dif&" segons"&vbcrlf)
%>

L’execució d’aquest script és molt diferent en funció dels entorns provats:

W2003: *
W2008: ******
W2012: *********
(Cada * equival a 1 seg)
En canvi, si desactivem aquesta funció (Response.Flush()) l’execució de l’script passa a tardar 0 segons en una plataforma Windows 2012 R2 actual, sembla que el senyor Microsoft no vol que es fagi servir aquesta funció
General

ACS Ansible Manager

Des de fa dies que vaig treballant amb ansible, i cansat d’editar fitxers de configuracions, he fet un sistema molt senzill basat en base de dades per tenir un frontend per gestionar les configuracions dels equips, per replicar-ho és molt senzill.

  1. Crear una base de dades amb la base indicada
  2. Instal·lar crud-admin-generator
  3. Copiar l’script “inventory.py” del meu repositori github
  4. Introduir dades i a funcionar!

No, ara de veritiat, una mica més de detall ens anirà bé ;)

Tots els scripts i fitxers estan al repositori de github

Primer necessitem crear la base de dades en base al fitxer “acs_ansible_manager.sql”, després necessitarem tenir un servidor web amb PHP i seguir les instruccions per instal·lar el “CRUD Admin Generator” (versió modificada) i això ens generarà el frontend per poder guardar les variables.

I ara ja només ens queda copiar l’script “inventory.py” i funcionar!