Ir ao conteúdo

Posts recomendados

Postado

Pessoal, estou precisando criar um arquivo BAT para resetar meu modem quando o arquivo for chamado (uma outra aplicação fará isso).

Tenho um D-Link 500G. Vi um script com isso aqui :huh::

@rem ////// Edite as linhas abaixo com os seus dados

@set ip=10.1.1.1
@set username=admin
@set password=admin
@set comando1=reboot


@rem ///// Não edite as linhas abaixo:

@rem ///// Criação do script vbs

@echo set sh=WScript.CreateObject("WScript.Shell")>>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "%username%">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "%password%">>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs


@rem ///// Enviando comando

@echo sh.SendKeys "%comando1%">>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs



@rem ///// Iniciando a sessão de telnet

@start /realtime telnet.exe %ip%
@cscript //nologo telnet.vbs
@del /q telnet.vbs
@call killtelnet.bat

O conteúdo do killtelnet.bat é esse:

"C:/"Arquivos de programas"/USD/afskillproc.exe telnet.exe exitafs

C:/"Arquivos de programas"/USD/wait.exe"

Bom, eu preciso fazer o seguinte... resetar meu modem, e após isso acontecer, preciso que o bat feche, mas após alguns segundo (50 por exemplo:cool:). Pesquisei sobre o comando sleep mas não encontrei quase nada. E não entendi muita coisa desse script aí acima... rs

Gostaria muito que me ajudasse, pois preciso resolver esse problema logo.

Agradeço desde já.:D

Postado

O script já resseta o modem? Só o que falta é fazer a pausa de 50s?

O WScript é o host do script VBS. Sleep é o método que faz a thread "dormir". Ela aceita um parâmetro, que é o tempo em milissegundos. Então, põe uma chamada no .vbs de "WScript.Sleep 50000" antes do .vbs finalizar.

Ficaria assim:


@rem ////// Edite as linhas abaixo com os seus dados

@set ip=10.1.1.1
@set username=admin
@set password=admin
@set comando1=reboot


@rem ///// Não edite as linhas abaixo:

@rem ///// Criação do script vbs

@echo set sh=WScript.CreateObject("WScript.Shell")>>telnet.v bs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "%username%">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "%password%">>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs


@rem ///// Enviando comando

@echo sh.SendKeys "%comando1%">>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs

REM -- Incluída a pausa de 50s no fim do script que resseta o modem
@echo WScript.Sleep 50000>>telnet.vbs



@rem ///// Iniciando a sessão de telnet

@start /realtime telnet.exe %ip%
@cscript //nologo telnet.vbs
@del /q telnet.vbs
@call killtelnet.bat

Deve fazer o que você quer...

JP

Postado

Vou tentar... o que acontece é o seguinte... o modem parece que reseta sim, porém, o killtelnet.bat não fecha... eu só consigo usa se eu fechar ele manual, senão o programa que chama ele trava...

Analisando o que você escreveu...

Essa parte sei o que é... ele já "logou" no modem, e está enviando o comando reboot pela variável (ou parâmetro) comando1.

@rem ///// Enviando comando

@echo sh.SendKeys "%comando1%">>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs

Agora isso que você escreveu... eu faço esperar 50 segundos para passar para a próxima parte... é isso?

REM -- Incluída a pausa de 50s no fim do script que resseta o modem
@echo WScript.Sleep 50000>>telnet.vbs

Isso aqui eu não entendi o que faz pra te falar a verdade... me explique por favor...?

@rem ///// Iniciando a sessão de telnet

@start /realtime telnet.exe %ip%
@cscript //nologo telnet.vbs
@del /q telnet.vbs
@call killtelnet.bat

Então meu problema é maior (eu acho) em fechar esse killtelnet.bat.... porque seu eu fechar ele manualmente o programa dará continuidade

O conteúdo do killtelnet.bat é esse:

C:/"Arquivos de programas"/USD/afskillproc.exe telnet.exe exitafs
C:/"Arquivos de programas"/USD/wait.exe

Eu havia pensando antes em fazer o seguinte.... depois da linha wait eu dar um "sleep 50000" (só simulando, rs) e então forçar o fechamento do killtelnet.bat... será q isso resolveria? porque pelo que entendi o seu código inserido simplesmente espera 50seg para passar pra parte seguinte (@rem ///// Iniciando a sessão de telnet), não é mesmo?

Desde já agradeço a atenção... se puder continuar a tentar me ajudar... quando eu chegar em ksa vou colocar esse seu código, mas acho que não vai funcionar nao... ou estou errado ao interpretar os código?

Att.

Postado

Vou comentar o que faz cada parte do "código":

- cria e seta valores para as variáveis que serão usadas no restante do programa. Quem fez o .bat aí foi caprichoso, e fez isso só para facilitar a distribuição. Assim, você só altera os dados, sem precisar meter a mão no "código" em si.


@rem ////// Edite as linhas abaixo com os seus dados

@set ip=10.1.1.1
@set username=admin
@set password=admin
@set comando1=reboot

- esse trecho cria um arquivo chamado "telnet.vbs" com instruções que serão "enviadas" para o telnet. Essas chamadas de sh.SendKeys simulam como se o usuário tivesse digitado o texto do parâmetro. O "~" é como se o usuário tivesse pressionado o ENTER.


@rem ///// Não edite as linhas abaixo:

@rem ///// Criação do script vbs

@echo set sh=WScript.CreateObject("WScript.Shell")>>telnet.v bs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "%username%">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "%password%">>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs

@rem ///// Enviando comando

@echo sh.SendKeys "%comando1%">>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs

REM -- Incluída a pausa de 50s no fim do script que resseta o modem
@echo WScript.Sleep 50000>>telnet.vbs

Uma vez criado o script acima, ele executa o telnet e chama o script que vai mandar as instruçoes para o telnet.

Só que o script não finaliza o telnet amigavelmente. Então ele chama o killtelnet.bat para finalizá-lo.


@rem ///// Iniciando a sessão de telnet

@start /realtime telnet.exe %ip%
@cscript //nologo telnet.vbs
@del /q telnet.vbs
@call killtelnet.bat

Esses dois programas existem em seu computador (nesse caminho)? :

"C:/"Arquivos de programas"/USD/afskillproc.exe

C:/"Arquivos de programas"/USD/wait.exe"

O primeiro deveria matar o processo "telnet.exe".

Se não estiver funcionando, você pode tentar finalizar o telnet amigavelmente. No lugar onde pus a pausa, tenta por isso aqui. Vai mandar um "escape" para o telnet (Ctrl-]) e depois dar o comando para finalizar (quit).


@echo sh.SendKeys "^]" >>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "quit">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs

Daí nem precisa por o Sleep de 50 segundos.

Desconfio que você não tem esse afskillproc.exe no diretório "C:/"Arquivos de programas"/USD. (aliás, que sintaxe maluca... Windows com "/" ao invés de "\" e com as aspas tudo bagunçadas! Mas mesmo assim ele chamaria a aplicação, caso exista o tal executável nessa pasta.

JP

Postado

cara, mais uma vez muito obrigado... chegando em ksa hj a noite da facul eu vou mexer e tentar entender... e por favor, olhe minha resposta amanha... cara, você é 10... muito obrigado mesmo pela atenção!!!

Att.

Postado

Bom, vamos lá...

com o código assim:

@rem ****************************************
@rem * * Script reset modem router * *
@rem * * [URL="http://www.brazukas.org"]www.brazukas.org[/URL] * *
@rem * * por: willB * *
@rem ****************************************


@rem ////// Edite as linhas abaixo com os seus dados

@set ip=10.1.1.1
@set username=admin
@set password=admin
@set comando1=reboot


@rem ///// Não edite as linhas abaixo:

@rem ///// Criação do script vbs

@echo set sh=WScript.CreateObject("WScript.Shell")>>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "%username%">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "%password%">>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs


@rem ///// Enviando comando

@echo sh.SendKeys "%comando1%">>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs

REM -- Incluída a pausa de 50s no fim do script que resseta o modem
@echo WScript.Sleep 50000>>telnet.vbs



@rem ///// Iniciando a sessão de telnet

@start /realtime telnet.exe %ip%
@cscript //nologo telnet.vbs
@del /q telnet.vbs
@call killtelnet.bat

Não funcionou...

E assim..

@rem ****************************************
@rem * * Script reset modem router * *
@rem * * [URL="http://www.brazukas.org"]www.brazukas.org[/URL] * *
@rem * * por: willB * *
@rem ****************************************


@rem ////// Edite as linhas abaixo com os seus dados

@set ip=10.1.1.1
@set username=admin
@set password=admin
@set comando1=reboot


@rem ///// Não edite as linhas abaixo:

@rem ///// Criação do script vbs

@echo set sh=WScript.CreateObject("WScript.Shell")>>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "%username%">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "%password%">>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs


@rem ///// Enviando comando

@echo sh.SendKeys "%comando1%">>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs


@echo sh.SendKeys "^]" >>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "quit">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs
@echo sh.SendKeys "~">>telnet.vbs
@echo WScript.Sleep 500>>telnet.vbs



@rem ///// Iniciando a sessão de telnet

@start /realtime telnet.exe %ip%
@cscript //nologo telnet.vbs
@del /q telnet.vbs
@call killtelnet.bat

Tbem nao funcionou...

Bom, o programa afskillproc.exe tem ele sim... sobre a sintaxe eu nao sei o que falar...

bom, acontece o seguinte, a tela do telnet.bat fecha, mas a janela do killtelnet.bat não... será q não deveria colocar um comando na janela do killtelnet.bat pra manda ela fechar depois de uns 50 seg (esse tempo é pra meu modem já ter reconectado...), depois da linha que chama o programa wait.exe???

Bom, aguardo uma ideia sua fariajp.. ou de qq outro que saiba como me ajudar... rs

T+

Postado

Cara, o killtelnet.bat chama isso aqui:

"C:/"Arquivos de programas"/USD/afskillproc.exe telnet.exe exitafs

C:/"Arquivos de programas"/USD/wait.exe"

O primeiro deve matar não amigavelmente o telnet. O segundo faz ele dar uma pausa, de sabe deus quanto tempo... Tenta tirar esse wait dai e ver se ele não termina o bat normalmente.

JP

Postado
Cara, o killtelnet.bat chama isso aqui:

"C:/"Arquivos de programas"/USD/afskillproc.exe telnet.exe exitafs

C:/"Arquivos de programas"/USD/wait.exe"

O primeiro deve matar não amigavelmente o telnet. O segundo faz ele dar uma pausa, de sabe deus quanto tempo... Tenta tirar esse wait dai e ver se ele não termina o bat normalmente.

JP

JP, funcionou quase!!!! uyahyahyua

Bom, eu tirei a linha do wait.exe... beleza, ele resetou, e fechou, mas agora tenho um outro problema... vou te explicar em qual aplicação estou usando isso..

Bom, achei um programa na net pra baixar automatico rapidshare, megaupload, etc... existe um agendador nesse programinha q fiz assim... quando ele tenta obter um link pra download e não consegue, ele executa um programa, no meu caso ele chama o telnet.bat pra poder resetar o modem e pegar um novo IP, assim conseguindo baixar o arquivo... so que meu modem demora uns 50 seg pra conectar novamente, então ao tirar o wait.exe, a tela fecha, então ele tenta pegar o IP novamente e como nao consegue reboota o modem novamente....

O que preciso agora então é fazer com que, após a linha

"C:/"Arquivos de programas"/USD/afskillproc.exe telnet.exe exitafs"

eu coloque um tipo de sleep 50000 pra que só quando ele fechar (somente após os 50 seg) o programa tente pegar novamente o link, aí ja deu tempo do modem conectar novamente (o modem é roteado).... sacou???

É possível fazer isso não é?!?!? diz que sim, por favor... rsrs...

E novamente, muuuuito obrigado... você já ajudou bastante cara...

Aguardo uma posição sua.

Att.

Postado

Põe isso aqui depois da linha "@call killtelnet.bat"


@echo WScript.Sleep 50000 >> telnet.vbs
@cscript //nologo telnet.vbs
@del /q telnet.vbs

Ele vai criar o telnet.vbs novamente só com a instrução de pausa por 50 segundos, rodar esse script e apagá-lo.

JP

Postado

uyhauyahyuahayuhayuahayuahayuhayuhyuahauyahuayhauyhauyahuyahauyhauyha

uyhauyahuyahuayhauyhauyhayuah!!!!!!!!!!!!!!!!!!!!!!!!!!

JP, lhe devo quase que minha vida!!!! uyahyuahayuhyua... cara, te garanto que aqui na minha região muita gente vai te dever uma cara..... conseguiu velho!!!! valeu mesmo... rsrs...

Muito obrigado cara... continuarei testando, e se der pau te chamo de novo hein...rsrs..

Abraço cara...

Postado

Às ordens!

Em tempo, esses ".Sleep 500" tem tudo para dar pau :) A não ser que você tenha MUITA certeza de que os 500ms são suficientes, pode dar pau a qualquer momento.

JP

  • 9 meses depois...
Postado

Aguém poderia deixar este Script ".BAT" hospedado num Rapidshare para que possui 500G Baixar..... Agradeceria se alguém puder ajudar! ;)

  • 4 meses depois...
Postado

Para quem for copiar e criar um bat com este script, so preste atenção na linha logo abaixo de "Criação do script vbs", foi dado um espaço na extensão, em vez de estar ".vbs" ela esta ".v bs" nesta linha veja :

"@echo set sh=WScript.CreateObject("WScript.Shell")>>telnet.v bs"

dae o baguio não vai.

hhehehehe, valeu pelo script, abraço a todos.

  • 2 meses depois...
Postado

Tô com um problema besta nesse script! Uso o JDownloader e coloco pra usar o bat quando alguma conexão fica instavel ou para não aguardar o tempo do rapidshare. Funcionou (demorou 6 minutos para o JD verificar o ip novo, mas funcionou), entretanto, no final o telnet.exe fica aberto na tela e eu gostaria de fecha-lo pelo script. O que faço??

Screen:

batk.th.jpg

  • 2 meses depois...
Postado

Tava procurando feito louco um script que funcionasse... ACHEI!!! ^^

Só estou com a mesma dúvida do Ar2r...

Mas de boa valeu!

[]'s

  • 9 anos depois...
Postado

Estou postando agora porque entendo ser muito relevante.

 

Esse script pode não funcionar para muita gente, porque o comando reboot "@set comando1=reboot" não está na raiz do sistema do modem/roteador, no meu caso só funcionou em: config system reboot. Tem que saber o caminho (path) do comando "reboot" do seu modem, o meu ficou assim: @set comando1=config system reboot ...

 

Abraços.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...