Desenvolvimento

Um VBS um tanto que ousado

1 777

Com uma série de comandos simples conseguimos fazer um script um tanto que ousado, bom…nem tanto assim, mas o que vale aqui é a idéia. Tenho um Server pessoal para garantir a execução de muitas rotinas, há vários meses configurei para me ajudar em alguns processos rotineiros (ou não). Foi legal!


Bom, aqui envio um dica bem interessante para você que não possui um IP fixo em casa/escritório mas que gostaria de estar consultando informações remotamente sem precisar ficar consultando o IP todos os dias, interessante hein? Simule um IP fixo, depende muito em como vamos criar nossa solução.

Usei aqui um “.VBS”, executado pelo WSH (Windows script host), padrão do Windows. Se você notar, quando se instala o IIS verá que alguns VBS de controle do Server são instalados juntos. Esses VBS são excelentes para execução de rotinas sem interação com usuário e que precisam ser executados em tempos determinados (agendamento). Um exemplo de um bom VBS é a veiculação de um e-mail marketing todo dia 15, por exemplo. Quem aí recebe e-mails do Submarino?

Seguindo este conceito que vamos criar um script para ser executado diariamente. Afinal, o que pretendemos fazer? Primeiro criamos uma rotina para coletar através de uma página o IP da máquina na qual está acessando. Buscamos através de um serviço, exemplo do site MeuIP. Mas não usaremos este para não recebermos junto informações desnecessárias. Então usaremos uma página muito simples (1 linha) desenvolvida por mim, em ASP (http://www.ciin.com.br/pegaIp.asp). Claro que, se acessar agora, vai pegar seu IP nesse momento.

Em seguida criamos um arquivo HTML e jogamos em seu conteúdo o resultado da consulta acima, ou seja, o IP. Então fazemos a conexão FTP de um de nossos sites para conseguirmos disponibilizar o IP via WEB, assim, ao acessarmos um endereço configurado por você, teremos o IP do Server onde quer que estejamos. Detalhe, no script é gerado um TXT com a configuração completa e a execução de todos os comandos necessários para conexão e envio via FTP.

Por último é executada uma rotina para enviar o IP por e-mail, o seu e-mail ou de quem você deseja manter atualizado.

No final do script, por motivos de segurança os arquivos gerados são apagados.

Sim, faltou muitos detalhes na explicação do script, mas considero o conhecimento básico do caro leitor. Para conseguir enviar o e-mail, a máquina que vai executar o script precisar estar com o IIS + SMTP configurado.

Abaixo o código:


‘———————————————–
‘ ———- CAPTURA IP E CRA HTML ————-
sSource = “http://www.alvoconhecimento.com.br/pegaIp.asp”
sDest = “ipGrava.html”
set oHTTP = WScript.CreateObject(“Microsoft.XMLHTTP”)
oHTTP.open “GET”, sSource, False
oHTTP.send
tStart = timer()
set oStream = createobject(“adodb.stream”)
Const adTypeText = 1
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2
oStream.type = adTypeText
oStream.open
oStream.write oHTTP.responseBody
oStream.savetofile sDest, adSaveCreateOverWrite
set oStream = nothing
tElapsed = timer() – tStart
set oHTTP = nothing
WScript.Echo “1. IP capturado e arquivo gerado em ” & tElapsed & ” segundos…”

‘——————————————————————-
‘—– ENVIAR O HTML PARA O SERVER E REMOVE TODOS OS ARQUIVOS ——
Const HOSTNAME = “URL FTP”
Const USERNAME = “LOGIN”
Const PASSWORD = “SENHA”
Const CONFIGFTP = “configFTP.txt”
Set WshShell = CreateObject(“WScript.Shell”)
Set objFso = CreateObject(“Scripting.FileSystemObject”)
Set objFile = objFso.CreateTextFile(CONFIGFTP)
With objFile
.WriteLine “open ” & HOSTNAME
.WriteLine USERNAME
.WriteLine PASSWORD
.WriteLine “cd web/” (padrão Locaweb)
.WriteLine “put ” & sDest
.WriteLine “quit”
.Close
End With
strFTP = “%systemroot%System32ftp.exe -s:” & CONFIGFTP
strFTP = WshShell.ExpandEnvironmentStrings(strFTP)
WshShell.Run strFTP,1,true
WScript.Echo “2. IP Enviado para o server. ” & sDest

‘——————————————————————–
‘——————— ENVIAR POR E-MAIL O IP ———————–
Const cdoOutlookExvbsss = 2
Const cdoIIS = 1
Set Message = CreateObject(“CDO.Message”)

Set objFile = objFso.OpenTextFile(sDest)
Do Until objFile.AtEndOfStream
txtCorpo = txtCorpo & objFile.Readline
loop

With Message
.Configuration.Load cdoIIS
.To = “SEU EMAIL”
.Subject = “[SERVER IP]”
.HtmlBody = txtCorpo
.From = “SEU EMAIL”
.Send
End With
objFile.Close
WScript.Echo “3. IP enviado por e-mail.”

‘—————————————————————
‘—————— APAGA OS ARQUIVOS GERADOS ——————

objFso.DeleteFile CONFIGFTP, vbTrue
objFso.DeleteFile sDest, vbTrue
WScript.Echo “4. Todos os arquivos gerados foram apagados. Fim do processo.”

set objFile = nothing
set objFso = nothing

Grave o arquivo com uma extensão “.vbs”: “mandaIp.vbs” execute em prompt de comando: “cscript mandaIp.vbs”.

Até a próxima.

Sobre o autor / 

Daniel Accorsi

Analista Web/Sistemas formado em 2004 pela Universidade UniFil em Londrina/PR, MBA em Marketing Digital e Gestão de Projetos Web, blogueiro, desenvolvedor Kinect e fotografia como hobby. Me encontre no Twitter - @DanielAccorsi

Comentários

Arquivo

Receba por e-mail

Você receberá pro e-mail as novas publicações do Alvo Conhecimento. Poderá cancelar a qualquer momento.