Java in Verbindung mit Shell (LFTP)

ChrizZel

Grünschnabel
Hallo Leute,

ich habe mal eine Frage vllt. kann mir jemand von euch helfen.
Und zwar schreibe ich grad an einem Plugin welches mir lediglich einen Wert zurück gibt, um genauer zu sein den genutzten Speicher auf meiner Festplatte/ Partition/Bereich.

Der Plan mit dem befehl:

echo du -sh . | lftp -u user,password user.your-backup.de

wird einem unter Linux sofern man lftp installiert hat der genutze Speicher zurück gegeben als wert z.B. 43 G. Nun ist mein Problem, dass er wenn ich

Code:
try {
           Process ausgabe = Runtime.getRuntime().exec("echo du -sh . | lftp -u "+user+","+password+" "+user+".your-backup.de");
            
            BufferedReader in = new BufferedReader(new InputStreamReader(ausgabe.getInputStream()));
            text = text+in.readLine();System.out.println(text);
        } catch (IOException ioe) {
          
            System.out.println("Unbekannter Befehl");
            System.exit(3);
        }

wenn ich nun aber das unter linux ausführe baut er mir den Befehl schon richtig zusammen mit den Variablen. Aber er führt den Befehl nicht aus. Er ignoriert das echo und dann hab ich versucht vor der pipe zu escapen ( \ | ) aber bei java ist ja nen backslash automatisch nen befehl.. sogar in nem String ... -.-

Nun meine frage vllt. kennt ja jemand von euch eine einfachere lösung einfach über Java den genutzten speicher auslesen zu lassen (von nem FTP).
 
Guten Abend.

Ich kenn mich leider nicht ganz so gut mit Shell aus aber in Java musst du wenn du einen \ als String nutzen willst eben diesen Escapen. Also würdest du statt "\ |" "\\ |" schreiben.

Probiers mal damit.

Gruß Mirar
 
Danke erst einmal, habe gestern auch schon versucht mit \\ er hat es dann auch übernommen, aber der befehl wurde trotzdem nicht ausgeführt.

Das Programm tut sonst alles was es tun soll, aber er führt den Befehl anscheinend auf der Shell einfach nicht aus. Ich habe mir auch schon den Befehl ausgeben lassen den er gebaut hat und 1:1 so in die shell kopiert und enter gedrückt. Und er liefert mir das gewünschte Ergebnis, Problem ist ja nur das ich das nicht immer per Hand machen will, das Script soll schließlich unsere BackUp Server in regelmäßigen Abständen prüfen.

Also ist es notwendig das er das von alleine macht. Ich habe schon von nem Kollegen den Tipp bekommen ich solle mich mit Python versuchen, aber jetzt extra eine neue Programmiersprache zu lernen..... -.-
 
Hi,

ich hab mich auch kürzlich mit der Script-aus-Java-Thematik befasst, allerdings mit Schwerpunkt Batch (also unter Windows).
Soweit ich weiß musst du die entsprechende Schell mit in den command aufnehmen.
Also so etwa:

JavaCode:
Java:
try {
	String[] command = {"/bin/bash", "echo du -sh . | lftp -u "+user+","+password+" "+user+".your-backup.de"};
	Process ausgabe = Runtime.getRuntime().exec(command);
	
	BufferedReader in = new BufferedReader(new InputStreamReader(ausgabe.getInputStream()));
		while((text=in.readLine())!=null){
			log.info(text);
		}
	} catch (IOException ioe) {
		System.out.println("Unbekannter Befehl");
        System.exit(3);
    }
}
 
würde ich auch lieber machen =) hab da nur keine Ahnung, also hatte mich bisher nicht mit beschäftigt. Sitze grad noch an ein paar anderen Sachen kam leider noch nicht dazu hier weiter zu machen.

Wenn du mir sagst wie ich das am besten mit der Java-FTP-Libary mache wäre ich dir sehr dankbar. D.h. wie funktioniert das mit dem Login oder mit dem ausgeben des genutzten Speichers.
 
Zurück