Versuch zum zweiten, den irgendwie fehlt mein tread!
Ich will eine Install-GUI für Programm unter Linux erstellen.
Dazu würde ich gerne am anfang das root password abfragen und dann dieses z.B. für den sudo Befehl benutzen
Hier mal ein Bsp das nicht geht:
Wenn ich es so ausführe dann warte das Prog. vermutlich auf die PW eingabe.
So geht es, ich kann natürlich das ganze gleich als root user ausführen aber schöner währe es wenn ich im Prog. den user wechseln könnte oder den sudo Befehl ausführe könnte.
Ich will eine Install-GUI für Programm unter Linux erstellen.
Dazu würde ich gerne am anfang das root password abfragen und dann dieses z.B. für den sudo Befehl benutzen
Hier mal ein Bsp das nicht geht:
Code:
package base_start;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Prozess {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ProcessBuilder befehl3 = new ProcessBuilder("sudo", "password", "ls", "-al");
//Verzeichnis wechseln
befehl3.directory(new File("/tmp"));
Process p3;
try {
//Befehl ausführen
p3 = befehl3.start();
try {
p3.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (p3.exitValue() == 0)
System.out.println("success");
else
System.out.println("no success");
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
ProcessBuilder befehl2 = new ProcessBuilder("rm", "-R", "test");
//Verzeichnis wechseln
befehl2.directory(new File("/tmp"));
Process p2;
try {
//Befehl ausführen
p2 = befehl2.start();
try {
p2.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (p2.exitValue() == 0)
System.out.println("success");
else
System.out.println("no success");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
ProcessBuilder befehl1 = new ProcessBuilder("/bin/ls", "-al");
//Verzeichnis wechseln
befehl1.directory(new File("/tmp"));
try {
//Befehl ausführen
Process p1 = befehl1.start();
Scanner sc = new Scanner(p1.getInputStream());
while(sc.hasNextLine()){
System.out.println(sc.nextLine());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Wenn ich es so ausführe dann warte das Prog. vermutlich auf die PW eingabe.
Code:
ackage base_start;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Prozess {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ProcessBuilder befehl3 = new ProcessBuilder("ls", "-al");
//Verzeichnis wechseln
befehl3.directory(new File("/tmp"));
Process p3;
try {
//Befehl ausführen
p3 = befehl3.start();
try {
p3.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (p3.exitValue() == 0)
System.out.println("success");
else
System.out.println("no success");
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
ProcessBuilder befehl2 = new ProcessBuilder("rm", "-R", "test");
//Verzeichnis wechseln
befehl2.directory(new File("/tmp"));
Process p2;
try {
//Befehl ausführen
p2 = befehl2.start();
try {
p2.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (p2.exitValue() == 0)
System.out.println("success");
else
System.out.println("no success");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
ProcessBuilder befehl1 = new ProcessBuilder("/bin/ls", "-al");
//Verzeichnis wechseln
befehl1.directory(new File("/tmp"));
try {
//Befehl ausführen
Process p1 = befehl1.start();
Scanner sc = new Scanner(p1.getInputStream());
while(sc.hasNextLine()){
System.out.println(sc.nextLine());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
So geht es, ich kann natürlich das ganze gleich als root user ausführen aber schöner währe es wenn ich im Prog. den user wechseln könnte oder den sudo Befehl ausführe könnte.