Que powershell es muy potente ya lo hemos visto en varios ejemplos anteriormente, pero si lo unimos con SSH puede ser algo muy productivo para el día a día.
Cuando gestionas muchos servidores linux es complicado generar informes periódicos de cierta información sin una herramienta elaborada o sin trabajar scripts que nos faciliten esa tarea. Hoy os enseñamos a realizar un script para extraer información vía PowerShell – SSH.
Para ello deberemos instalar el modulo de Powershell que nos va a facilitar esto. Se trata de una librería que deberemos colocar en nuestro equipo o servidor para poder activar la función.
DESCARGA LIBRERIA: http://sshnet.codeplex.com/
Lo primero que tenemos que hacer es ver qué PATH tienen los módulos en el sistema:
1 |
$env:PSModulePath -split ';' |
C:\Windows\System32\WindowsPowerShell\v1.0\Modules
Copiamos el ZIP descomprimido en la ruta. Si no existen todas las carpetas las creamos. Ahora lanzamos el comando para cargar el módulo:
1 |
Import-Modules SSH-Sessions |
Lanzamos la conexión SSH, tantas como de servidores queramos extraer información:
1 2 3 |
PS C:\Users\elblogdenegu> New-SshSession -ComputerName servidor -Username dominio\elblogdenegu No key provided. Enter SSH password for dominio\elblogdenegu: ********** Successfully connected to servidor |
Comprobamos que hemos generado la conexión:
1 2 3 4 |
PS C:\Users\elblogdenegu> $SshSessions Name Value ---- ----- servidor1 Renci.SshNet.SshClient |
Podemos crear tantas como necesitemos:
1 2 3 |
PS C:\Users\elblogdenegu> New-SshSession -ComputerName servidor2 -Username dominio\elblogdenegu No key provided. Enter SSH password for dominio\elblogdenegu: ********** Successfully connected to servidor2 |
1 2 3 4 5 |
PS C:\Users\elblogdenegu> $SshSessions Name Value ---- ----- servidor2 Renci.SshNet.SshClient servidor1 Renci.SshNet.SshClient |
Ahora lanzamos el comando que queremos recoger, y lo enlazamos a una variable para trabajar con los datos:
1 2 3 4 5 |
PS C:\Users\elblogdenegu> $Results = Invoke-SshCommand -InvokeOnAll -Command 'cat /etc/redhat-release ' servidor1: CentOS release 5.10 (Final) servidor2: Red Hat Enterprise Linux Server release 6.4 (Santiago) |
Ahora podemos ver el resultado en la variable:
1 2 3 4 5 |
PS C:\Users\elblogdenegu> $Results servidor1: CentOS release 5.10 (Final) servidor2: Red Hat Enterprise Linux Server release 6.4 (Santiago) |
Si fuese necesario tratar podemos exportar el resultado a un fichero de texto el cual le añadimos la fecha y hora de creación:
1 |
PS C:\Users\elblogdenegu> $Resultados | Out-File "C:\Users\elblogdenegu\Desktop\resultados-$(Get-Date -Format 'dd_MM_yyyy HH_mm tt').txt" |
Para que veais la utilidad podemos crear un script PowerShell, para generar una tarea programada por ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<# </code>.DESCRIPTION Script para evaluar la energía consumida por los chasis de Blade .PARAMETER UserName La cuenta de servicio con permisos para realizar la operación .PARAMETER Password La contraseña de cuenta de servicio con permisos para realizar la operación <span style="background-color: #f4f4f4;">.AUTHOR </span> Elblogdenegu #> </code><code> Write-Host "****************INICIO*************" </code><code> Write-Host "PASO 1 - Importamos modulo SSHNET" </code><code> Import-Module SSH-Sessions </code><code> Write-Host "PASO 2 -Pasamos los valores de usuario y password" </code><code> $UserName = "dominio\elblogdenegu" </code><code> $Password = "password" </code><code> Write-Host "PASO 3 - Abrimos conexiones SSH con Blades que pasaran a la variable SshSessions" </code><code> New-SshSession -ComputerName servidor1 -Username $UserName -Password $Password </code><code> New-SshSession -ComputerName servidor2 -Username $UserName -Password $Password </code><code> New-SshSession -ComputerName servidor3 -Username $UserName -Password $Password </code><code> New-SshSession -ComputerName servidor4 -Username $UserName -Password $Password </code><code> New-SshSession -ComputerName servidor5 -Username $UserName -Password $Password </code><code> New-SshSession -ComputerName servidor6 -Username $UserName -Password $Password </code><code> New-SshSession -ComputerName servidor7 -Username $UserName -Password $Password </code><code> Write-Host "PASO 4 - Se muestran todas las conexiones" </code><code> $SshSessions </code><code> Write-Host "PASO 5 - Cargamos los datos en Resultados" </code><code> $Resultados = Invoke-SshCommand -InvokeOnAll -Command 'cat /etc/redhat-release' </code><code> Write-Host "PASO 6 - Exportamos los datos a texto con la hora" </code><code> $Resultados | Out-File "C:\Users\elblogdenegu\Desktop\resultados-$(Get-Date -Format 'dd_MM_yyyy HH_mm tt').txt" </code><code> Write-Host "******************FIN**********************" |
1 |
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?