hay algún script con bat que pueda buscar y mandar la dirección IP

Iniciado por lordluisiv, 22 Septiembre 2017, 22:29 PM

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

lordluisiv

hay algún script con bat que pueda buscar y mandar la dirección IP de la computadora que lo ejecuto a un correo ???
Engel Lex: Los títulos deben ser descriptivos

**Aincrad**

en batch si se puede obtener la ip pero no se puede enviar.

code para obtener la ip.

Código (bash) [Seleccionar]

@echo off
ipconfig >> ip.txt
pause


Si quieres enviarla tienes que crear un vbs:

Código (actionscript) [Seleccionar]

set objcdo=createobject("cdo.message")
objcdo.subject="Prueba de envío"
objcdo.from="direccionmail"
objcdo.to="maildestinatario"
objcdo.textbody="Este es el texto del mail"
objcdo.configuration.fields.item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objcdo.configuration.fields.item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "direccionsmtp"
objcdo.configuration.fields.item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = puertosmtp
objcdo.configuration.fields.item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
objcdo.configuration.fields.item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
objcdo.configuration.fields.item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "direccionmail"
objcdo.configuration.fields.item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "contraseña"
objcdo.configuration.fields.item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1
objcdo.configuration.fields.update
objcdo.send


si quieres enviar el txt que tiene la ip pon:

Código (actionscript) [Seleccionar]
objcdo.addattachment("c:\miarchivo.txt")



SI QUIERES OBTENER LA IP Y ENVIARLA SIN PROBLEMAS APRENDE VB.NET O VB6


PD:puedes enviar la ip solo con el batch y con una herramienta comandline llamada zeta uploader.  https://www.zeta-uploader.com/zetauploader-setup.exe





Eleкtro

#3
Cita de: **Aincrad** en 23 Septiembre 2017, 00:37 AMcode para obtener la ip.

Código (bash) [Seleccionar]

@echo off
ipconfig >> ip.txt
pause

El bueno de @warcry se tiraría de los pelos al leer esa respuesta... xD

IpConfig no es una solución viable en la mayoría de casos, puesto que depende del tipo de conexión y la configuración de ésta. De nada sirve en la mayoría de casos usar IpConfig si te conectas a través de un router y quieres obtener la IP pública/externa... que es la que normálmente se querrá obtener en estos casos; IpConfig solo mostrará la IP privada (ej. 192.168.1.3)

PD: Hay que informarse y verificar las cosas un poco más antes de ofrecer respuesta a todo el mundo, @Aincrad.




Respecto a la pregunta principal, Batch no fue diseñado para satisfacer tareas como esta. Como ya te han comentado, para enviar un e-mail necesitas recurrir a otros lenguajes de programación o herramientas command-line de terceros desde Batch. Pero todo eso es complicarse la vida cuando tienes a tu disposición un lenguaje de programación tan flexible como PowerShell.

He escrito este código de ejemplo con el que puedes obtener la IP pública haciendo una petición al servicio gratuito de http://checkip.dyndns.org, y también para enviar un correo mediante GMail u Outlook.com (Hotmail). Las funciones de este código fuente en VB.NET han sido extraidas de mi framework comercial ElektroKit Framework para .NET.

( recuerda que para poder enviar correos mediante GMail primero es necesario permitir el acceso a aplicaciones en la configuración de tu cuenta de Google: https://myaccount.google.com/lesssecureapps )

script.ps1
Código (ini) [Seleccionar]
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# ElektroKit Framework for .NET can be bought here:                     #
#                                                                       #
# https://codecanyon.net/item/elektrokit-class-library-for-net/19260282 #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

$vbCode = @'
Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Mail
Imports System.Xml.Linq

Namespace ElektroKitFramework

   Public NotInheritable Class NetworkUtil

     Private Sub New()
     End Sub

     Public Shared Function GetPublicIp() As String
         Dim req As WebRequest = WebRequest.Create("http://checkip.dyndns.org/")
         Using resp As WebResponse = req.GetResponse()
             Using sr As New StreamReader(resp.GetResponseStream)
                 Dim html As XDocument = XDocument.Parse(sr.ReadToEnd())
                 Dim body As String = html.<html>.<body>.Value
                 Return body.Substring(body.LastIndexOf(" ")).Trim()
             End Using
         End Using
     End Function

     Public Shared Sub SendGoogleMail(cred As NetworkCredential, [to] As String, subject As String, body As String)
         Using msg As New MailMessage(cred.UserName, [to], subject, body)
             Using client As New SmtpClient()
                 With client
                     .Host = "smtp.gmail.com"
                     .Port = 587
                     .EnableSsl = True
                     .Credentials = cred
                     .DeliveryMethod = SmtpDeliveryMethod.Network
                     .Timeout = CInt(TimeSpan.FromSeconds(60).TotalMilliseconds)
                 End With
                 client.Send(msg)
             End Using
         End Using
     End Sub

     Public Shared Sub SendOutlookMail(cred As NetworkCredential, [to] As String, subject As String, body As String)
         Using msg As New MailMessage(cred.UserName, [to], subject, body)
             Using client As New SmtpClient()
                 With client
                     .Host = "smtp.live.com"
                     .Port = 587
                     .EnableSsl = True
                     .Credentials = cred
                     .DeliveryMethod = SmtpDeliveryMethod.Network
                     .Timeout = CInt(TimeSpan.FromSeconds(60).TotalMilliseconds)
                 End With
                 client.Send(msg)
             End Using
         End Using
     End Sub

   End Class

End Namespace
'@
$vbType = Add-Type -TypeDefinition $vbCode `
                  -CodeDomProvider (New-Object Microsoft.VisualBasic.VBCodeProvider) `
                  -PassThru `
                  -ReferencedAssemblies "Microsoft.VisualBasic.dll", `
                                        "System.dll", "System.IO", "System.Net", `
                                        "System.Xml", "System.Xml.Linq" `
                                        | where { $_.IsPublic }

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

$publicIp = [ElektroKitFramework.NetworkUtil]::GetPublicIp()
Write-Host ( [System.String]::Format("My Public IP Address Is: {0}", $publicIp) )

$cred   = New-Object -TypeName System.Net.NetworkCredential -ArgumentList "username@gmail.com", "password"
$mailTo = "destination@server.com"
Write-Host ( [System.String]::Format("Sending Mail From: ""{0}"" To: ""{1}""", $cred.UserName, $mailTo) )

try {
 [ElektroKitFramework.NetworkUtil]::SendGoogleMail( $cred, $mailTo, "My Public Ip Address", $publicIp )
 # [ElektroKitFramework.NetworkUtil]::SendOutlookMail( $cred, $mailTo, "My Public Ip Address", $publicIp )
 Write-Host "Mail sent successfully."

} catch {
 Write-Host ( [System.String]::Format("An Exception Occured With Message: ""{0}""", $_.Exception.Message) )

}

Exit(0)


Resultado de ejecución:


PD: Si usas otro servidor SMTP tan solo tienes que cojer el método SendGoogleMail o SendOutlookMail y adaptar/modificar los parámetros de configuración...

Saludos.








warcry.

HE SIDO BANEADO --- UN PLACER ---- SALUDOS