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!!
C
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.
O
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)
A
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.
C
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?
A
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!
A
andredemelo
Especifica o usuário e a senha no “.bat” criado.
L
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!
C
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 ===============
C
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);
A
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?
C
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.
C
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!
O
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.