Procmon en línea de comandos para linux

En un momento dado me ha hecho falta comprobar qué ficheros estaba abriendo un proceso en un momento dado. En Windows hubiera usado Procmon de Sysinternals [1] pero, ¿y en Linux? Tras buscar por internet me encontré [2] con strace [3]. Os dejo que leáis pero la respuesta rápida es esta:

strace -t -f -v -e trace=open,close,read,write,connect,accept  -p 2579 -o /usr/share/tomcat/logs/realtime.log

donde decimos que strace monitorice, las operaciones “open,close,read,write” sobre ficheros y “connect,accept” sobre conexiones, del proceso 2579 y todos sus hijos (-f) y que lo vuelque todo al fichero realtime.log

[1] https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx 
[2] https://superuser.com/questions/348738/continuously-monitor-files-opened-accessed-by-a-process 
[3] https://linux.die.net/man/1/strace

Usando 7zip para hacer una sencilla copia de seguridad

Si tienes instalado 7zip [1] puedes usarlo para hacerte una sencilla copia de seguridad. Este es un ejemplo de cómo hacerlo.

@echo off

:: URL: http://en.wikibooks.org/wiki/Windows_Programming/Programming_CMD
:: Variables

SET zip_path="C:\Program Files\7-Zip\7z.exe"
SET base_folder="C:\carpeta-de-origen\*.*"
SET out_folder=D:\carpeta-de-destino\
SET zip_name=copia-seguridad.zip

::echo %zip_path%

:: Programa
IF EXIST %out_folder% (
CLS
SET passw=
echo.
echo.Iniciamos el proceso de copia.
del %out_folder%%zip_name%
%zip_path% a -tzip -scsDOS -p%passw% %out_folder%%zip_name% -r %base_folder%
echo.Proceso finalizado.
set passw=
pause
) ELSE (
echo.ERROR: "No se encuentra la carpeta de destino, detenemos el proceso."
)
ECHO ON

[1] http://www.7-zip.org/

Actualizar la versión de PHP que usamos en Wamp

Aquellos que usamos Wamp, para desarrollar aplicaciones PHP en Windows, hay veces que nos vemos limitados a trabajar con las versiones que este nos instala (en mi caso estaba con Apache 2.4, PHP 5.4.12 y mysql 5.6). Desde hace tiempo vengo pensando en cambiar esta situación y hoy me he puesto a ello. Voy a mostraros cómo actualizar la versión de PHP en nuestro WAMP, pasando de la 5.4.12 a la 5.6.14. Os lo dejo en sencillos pasos:

  1. Descargar la nueva versión de PHP (en mi caso http://windows.php.net/downloads/releases/php-5.6.14-Win32-VC11-x64.zip)
  2. Descomprimirla en wamp/bin/php con el nombre de la versión (php5.6.14)
  3. Eliminar ficheros de la carpeta wamp/bin/apache/Apache2.4.4/bin que ya no usaremos por estar con PHP 5.6 en Apache 2.4: php5isapi.dll y php5ts.dll
  4. Copiamos a la carpeta wamp/bin/apache/Apache2.4.4/bin el fichero php5apache2_4.dll, que viene en el fichero descargado con la nueva versión de PHP (php-5.6.14-Win32-VC11-x64.zip)
  5. Movemos el fichero wamp/bin/apache/Apache2.4.4/bin/php.ini a wamp/bin/php/php5.6.14/phpForApache.ini
  6. Eliminamos la carpeta wamp/bin/php/php5.4.12 o la renombramos de modo que, ordenando el contenido de la carpeta wamp/bin/php/ alfabéticamente, esta quede después de la nueva php5.6.14.
  7. Editamos los ficheros wamp/wampmanager.conf, wamp/wampmanager.ini y wamp/bin/apache/apache2.4.9/conf/httpd.conf en los que sustituimos la cadena “5.4.12” (la versión actual de PHP) por “5.6.14” (la nueva).
  8. Editamos los ficheros php.ini (en la carpeta de php y en la bin de apache) para corregir las rutas de la carpeta de extensiones de php.

Tras estos pasos, si inicias Wamp y accedes a la página http://localhost/?phpinfo debieras ver que la versión de PHP es la nueva 5.6.14

Wamp server con PHP actualizado a 5.6.14
Wamp server con PHP actualizado a 5.6.14

Nota: debemos dejar dos ficheros php.ini, uno en la carpeta bin de php (para la ejecución de este desde la consola) y otro en el bin de apache (para cuando PHP se ejecuta dentro de Apache). El por qué lo puedes leer aquí.

Netbeans no encuentra Cordova al crear un proyecto “Cordova application”

Con la idea de probar Cordova me decido a instalarlo sobre Netbeans 8 como IDE. Según las indicaciones de Netbeans el proceso está chupado: instalas nodejs, instalas Git, instalas cordova [2], abres Netbeans y sigues el asistente …hasta la pantalla del error (que nadie esperaba):

Netbeans cannot found cordova or git on your PATH. Please, install cordova and git.

image

Se acabó lo que se daba. Tras emplear un rato, más largo de lo que me hubiera gustado, encontré la solución al leer este bug de Netbeans: “Bug 234870Cordova or Git not found on Windows”. A pesar de que el mensaje dice que no ha encontrado cordova o git lo que quiere decir es que no ha encontrado a Cordova y a Git (a los dos). Revisando qué tengo en el PATH veo que me falta la referencia a Git, con lo que al incluirla todo funciona como debiera.

Espero que esto le ayude a alguien.

Instalar WordPress 3.5 en Internet Information Services (IIS) sobre SQL Server 2008

Desde hace algún tiempo llevaba con la idea de intentar montar WordPress en IIS sobre SQL Server, aprovechando las mejoras que están haciendo los chicos de Microsoft para ejecutar PHP en su servidor web ( [1], [2] y [3]). Hoy lo he conseguido así que os cuento cómo hacerlo vosotros (mis pruebas fueron sobre un windows7 con IIS 7, SQL server 2008 y PHP 5.4.12RC1-Win32-VC9-x86).

Dando por sentado que tenemos instalado PHP en nuestro IIS, hay que instalar las extensiones de PHP para SQL Server. Tras descargar el fichero, descomprimirlo, llevar las librerías adecuadas a la carpeta ‘ext’ de nuestra instalación de PHP ya podemos conectarnos a SQL Server con PHP. ¿Que qué librerías son las adecuadas? Al descomprimir el fichero con los drivers encontraremos que los tenemos para php 5.3 y 5.4.Además, en cada una de ellas, los tenemos en su version “thread safe” ( busca “_ts” en nombre del archivo) y “non thread safe” ( busca “_nts” en nombre del archivo). En mi caso, como estoy trabajando con php 5.4.12 en Windows 7 utizaré “php_pdo_sqlsrv_54_ts.dll” y “php_sqlsrv_54_ts.dll“.

¿Cómo compruebo que los drivers están correctamente instalados?

Desde una consola de ms-dos ejecuta:

php.exe -m

que debe generate una lista con los módulos disponibles, en donde deben aparecen los que acabamos de instalar.

Lo siguiente es descargamos la última versión de WP desde la página oficial ( http://wordpress.org/ ), o su versión en español ( http://es.wordpress.org/ ), que hoy es la 3.5.1. Para poder conectarlo con SQL server, en lugar de mySQL, hacemos uso de WordPress Database Abstraction, a día de hoy en su versión 1.1.4.

Lo descargamos, descrompimimos y seguimos las instrucciones que nos proporciona el documento README.txt, que viene dentro del plugin:

1. Upload wp-db-abstraction.php and the wp-db-abstraction directory to wp-content/mu-plugins. 
This should be parallel to your regular plugins directory.  If the mu-plugins directory does not exist, you must create it.
2. Put the db.php file from inside the wp-db-abstraction.php directory to wp-content/db.php
3. Visit $your_wordpress_url/wp-content/mu-plugins/wp-db-abstraction/setup-config.php to generate your wp-config.php file
4. Install WordPress normally
5. Visit $your_wordpress_url/wp-content/mu-plugins/wp-db-abstraction/setup-config.php to generate your wp-config.php file

Lo importante es que, para ejecutar el instalador, en lugar de ir a

http://instalacion.de.wordpress/wp-admin/setup-config.php

vayamos a:

http://instalacion.de.wordpress/wp-content/mu-plugins/wp-db-abstraction/setup-config.php

ya que la primera dirección corresponde con el asistente para instalar sobre mySQL y el segundo es para hacerlo sobre SQLServer (lo que nosotros queremos). Ahora sólo nos queda seguir el asistente e instalar nuestro WP, a lo que debo añadir que, a la hora de seleccionar el tipo de base de datos, tuve que elegir “PDO_sqlsrv” porque con la otra opción, “SQL Server using MS PHP driver”, no instalaba correctamente (probadlo y me decís).

Escogiendo tipo de base de datos en la instalación de wordpress

si habéis seguido los pasos correctamente debiérais tener vustra instalación de WordPress corriendo en IIS  sobre SQL Server. Como nota final, y que me tuvo un rato largo resolverlo (por no buscar en Internet, orgulloso que es uno), si al acceder al blog no véis ningún post o si añadís alguno y tampoco salen daros una vuelta por este hilo del foro de WordPress Database Abstraction: Not showing posts.

Referencias.

Sqlcmd: ejecutar sentencias T-SQL en SqlServer desde la línea de comandos

Puede haber veces que no podamos trabajar con un entorno gráfico para ejecutar consultas en un SQLServer, que queramos ejecutar procesos por lotes (ficheros bat) con determinados procesos, o que, simplemente, nos apetezca usar la consola. En esos casos tenemos sqlcmd, una utilidad en línea de comandos para ejecutar sentencias T-SQL. Lo necesario para utilizar este herramienta es ver su ayuda:

Herramienta de l¡nea de comandos de Microsoft (R) SQL Server
Versi¢n 9.00.5000.00 NT INTEL X86
Copyright (c) Microsoft Corporation. Reservados todos los derechos.

Uso: Sqlcmd            [-U Id. de inicio de sesi¢n]          [-P contrasña]
  [-S servidor]            [-H nombre de host]          [-E conexión de confianza]
  [-d usar nombre de base de datos] [-l tiempo de espera de inicio de sesión]     [-t tiempo de espera de consulta]
  [-h encabezados]           [-s separador de columna]      [-w ancho de pantalla]
  [-a tama¤o de paquete]        [-e entrada de eco]        [-I habilitar identificadores entre comillas]
  [-c fin de comando]            [-L[c] listar servidores[salida limpia]]
  [-q "consulta de línea de comandos"]   [-Q "consulta de línea de comandos" y salir]
  [-m nivel de error]        [-V nivel de gravedad]     [-W quitar espacios finales]
  [-u salida Unicode]    [-r[0|1] mensajes a stderr]
  [-i archivo de entrada]         [-o archivo de salida]        [-z nueva contraseña]
  [-f <p ginaDeC¢digos> | i:<p ginaDeC¢digos>[,o:<p ginaDeC¢digos>]] [-Z nueva contrase¤a y salir]
  [-k[1|2] quitar[reemplazar] caracteres de control]
  [-y ancho de pantalla de longitud variable]
  [-Y ancho de pantalla de longitud fija]
  [-p[1] imprimir estad¡sticas[formato dos puntos]]
  [-R usar configuraci¢n regional de cliente]
  [-b anular por lotes si hay errores]
  [-v var = "valor"...]  [-A conexi¢n de administrador dedicada]
  [-X[1] deshabilitar comandos, secuencia de comandos de inicio, variables de entorno [y salir]]
  [-? mostrar resumen de sintaxis]

Conexión con autenticación de Windows a la “instancia” del servidor “host”

sqlcmd -S host\instancia 

Conexión con autenticación de Windows a la base de datos “BaseDeDatos” de la “instancia” del servidor “host”

sqlcmd -S host\instancia -d BaseDeDatos

Conexión con autenticación de SQLServer a la “instancia” del servidor “host” usando las credenciales usuario + clave

sqlcmd -U usuario -P clave -S host\instancia

Una vez conectados lo único que debemos recordar es que para ejecutar sentencias T-SQL que escribamos hemos de usar la sentencia GO. Veamos una ejemplo sencillo.

-- Conexión: 
sqlcmd -S host\sqlexpress
-- Establecemos la base de datos:
use database;
go
-- Ejecutamos una consulta:
select * from tabla;
go
nombre         apellido1         apellido2
---------------------------------------------------------------------
Antonio         Martinez         Luzco
Mirella         Abad             Nothing

(2 filas afectadas) 

Nos conectamos de nuevo y configuramos la conexión de modo que nos quite los espacios al final (opción -W), fijando el separador de columas ( -s “|”) y nos conecte a la base de datos “BaseDeDatos”:

sqlcmd -S hos\instancia -d BaseDeDatos -s "|" -W
-- Ejecutamos una consulta:
select * from tabla;
go
nombre|apellido1|apellido2
---------------------------------------------------------------------
Antonio|Martinez|Luzco
Mirella|Abad|Nothing

(2 filas afectadas)

Como veis es una herramienta sencilla pero pontente. Aquí os dejo más referencias sobre sqlcmd, Ciao

SQL Live Monitor: un monitor de SQLServer ligero y gratuito

SQL Live Monitor

Hoy, buscando con programas de monitorización de un SQLServer, me he encontrado, entre toda la oferta de programas de pago, con SQL Live Monitor [1], un monitor de SQLServer ligero y gratuito. Según los autores:

una aplicación en .NET que proporciona información del estado “en tiempo real” de la instación de SQL Server destino. No necesita instalación, muestra de información en tiempo real, y posibilidad de exportarla a ficheros para su posterior análisis. Además, también captura información SQL para su tratamiento usando PAL [2] (Performance Analysis of Logs)

De no tener nada a tener esta ayuda, va un trecho 🙂