2017-04-20 2 views
-1

Ich möchte CPU Ram freien Speicherplatz mit Java für viele Server jede Idee bekommen.CPU-RAM und freier Speicherplatz für Remote-Server Java

+0

Was haben Sie bisher versucht? – dunni

+0

Was hast du probiert und womit hast du Probleme? Ich schlage vor, dass Sie ein Tool verwenden, das das für Sie bereits tut, das Sie mit Google erforschen können. –

+0

ich probierte Prozess c = Runtime.getRuntime(). Exec (commande); aber ich habe system inf für meine lokale Maschine ich wich ich habe ram cpu für andere Server – oulaya

Antwort

0

Ich bin nur ein Auszubildender, aber meine Lösung wäre, einen Server-Socket zu schreiben und auf den Servern laufen zu lassen. Öffnen Sie dann eine Verbindung über einen Client-Socket und fragen Sie nach Informationen.

Als ich würde simplem das benutzte Mb zurückgeben oder es einfach zu einem% Wert umwandeln.

Ich würde sowieso lieber eine bestehende und getestete Lösung verwenden.

EDIT:

hier ein Tutorial, wie Sie Ihre frei zu bekommen, Max und Gebraucht RAM. http://crunchify.com/java-runtime-get-free-used-and-total-memory-in-java/

EDIT2: Hier ist der Code meiner Idear:

Server-Teil:

public static void main(String[] args) { 
    try { 
     ServerSocket sSocket = new ServerSocket(6969); 
     Socket socket = sSocket.accept(); 
     DataInputStream dis = new DataInputStream(socket.getInputStream()); 
     DataOutputStream dout = new DataOutputStream(socket.getOutputStream()); 


     String str1 = ""; 

     //Add Varaibles you want to return 
     double ram = 15.0; 

     while (!str1.equals("stop")) { 
      str1=dis.readUTF(); 

      //Return Value you need by param 
      if (str1.equals("getRam")) { 
       //Add Your calculation here 
       dout.writeUTF(String.valueOf(ram)); 
       dout.flush(); 
      } 
      else if(str1.equals("stop")){ 
       dout.writeUTF("stop"); 
       dout.flush(); 
      } 
      else { 
       dout.writeUTF("Unknown Command"); 
       dout.flush(); 
      } 


     } 
     sSocket.close(); 
     socket.close(); 
     dis.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 


    } 
} 

Client-Teil:

public class Main { 


    public static void main(String[] args) { 
     try { 
      String serverIp = "localhost"; 
      Socket socket = new Socket(serverIp, 6969); 
      DataInputStream dIn = new DataInputStream(socket.getInputStream()); 
      DataOutputStream dOut= new DataOutputStream(socket.getOutputStream()); 
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

      String str = ""; 
      String str2 = ""; 


       dOut.writeUTF("getRam"); 

       //for manual param transmitting 
       //str = br.readLine(); 
       //dOut.writeUTF(str); 
       dOut.flush(); 
       str2=dIn.readUTF(); 
       System.out.println("Server response:" + str2); 
       br.readLine(); 



     } catch (UnknownHostException e) { 
      e.printStackTrace(); 
      System.out.println(e); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      System.out.println(e); 

     } 

    } 

} 

Ich hoffe, dass Ihnen hilft. Wie auch immer, ich denke nicht, dass Sie Daten ohne Verbindung oder eine Verbindung zu Ihrem Server erhalten können.

+0

Danke, aber das Problem ist, ich möchte einen einfachen Code native, weil ich Junit nach meinem Test verwenden werde – oulaya

+0

Aber was ist Ihre Verbindung zum Server? – Ice

1

Nun je nach Zielplattform gibt es mehrere Möglichkeiten:

  • haben Java-Clients auf jedem System ausgeführt werden, die diese Informationen auf Anfrage sammeln und haben dann einen Server, sammeln und anzeigen alle diese Informationen. Dies ist die plattformunabhängigste Lösung, aber Sie müssen Client und Server schreiben und Clients auf jedem System installieren.
  • Wenn SSH auf Plattformen unterstützt wird, können Sie sich mit einem Java-Programm bei jedem System anmelden und Befehlszeilenprogramme zum Abfragen von Ressourcen verwenden. Dies erfordert jedoch entweder Anmeldeinformationen für jedes System oder die verfügbaren SSH-Schlüssel.
  • Verwenden Sie NET-SNMP auf Zielplattformen, wenn dies unterstützt wird, und aktivieren Sie die Ressourcenerfassung. Das Java-Programm kann dann den SNMP-Agenten abfragen, um die Ressourcennutzung zu erfassen. Sie benötigen eine Bibliothek, um mit SNMP-Agenten zu kommunizieren. Sie können SNMP4J oder AdventNet für diesen Zweck verwenden.
+0

bitte können Sie mir ein Beispiel geben – oulaya

Verwandte Themen