Script para Server 2008 R2

Iniciado por eltincho, 26 Septiembre 2011, 15:16 PM

0 Miembros y 1 Visitante están viendo este tema.

eltincho

Buenos días a todos,

Estaría necesitando saber si se puede hacer un script para enviar un correo en el momento que cambie la ip de un Server 2008 R2.

Si alguien tiene algo que sirva les agradecería lo envíen,

Desde ya muchas gracias!

Saludos,

madpitbull_99

Puedes probar herramientas como IP Watcher o IP Mailer aunque lo más sencillo sería programarlo por tu cuenta.

Con PowerShell también puedes hacerlo, pero tal vez se te hará algo complicado.

Código (bash) [Seleccionar]
## Function to retrieve external IP address.
## the external address is retrieved from the
## title header of the webpage "www.myip.dk"

function Get-ExternalIP {
    $source = "http://www.myip.dk"
    $client = new-object System.Net.WebClient
    $webpage = $client.downloadString($source)
    $lines = $webpage.split("`n")
    foreach ($line in $lines) {
        if ($line.contains("</title>")) {
            $ip = $line.replace("    <title>Your IP address is: ", "").replace("</title>","")
        }
    }
    $obj = New-Object Object
    $obj | Add-Member Noteproperty externalIP -value $ip
    $obj
}


Una opción más sencilla sería programar un script sencillo en PHP, Perl o Python que consulta una página externa y si la IP ha cambiado que
envíe el correo.

PD: En toda mi respuesta me he estado refiriendo a la IP externa.



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

eltincho

Muchas gracias por tu respuesta la verdad pensé que nadie iba a responder jeje.
El tema es que es una ip interna y no tengo una pagina externa a la cual consultar.. quizás haya algún script sencillo para esto pero no se como hacerlo, tendrás idea???
igualmente estaré viendo los programas que enviaste para ver si sirven en lo que estoy buscando,

Muchas gracias nuevamente!

lagun

Ahí va una pregunta tonta, ¿qué lenguage es ese?

madpitbull_99

Es PowerShell.




Para la IP local es aún más fácil, no tienes que consultar ningún sitio externo.

Código (bash) [Seleccionar]
Function Get-IPData {
#this function assumes admin credentials
[cmdletBinding()]
Param(
    [Parameter(Position=0,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)]
    [ValidateNotNullOrEmpty()]
    [Alias("name")]
    [string[]]$computername=$env:computername
)

Process {
    ForEach ($computer in $computername) {
        Write-Verbose "Querying $($computer.ToUpper())"
        Try
        {
            #get NICS that are IP and DHCP enabled
            Get-WMIObject -Class win32_networkadapterconfiguration -computername $Computer `
            -Filter "IPEnabled='TRUE' AND DHCPEnabled='TRUE'" -ErrorAction "Stop" |
            Select Description,DNSHostname,
            @{Name="IPAddress";Expression={$_.IPAddress[0]}},
            @{Name="SubnetMask";Expression={$_.IPSubnet[0]}},
            @{Name="DefaultGateway";Expression={$_.DefaultIPGateway[0]}},DNSDomain,
            @{Name="PrimaryDNS";Expression={$_.DNSServerSearchOrder[0]}},DHCPServer,
            @{Name="DHCPLease";Expression={$_.ConvertToDateTime($_.DHCPLeaseObtained)}},
            @{Name="DHCPExpires";Expression={$_.ConvertToDateTime($_.DHCPLeaseExpires)}},
            @{Name="DHCPTimeToLive";Expression={ $_.ConvertToDateTime($_.DHCPLeaseExpires) - (Get-Date)}},
            MACAddress,
            @{Name="Speed";Expression={
            #use an Associators Of query to get the NIC
              $nic=Get-WmiObject -query "associators of {Win32_NetworkAdapterConfiguration.Index=$($_.index)}" -computername $computer
              $nic.Speed
              }}
        } #close Try
        Catch
        {
            Write-Warning "Failed to retrieve IP configuration from $($computer.ToUpper())"
            Write-Warning $_.Exception.Message
       
        } #close Catch
    } #close ForEach
} #close Process
} #end function


_Get IP Data
_Getting Assigned IP Addresses
_how to retrieve your ip address with powershell...
_PowerShell Get-Ipconfig function
_Get-IPAddress.ps1




«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

eltincho

OK muchísimas gracias, ahora una consulta mas, ya que necesito que en el momento que cambie la ip, envíe un correo a por ej pepe@gmail.com y no veo en el script un lugar para colocar la direccion de correo.. y por otra parte me corrijas en el procedimiento para ver si es correcto, entiendo que para poder ejecutar esto debo:

- Abrir PowerShell ISE, el editor de scripts de PowerShell

- Copio el script y guardo el archivo así como está.. que me quedaría un .ps1 (o debería cambiarle algo??)

- y luego debería de poner algo en las tareas programadas que lo ejecute cada x tiempo.

¿Es así? desde ya te agradezco nuevamente y si en algún momento necesitas algo de exchange 2010 o Xendesktop de citrix a las ordenes jejeje es con lo que podría llegar a ayudar un poco..