IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Lancer un code java pour s'executer sur un serveur


Sujet :

Java

  1. #1
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut Lancer un code java pour s'executer sur un serveur
    Bonjour,
    j'ai une machine client et un serveur, ma machine fait des téléchargement depuis le serveur et genere des fichiers executable Wireshark(contenant les paquets echangés)

    Ce que je veux faire, c'est lors du lancement du téléchargement, c'est lancer un script qui s'excute sur le serveur qui fait le meme traitement, c'est a dire generer un fichier de trace...

    Donc est ce qu'il y'a une methode qui me permet d'executer un code java sur un serveur dsitant ?

    merci

  2. #2
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par marouene_ Voir le message
    Donc est ce qu'il y'a une methode qui me permet d'executer un code java sur un serveur dsitant ?
    euh non pas directement....

    généralement, on passe par une servlet pour faire ce genre de choses:

    exemple simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class MyServlet extends HttpServlet {
        private byte[] myWiresharkDocument = ...;
     
        public void doGet(HttpServletRequest req, HttpServletResponse resp) {
            resp.setContentType("application/wireshark"); // mettre le bon content type pr wireshark
            resp.setHeader("Content-disposition", "attachment; filename=\"" +"example.wireshark" +"\"");
            resp.getOutputStream().write(myWiresharkDocument);
     
            // faire le boulot qu'il faut en plus du download ici
        }
    }

  3. #3
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    Bon voici le code qui me permet de faire une capture du trafic( je n'utilise pas wireshark enfet )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    package marouene;
     import java.io.File;  
    import java.io.InterruptedIOException;
     import java.nio.ByteBuffer;  
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
     import java.util.ArrayList;  
    import java.util.Calendar;
    import java.util.Date;
     import java.util.List;  
     
     import java.io.IOException;
     
     import org.jnetpcap.Pcap;  
     import org.jnetpcap.PcapDumper;  
     import org.jnetpcap.PcapHandler;  
    import org.jnetpcap.PcapIf;  
     
     
     public class capture extends Thread {
     
    	 private boolean stopThread = false;
    	 public static final String DATE_FORMAT_NOW = "yyyyMMddHHmmss";  
     
    	 public synchronized void testFin() throws InterruptedException {
    	        if( stopThread ) {
    	                throw new InterruptedException();
     
    	        } 
    	} 
     
    	  public static String now() {  
    	         Calendar cal = Calendar.getInstance();  
    	        SimpleDateFormat df = new SimpleDateFormat(DATE_FORMAT_NOW);  
    	       return df.format(cal.getTime());  
    	    } 
     
    	  public void run () { 
     
     
    			  List<PcapIf> alldevs = new ArrayList<PcapIf>(); // Will be filled with NICs  
    			     StringBuilder errbuf = new StringBuilder();     // For any error msgs  
     
    			     /*************************************************************************** 
                                  * First get a list of devices on this system 
                                  **************************************************************************/  
    			     int r = Pcap.findAllDevs(alldevs, errbuf);  
    			     if (r == Pcap.NOT_OK || alldevs.isEmpty()) {  
    			       System.err.printf("Can't read list of devices, error is %s\n",   
    			         errbuf.toString());  
    			       return;  
    			     }  
    			     PcapIf device = alldevs.get(1); // We know we have atleast 1 device  
     
    			     /*************************************************************************** 
                                  * Second we open up the selected device 
                                  **************************************************************************/  
    			     int snaplen = 64 * 1024;           // Capture all packets, no trucation  
    			     int flags = Pcap.MODE_PROMISCUOUS; // capture all packets  
    			     int timeout = 1000;           
    			     final Pcap pcap = Pcap.openLive(device.getName(), snaplen, flags, timeout, errbuf);  
    			     if (pcap == null) {  
    			       System.err.printf("Error while opening device for capture: %s\n",   
    			         errbuf.toString());  
    			       return;  
    			     }  
     
    			     /*************************************************************************** 
                                  * Third we create a PcapDumper and associate it with the pcap capture 
                                  ***************************************************************************/  
    			     String ofile = "fichier du "+ now().toString() + ".pcap";  
    			     PcapDumper dumper = pcap.dumpOpen(ofile); // output file  
     
     
    			     /*************************************************************************** 
                                  * Fouth we create a packet handler which receives packets and tells the  
                                  * dumper to write those packets to its output file 
                                  **************************************************************************/  
    			     PcapHandler<PcapDumper> dumpHandler = new PcapHandler<PcapDumper>() {  
     
    			       public void nextPacket(PcapDumper dumper, long seconds, int useconds,  
    			         int caplen, int len, ByteBuffer buffer) {  
     
    			         dumper.dump(seconds, useconds, caplen, len, buffer);  
    			         if(stopThread){
    				    	 pcap.breakloop() ;
    				     }
    			       }  
    			     };  
     
     
    			     pcap.loop(Pcap.LOOP_INFINATE, dumpHandler, dumper);  
     
    			     File file = new File(ofile);  
     
     
     
         }  
    	  public  void arret() {
    	        this.stopThread = true;
    	} 
     
     
     
     
     
     }
    cette classe permet d'écouter le transfert effectué par la carte réseau et de sauvegarder les les paquets dans un fichier .pcap
    donc pour la lancer de mon coté (client) je fait :
    capture cc = new capture();
    cc.start()
    et pour l'arreter cc.arret();

    Pour le moment je teste avec un téléchargement Ftp, donc je lance un telechargement FTP, je lance en parallele la capture de mon coté, mais je veux la lancer aussi du coté serveur FTP distant ( j'ai la main sur le serveur )

  4. #4
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    ok c'est joli tout ça, mais ma réponse reste valable: non on me peut pas exécuter arbitrairement du code java à distance sans un minimum d'infrastructure, genre php, tomcat, etc.

    à moins de se logger en ssh et de lancer soi-même la commande "java marouene.*****", ce qui peut remplir le besoin si c'est juste du "one-shot" et que tu es en phase de dév.


  5. #5
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    ah non ca doit faire d'une facon périodique deja et automatique, dés que je click sur un bouton ( sur une page web ) pour télécharger, j'execute ma fonction java

  6. #6
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    donc: un langage côté serveur capable d'exécuter un process externe (php, asp, jsp, ...) + un jar exécutable de ton programme de dump, et juste avant de démarrer le transfert ftp (ou à chaque fois que tu veux dumper le trafic réseau), tu fais une requête sur le script chargé de lancer ton appli java.

    le seul souci étant de s'assurer que l'on peut lancer un process de manière asynchrone (sans attendre la fin de l'exécution)

  7. #7
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    je pense qu'on s'est pas bien compris, bon un petit view de l'apllication

    Donc un administrateur qui se connecte sur son pc, lance un telechargement FTP a partir du serveur d'application 1 vers le serveur FTP, en // une capture se lance coté serveur 1, ce que je dois faire en plus de ca, c'est lancer une autre capture de trafic qui s'execute chez le serveur 2 FTP ...

    Le but est enfaite de faire une comparaison entre les deux capture afin de voir les paquets corrompu ect.........

    tout d'abors je vais utiliser JSP/Servlet pour lancer l'application du coté serveur1.
    Aprés je pense si jpeux creer un fichier .bat ou un truc pareil qui me permet de me connecter au serveur FTP via Telnet/ssh et de lancer une commande Linux genre tcpdump ....... ou bien executer ma classe java que j'ai posté o debut...
    Je ne sais pas si je suis sur la bonne voie ou bien il y'a une autre alternative

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Code Java pour une connexion d'un serveur metadata SAS version 9.3
    Par RaniaDebutante dans le forum Outils BI
    Réponses: 1
    Dernier message: 29/03/2014, 10h19
  2. Réponses: 0
    Dernier message: 24/03/2014, 11h37
  3. code java pour service web sur netbeans
    Par edyyy dans le forum NetBeans
    Réponses: 2
    Dernier message: 09/04/2010, 12h55
  4. code java pour lancer un batch
    Par catherine* dans le forum Langage
    Réponses: 6
    Dernier message: 18/09/2007, 10h41
  5. code java pour récupérer la valeur d'un neoud XML
    Par MASSAKA dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 14/10/2005, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo