Ola amigos, tenho um problema na minha empresa…
A internet aqui é bloqueada para a maioria dos funcionarios, porém quando eles precisam eles pedem para que eu libere!
Então uso um comando via CMD para adicionar uma nova rota que direciona à internet.
O problema é que a empresa é grande e as vezes estou com outros problemas e não posso ir até a pessoa.
Então pensei em fazer uma aplicação que seria instalada em cada maquina e quando alguem precisasse fizesse uma solicitação e que a minha maquina recebesse essa solicitação. Depois eu simplesmente autorizava, com essa autorização chamava um método que adicionaria a rota sem o usuario da máquina ver o que eu estou digitando no CMD.
O problema é… sou iniciante em Java nunca fiz uma aplicação robusta assim (se é que é robusta), mas para mim parece complicada.
Queria uma luz de como começar a fazer isso.
Alguem poderia me ajudar e me indicar classes, material de estudos para isso, como tratar conexoes TCP/IP via java e coisas mais que eu preciso para fazer essa aplicação?
Então, entendi seu problema e percebi que voce esta interessado em aprender java, mas acredito que seja um projeto um pouco dificil pra iniciante como nos De qualquer forma, sera que mandar um email com um assunto padrao como “Liberar internet” para voce nao era a solucao mais pratica? Ou nem email interno a galera tem acesso?
heuehuheahe
sabe o que acontece, a empresa é grande… como é via CMD tem que ser feito na maquina de cada usuario.
eu trabalho no 6º andar, as vezes o pessoal do 1º andar me pede isso…
ai fica meio complicado dependendo da minha quota de serviço ir até a maquina do cara
por isso queria simplificar =/
pq se estiverem… vc pode executa comandos de prompt na outra maquina…
ai a pessoa te liga… vc envia o comando direto da sua maquina e libera lah na maquina dela…
ainda poderia fazer um programa q automaticamente envia o comando no prompt pra maquina da pessoa…
[quote=alucardeck]ueh… mas todas as maquinas estao em rede??
pq se estiverem… vc pode executa comandos de prompt na outra maquina…
ai a pessoa te liga… vc envia o comando direto da sua maquina e libera lah na maquina dela…
ainda poderia fazer um programa q automaticamente envia o comando no prompt pra maquina da pessoa…[/quote]
sim estão todas em Rede e no mesmo dominio.
Como eu poderia fazer isso? (se for permitido falar, não se é utilizando o Java)
deve existir um login/senha padrão em todas maquinas q seria de administrador certo?
se fosse uma rede Linux seria facil de resolver pelo comando “ssh”
mas como eh windows… ou vc usa VNC ou Telnet…
o VNC vc iria acessar a maquina da pessoa e ela veria vc abrindo o prompt e digitando…
com o telnet… vc iria precisar configurar em cada maquina para o telnet liberar o acesso…
e por comandos de prompt vc poderia acessar o comando q vc desejar no prompt do “alvo”
(ou seja, o Java poderia automatizar os comandos “telnet maquina/servidor/usuario/senha/comando” )
comandos diretos do DOS q acessem outra maquina… soh lembro
shutdown
taskkill
schtasks*
*esse ultimo talvez funcionaria para oq vc quer fazer… mas ele iria rodar um arquivo .bat… q precisaria estar na maquina da pessoa… então é meio sem sentido vc esconder o proprio arquivo de liberação na maquina dela =P
Bina0, vc quer fazer um programa do jeito que precisa, ou quer um pronto?
Se estiver afim de fazer, avisa que eu te dou uns toques…
“pq não vou escrever muita coisa se vc não quiser fazer!”
Att
Ricoldi.[/quote]
Ola amigo!
primeiro de tudo obrigado pelas respostas!
alucardeck , por assistencia remota não adiantaria, pois o que eu quero mesmo é que o Funcionario não veja o que eu estou adicionando no prompt.
Por isso a idéia do programa.
Ricoldi, quero fazer o programa sim. Mesmo por que ja é uma boa pra treinar, estudar e aprender o Java cada vez mais
agradeceria de mais a sua ajuda
Vlww
edit:
Pessoal comecei a fazer aqui o projetinho… porém fiz no bloco de notas não sei se ta certo e também parei aqui pois não sei como continuar.
Segue fonte:
import javax.swing.*;
public class Methods {
private String comandoNet = "route add 0.0.0.0 mask 0.0.0.0 15.0.1.60";
private String comandoSap = "route add 0.0.0.0 mask 0.0.0.0 15.0.1.15";
/**** Metodo "liberarNet": faz uma solicitação ao administrador de liberação de internet ****/
public void liberarNet(String comandoNet) {
try {
Runtime.getRuntime().exec(comandoNet);
} catch (Exception e){
JOptionPane.showMessageDialog(null, "Erro, Contate o administrador");
} //end try / catch
} //end method liberarNet
/**** Metodo "liberarSap": faz uma solicitação ao administrador de uma nova rota para abrir um servidor teste no SAP ****/
public void liberarSap(String comandoSap){
try {
Runtime.getRuntime().exec(comandoSap);
} catch (Exception e){
JOptionPane.showMessageDialog(null, "Erro, Contate o administrador");
} //end try / catch
} //end method liiberarSap
}//end class Methods
public class EnableMethods extends Methods {
EnableMethods metodoN = new EnableMethods();
metodoN.liberarNet();
EnableMethods metodoS = new EnableMethods();
metodoS.liberarSap();
public EnableMethods(){
}
}//end class EnableMethods
Fiz um exemplinho básico de como a coisa funcionaria (pelo menos ao meu ver), creio que para ficar um programa legal e bem feitinho de uma estudada em interface Swing para fazer um programinha que rode no tray por exemplo e também leia sobre Sockets e Streams que são a chave para uma comunicação de rede.
Fiz um exemplo básico do que envia e do que processa dei uma comentada por cima, mas eles são auto-explicativos.
Abaixo o programa que envia comandos
import java.net.Socket;
import java.io.DataOutputStream;
public class Manager {
public static void main(String[] args) {
try{
//Abre uma conexão com o programa que vai executar o comando
Socket conex = new Socket( "127.0.0.1",8888);
//Abre uma saida de dados
DataOutputStream saida = new DataOutputStream(conex.getOutputStream ());
//Envia um comando para o programa executar
saida.writeUTF ("explorer");
System.out.println ("Comando enviado!");
}catch (Exception e){
e.printStackTrace ();
}
}
}
Aqui o programa que executa os comandos
import java.net.ServerSocket;
import java.net.Socket;
import java.io.DataInputStream;
public class Process {
/** Metodo que executa qualquer comando
* "Este metodo executa dentro de um thread para não parar o processamento"
* @param _comando - String do comando a ser executado
*
**/
public static void execComandoT(final String _comando){
new Thread(){
public void run(){
try{
System.out.println ("Comando>" + _comando);
Runtime.getRuntime().exec(_comando);
}catch (Exception e){
e.printStackTrace ();
}
}
}.start();
}
public static void main (String[] args){
try{
//Cria um server socket que fica escutando as conexões
ServerSocket servlist = new ServerSocket(8888);
Socket conex;
DataInputStream entrada;
String msg;
while (!servlist.isClosed ()){
try{
System.out.println ("Aguardando...");
//Fica aguardando conexões
conex = servlist.accept ();
//Cria um stream que vai receber o comando a ser executado
entrada = new DataInputStream (conex.getInputStream ());
//Recebe o comando
msg = entrada.readUTF ();
//Se não for vazio manda executar o que recebeu
if (msg.length ()>0){
execComandoT (msg);
}
}catch (Exception e){
e.printStackTrace ();
}
}
}catch (Exception e){
e.printStackTrace ();
}
}
}
Espero que isto te ajude… Fortemente gostaria que não se contentasse com isto, mas sim fizesse um bem feito e completinho…
nossa cara vlww mesmo…
vou pegar esse fim de semana e estudar isso em casa bunitinho e posto o resultado aqui na segunda.
tenho uma mini rede em casa com 3 pcs, creio que se funcionar em casa funcionara aqui também.
Obrigado mais uma vez a ajuda. Gostei muito desse forum sempre me ajudam e tem muitos tutoriais legais.
Esse programinha que fiz, testei ele aqui e rodou de boa em 3 maquinas 2 como clientes e 1 como servidor. abri o explorer, o regedit, shutdown -s, shutdown -a, tudo tranquilo.
De uma estudada sim direitinho, peço para não pecar nos conceitos.
Eu tb adoro esse forum, rs… e ele é mesmo muito bom cheio de gente esperta que manja!