Powershell_> Sustituyendo a curl y wget con PS

Hola a todos, hoy en este post quiero hablaros un poquito, pero muy poquito de Invoke-WebRequest y de sus bondades, un cmdlet muy útil para los sysadmins y auditores de seguridad  ya que nos permitirá desde línea de comandos y desde nuestros scripts el poder tener un sustituto de los famosos curl o wget (en la medida de lo posible) y algunas cositas más. Veamos la Ayuda: get-help Invoke-WebRequest

Vaya, podemos hacer muchas cosas con el …. básicamente nos permite obtener el contenido de paginas web, empecemos por algo básico, vamos a descargarnos un archivo desde internet…  por ejemplo…. el 7zip XD, siiiii es un ejemplo chorra pero pasito a pasito se hace el camino….

La verdad es que esto es muy sencillo, simplemente el cmdlet indicando la URL del archivo y especificando la salida del archivo. Bueno, ya hemos descargado el archivo, ¿qué más podemos hacer? Que os parece si por ejemplo nos creamos un mini script para que nos de información de nuestra ip pública… hay varias opciones para hacerlo, para este mini script vamos a utilizar ifconfig.me si accedemos a la web veremos que nos indica nuestra ip pública y como utilizar la web con curl, así que vamos a ver que pasa….

Veamos que podemos hacer, probemos con la primera opción.

Vaya, nos devuelve un montón de cositas…  tenemos que tener en cuenta SIEMPRE que el cmdlet nos devuelve el contenido como un objeto,  y como siempre:

TIP si queréis saber que propiedades y métodos están disponibles para un objeto tenéis el cmdlet GET-MEMBER …… basta con hace un PIPE del objeto ha get-member y obtendremos  lo descrito.

 

Hasta aquí queda claro ¿no?,  veamos que encontramos en si vemos la propiedad content

Lo que veís es el contenido de la página web… tiene que haber una forma más fácil de hacer esto, si miramos la imagen de más arriba donde nos aparecen las opciones desde curl, vemos que si accedemos a ifconfig.me/ip nos devolverá la ip directamente, veamos que nos devuelve en realidad….

guay, aquí si tenemos más fácil ver nuestra ip pública, simplemente una vez realizado el invoke-webrequest, obtenemos el valor de Content y tachánnnn

Creamos el mini script con lo siguiente y lo guardamos como Get-PublicIP.ps1

 

# Nos devuelve la ip publica

Clear-Host

$IP=Invoke-WebRequest http://ifconfig.me/ip

Write-Host-BackgroundColor DarkGreen -ForegroundColor Black ('Mi IP publica es : {0}'-f$IP)
Veamos que pasa cuando lo ejecutamos.
Fantástico, en dos líneas de código (porque hemos querido dejarlo guapo) ya tenemos un script que nos dice nuestra ip pública.
Podemos hacer muchas más cosas, veamos un ejemplo con nuestra web… concretamente en la sección de enlaces… vamos a sacar con 2 comandos todos los enlaces que hay en dicha sección https://aprendizdesysadmin.com/enlaces
Como podéis observar primero obtenemos el contenido de la sección de enlaces y posteriormente obtenemos la propiedad de los links y de cada link obtenemos las propiedades href e innertext y nos queda el resultado de se ve en la imagen.
Y hasta aquí dejamos este post, como habréis observado este cmdlet da mucho juego para hacer cosas y obtener información más que interesante sin salir de la linea de comandos o para automatizar vuestros scripts… ojo, NO SEÁIS MALOS 🙂 más adelante pondré más casos de uso….
Como siempre, espero que este post os guste, aprendamos un poco más sobre PS y os sea útil. Un saludo a todos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *