miércoles, 26 de enero de 2011

Me mudo

He decicido cambiar el blog de plataforma, a partir de hoy los nuevos posts estarán en programandoenpuntonet.wordpress.com

Los posts antiguos se quedarán aquí, no voy a eliminar ninguno.

A ver si con el cambio aumento la frecuencia de posts :)


Happy codding ;)

jueves, 4 de noviembre de 2010

Enviar ficheros por FTP usando Powershell

Con este script de Powershell podemos automatizar el envío por FTP de todos los ficheros que existan en un directorio y cumplan con un determinado filtro (por ejemplo, todos los .txt).

Me he basado en este post para hacerlo: How to upload a file, the PowerShell way

Actualización 17/11/2010: añado $R.proxy = $null para que no de problemas con proxys HTTP :)


#Directorio del que obtenemos los ficheros
$source_folder="c:\temp\"

#Filtro que deben cumplir los ficheros que se envían
$files_filter=$source_folder + "*.txt"

#Archivo donde se guardará el log del proceso
$log_file="c:\FTP.log"

#URL de nuestro servidor FTP
$FTP_url="ftp://myserver.ftp/destino/"
$FTP_user="usuario"
$FTP_password="password"

# Obtenemos todos los ficheros del directorio que cumplan con el filtro
foreach ($filename in Get-Childitem $files_filter)
{
#Path completo del fichero de origen que se enviará por FTP
$Source=$source_folder + $filename.name

#Guardamos una línea en el archivo de logs
$DATE=Get-Date
Add-Content $log_file "[INFO]: $DATE - $Source"

#Path completo del fichero de destino
$Destination=$FTP_url + $filename.name

#Aquí comienza el control de errores, se verá más abajo con el "trap"
&{
#Usamos el metodo estático Create para crear una petición web.
#Pasamos el destino como argumento y lo convertimos
#en un objeto FtpWebRequest.
$R=[System.Net.FtpWebRequest][System.Net.WebRequest]::Create($Destination)

#Especificamos a la petición cómo nos loguearemos
#(usando un objeto NetworkCredential)
$R.Credentials = New-Object System.Net.NetworkCredential($FTP_user, $FTP_password)
$R.proxy = $null
#... y qué tipo de método se usará. Un file upload.
$R.Method = "STOR"

#Aquí se usa el método más simple para obtener los bytes
#de un fichero a un array de bytes.
$FileContens = [System.IO.File]::ReadAllBytes($Source)

#Finalmente, se ponen el array de bytes en la petición web.
$S = $R.GetRequestStream()
$S.Write($FileContens, 0, $FileContens.Length)

#Se cierran el stream y se libera el objeto
$S.Close()
$S.Dispose()
}
trap [SystemException]
{
#Si se produce un error, lo guardamos en el fichero de logs
#y continuamos con el siguiente fichero
$ERROR=$_
$DATE=Get-date
Add-Content $log_file "[ERROR]: $DATE - $ERROR"
continue
}
}



Ahora lo suyo es guardarnos el script en un fichero .ps1 y crear una tarea programada que lo ejecute, por ejemplo, que cada media hora compruebe el directorio y envíe los ficheros.

Y ya que estamos, podemos crear la tarea programada con Powershell:

SCHTASKS /Create /RL HIGHEST /SC MINUTE /MO 30 /TN "Enviar ficheros por FTP" /NP /TR 'powershell.exe –Command "c:\enviar_ficheros_FTP.ps1"'

Bola extra
Tal vez os interese también obtener los ficheros de un FTP: How to download a file, the PowerShell way

Happy codding ;)

viernes, 16 de julio de 2010

El final de un largo viaje: MCPD



6 exámenes después ya soy MCPD Enterprise Application Developer 3.5 :)

martes, 15 de junio de 2010

Novedades Visual Studio 2010 (I): Versiones

Con este post empiezo una serie con las novedades del nuevo Visual Studio 2010 y del .NET Framework 4.0, empezamos con las versiones:


Como ya nos tiene acostumbrados, cada vez que sale un nuevo Visual Studio, también cambian los nombres de las versiones y lo que se puede (o no) hacer con ellas.

En esta página tenéis un gráfico comparativo:

http://www.microsoft.com/spain/visualstudio/products

Pero sirva esto de pequeño resumen:

Professional with MSDN Essentials

Incluye todas las herramientas de desarrollo (windows, web, office and Sharepoint y Could development), el debugger y la de Unit Testing.

No incluye ninguna de las herramientas de arquitectura (ni siquiera el visor de diagramas O_o) ni acceso al Team Foundation Server (TFS).

Tampoco incluye las herramientas de desarrollo de bases de datos, únicamente está disponible la herramienta de Data Access.


Professional with MSDN

Las diferencias con la anterior son: más opciones en la subscripción MSDN y acceso al TFS.


Premium

Añade herramientas de debugging, testing y desarrollo de bases de datos. En el apartado de arquitectura sólo incluye la opción de lectura de diagramas.


Ultimate

El paquete completo, incluye todas las herramientas de:

Debugging and Diagnostics
Testing
Database
Development
Lab Management
Team Foundation Server


Test Professional

La versión más limitada, pensada para miembros del equipo de test, no incluye herramientas de desarrollo ni de acceso a base de datos, únicamente de Testing y TFS.


Si os apetece probarlas, aquí tenéis la página de descargas de versiones Trial:

http://www.microsoft.com/spain/visualstudio/download


PD: curiosamente Visual Studio comparte nomenclatura con Windows 7: Premium, Professional y Ultimate.