22/02/2008

Creare un mini-webserver di emergenza da script

A cura di Efran Cobisi
Tag: Network


Grazie alla completa integrazione con il framework .NET, Windows PowerShell espone una vastissima gamma di funzionalità pronte all'uso, alla pari dei cugini linguaggi di sviluppo C# e VisualBasic .NET.
Raccogliendo la sfida lanciata in un blog nei giorni scorsi, in questo snippet dimostriamo quanto sia facile, semplice, ordinato e coerente sviluppare una sorta di server web in formato ridotto, capace di rispondere a qualsiasi richiesta sempre e soltanto con una pagina HTML statica, definita all'interno dello script stesso.

# Creazione ed avvio del listener HTTP (locale, porta 12345)

$httpListener = New-Object Net.HttpListener
$httpListener.Prefixes.Add("http://localhost:12345/")
$httpListener.Start()

# Ciclo di ricezione delle connessioni in entrata

while ($true)
{
  # Recupero del contesto HTTP

  $httpContext = $httpListener.GetContext() 
  $httpResponse = $httpContext.Response

  # Aggiunta degli header allo stream di risposta HTTP

  $httpResponse.Headers.Add("Content-Type", "text/html")
  $httpResponse.Headers.Add("Server", "PowerShell/1.0")

  # Scrittura del corpo dell'output

  $writer = New-Object IO.StreamWriter($httpResponse.OutputStream, [Text.Encoding]::UTF8)
  $writer.Write('<html><body>Cosa fai qui? Corri a ')
  $writer.Write('visitare <a href="http://www.powershell.it">powershell.it</a>! :)')
  $writer.Write('</body></html>')
  $writer.Close()
}

# Chiusura del listener HTTP (comunque forzata da CTRL+Break)

$httpListener.Stop()

Commenti



Nessun commento disponibile.

Cobisi EmailVerify.NET is a Microsoft .NET software component that validates email addresses. valid email