Hi,
ich würde gerne mit einem java programm ein bash script ausführen.
Im endeffekt soll das script nur folgendes machen:
copy von a nach b.
Habe jetzt mal ein bisschen gegoogelt aber irgendwie konnte ich noch nicht finden wie man per java die bash steuert. Wäre da über kleine Hinweise dankbar.:shock:
Habe an dieser Stelle dann doch noch ein kleines Problem und komme der Sache nicht auf die Schliche:
Also ich habe jetzt einen Befehl in das java Programm eingebettet der mach folgendes:
Beim ausführen mit zweiter Option bekomme ich zwar keine Fehlermeldung aber die files im gegebenen Ordner werden auch nicht gelöscht. Wenn ich den Befehl über die Kommandozeile ausführe werden die files aber schon gelöscht, nur über Java funktionierts nicht.
Ist zwar nur ein Optionaler Teil der faulen Menschen bei der Arbeit helfen soll aber finds etwas komisch dass dieser part nicht funktioniert.
Kennt da jemand vielleicht eine Lösung?
Der Übersicht halber nochmal der ganze code:
Code:
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Random;
import java.sql.*;
public class Uploader {
public static String generatePassword() {
// Generate an 8 digit password
StringBuilder password = new StringBuilder("");
for (int i = 0; i < 8; i++) {
Random randomizer = new Random();
int value = randomizer.nextInt(92) + 33;
char ch = (char) value;
password.append(ch);
}
return password.toString();
}
public static void main(String[] args) throws SQLException {
String directory = "/home/uploadfiles";
Runtime shell = Runtime.getRuntime();
Process prozess = null;
if (args[0].equals("clean")) {
// Delete all elements of the database
Connection cn = null;
Statement st = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
cn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/upload", "uploader",
"passwort");
st = cn.createStatement();
} catch (Throwable t) {
t.printStackTrace();
}
String truncateStatement = "TRUNCATE TABLE filelist;";
st.execute(truncateStatement);
// Delete all files in the upload directory
String cmd = "rm /home/uploadfiles/*";
// System.out.println(cmd);
try {
prozess = shell.exec(cmd);
} catch (IOException ioe) {
System.out.println("Cant delete the files");
}
System.out.println("\nAlle upload-files wurden gelöscht!\n");
} else {
// Else-Case:Normal Upload modus
// Copy file from current directory into upload-directory
File file = new File(args[0]);
String fileName = file.getName();
//System.out.println(fileName);
String cmd = "cp " + args[0] + " " + directory;
// System.out.println(cmd);
try {
prozess = shell.exec(cmd);
} catch (IOException ioe) {
}
// Generate an 8 digit password
String password = generatePassword();
//System.out.println(password);
// Fill DB with password and FileName
Connection cn = null;
Statement st = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
cn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/upload", "uploader",
"passwort");
st = cn.createStatement();
} catch (Throwable t) {
t.printStackTrace();
}
String insertStatement = "INSERT INTO filelist(filename,password) VALUES ('"
+ fileName + "','" + password + "');";
st.execute(insertStatement);
System.out.println("\nDie file \""+fileName+ "\" wurde hochgeladen und kann mit dem Passwort \""+password+"\" unter \"http://IP/uploader/upload.php\" heruntergeladen werden.\n");
}
}
}