Bom dia, quero fazer com que dados que serão obtidos através de uma interface java sejam enviados para um arquivo .bat, que lerá os dados e iniciará o processo.
O problema que tenho que resolver é o seguinte:
Quero iniciar uma conexão VPN com o OpenVPN com o seguinte comando.
Arquivo: start.bat
cd %PROGRAMFILES%\OpenVPN\config
openvpn --config client.ovpn
Mas, não quero utilizar a interface do PROMPT-DOS, então quero que o bytecode resgate os dados digitados pelo usuários através desta interface JAVA e que inicie o arquivo .bat com estes dados.
convertendo o arquivo bat pra exe dah pra usar o Runtime.getRuntime().exec()
vlw!!
chicogodoy.evo
Legal, gostei das propostas, agora ja sei que é possível fazer o que eu estou pensando.
Mas quando compilo e executo a Classe do OliveirakunJava, nada acontece, estou utilizando o eclipse.
OliveirakunJava
chicogodoy.evo:
Legal, gostei das propostas, agora ja sei que é possível fazer o que eu estou pensando.
Mas quando compilo e executo a Classe do OliveirakunJava, nada acontece, estou utilizando o eclipse.
Vc deve colocar o caminho do arquivo na variável bat. O arquivo .bat vai ser executado em modo silencioso(sem aparecer a janela do prompt do ms-dos), se vc quiser ver a janela para ter certeza de que o arquivo foi executado basta retirar o parâmetro /B na linha: ("cmd /c start /B "+bat)
andredemelo
Utilizo o .bat para ser executar pelo pronpt, não sabia que o bytecode conseguia fazer o mesmo, este tópico me ajudou bastante!
Vou tentar executa-lo desta forma nas próximas vezes que eu precisar, ao invés de utilizar pelo prompt!
J
juliocbq
andredemelo:
Utilizo o .bat para ser executar pelo pronpt, não sabia que o bytecode conseguia fazer o mesmo, este tópico me ajudou bastante!
Vou tentar executa-lo desta forma nas próximas vezes que eu precisar, ao invés de utilizar pelo prompt!
Não é o bytecode que faz isso, e sim o “cmd”(shell do windows). A solução postada atraz apenas pede ao cmd.exe para executar seu script.
chicogodoy.evo
Legal, é verdade, o “/B” oculta a execução, entretanto se eu preciso inserir um usuário e senha, pois estou testando VPNs com certificados.
Observem na imagem o que acontece ao desocultar a execução do arquivo .bat
Preciso inserir um usuário e senha que o usuário irá digitar na execução do arquivo.
É possível?
andredemelo
Obrigado por esclarecer juliocbq, então faço de uma outra forma, que também executa o .bat!
Ele tembém executa pelo “cmd”.
O “.bat” é útil pra mim para que eu efetue scripts de filmagens dos sistemas desenvolvidos, utilizando o SeleniumServer, para a equipe de qualidade!
andredemelo
Especifica o usuário e a senha no “.bat” criado.
lina
Oi,
Alguém ai realmente conseguiu executar o .bat ?
Porque aqui não deu certo com nenhuma opção. E olha que já tentei todas!
Tchauzin!
chicogodoy.evo
Não dá, pois quando executo este client.ovpn entre em uma instância do OpenVPN.
Ou seja, as próximas linhas de comando só serão executadas após o término da instância.
Ex.:
tenho um .bat seguinte:
=============== INICIO BAT ===============
cd %PROGRAMFILES%\OpenVPN\config
openvpn --config client.ovpn [color=red]// Aqui executo o arquivo (dentro desta execução o PROMPT me pede usuário e senha).[/color]
usuario [color=red]// Ao executar esta linha estou fora do arquivo.[/color][color=red] [/color]
senha [color=red]// Ao executar esta linha estou fora do arquivo.[/color][color=red] [/color]
=============== FIM BAT ===============
chicogodoy.evo
lina:
Oi,
Alguém ai realmente conseguiu executar o .bat ?
Porque aqui não deu certo com nenhuma opção. E olha que já tentei todas!
Tchauzin!
Oii, consegui sim.
Só que o .bat está sendo executado em background, retire o parâmetro “/B” conforme indico abaixo.
Preciso inserir um usuário e senha que o usuário irá digitar na execução do arquivo.
É possível?
É sim mas é um pouco mais complicado. O comando Runtime.getRuntime.exec() retorna um processo, vc vai ter que pegar esse processo retornado e abrir um stream de entrada e saida para ler e enviar dados, muito parecido com sockets. Vai ficar mais ou menos assim:
Processpr=Runtime.getRuntime().exec("cmd /c start /B "+bat);PrintStreamoutput=newPrintStream(pr.getOutputStream());Scannerscanner=newScanner(pr.getInputStream());output.println("User");//escrevendo dados no streamSystem.out.println(scanner.nextLine());//imprimindo a saida dos dados
O ideal é vc criar uma thread separada para ler a saida dos dados e enviar os comandos pela thread principal, se vc ja trabalhou com sockets não vai ter problemas.
Lina, tenta executar o código que eu postei mas sem o parâmetro /B na linha do runtime.exec(), dessa forma a janela de prompt aparecerá na tela. No caso essa linha ficaria dessa forma:
Runtime.getRuntime.exec("cmd /c start "+bat);
andredemelo
E se vc utilizar o ‘Selenium Server’ para simular a autentificação? Criando um ‘.jar’ com a execução do login e senha por um .bat?
chicogodoy.evo
Iiiiii… ai ferrou…
Nunca trabalhei com Sockets.
Vou testar esse código.
Existe algum tutorial específico para isso?
PS.: Valeu a todos pela ajuda, de fato que todos ajudaram na minha questão, afinal, agora sei que é possível.
chicogodoy.evo
Ai que tá… é a primeira vez que escuto esse nome
heheheh…
vou ter que estudar sobre o Seleniu Server.
Mas valeu pela dica!
OliveirakunJava
chicogodoy.evo:
Iiiiii… ai ferrou…
Nunca trabalhei com Sockets.
Vou testar esse código.
Existe algum tutorial específico para isso?
PS.: Valeu a todos pela ajuda, de fato que todos ajudaram na minha questão, afinal, agora sei que é possível.