PDA

View Full Version : سوال: نصب یه نرم افزار



tanzadeh7
دوشنبه 10 شهریور 1393, 11:46 صبح
سلام دوستان من تاه شروع به یاد گیری جاوا کردم و می خوام یک نرم افزار لینوکس بسازم دسترسی به روت داشته باشه تا بتونه یه نرم افزار دیگه رو نصب کنه چجوری باید این کار رو انجام بدم
من از این کد ها استفاده کردم ولی کار نمی کنند چون sudo یه نرم افزار گرافیکی نیست که رمز درخواست کنه. یه سوال دیگه هم دارم آن هم اینه که چجوری خروجی نرم افزار dpkg رو توی یک jTextArea نمایش بدم که بفهمم خطا داده یا خیر


try {
Process p = Runtime.getRuntime().exec("sudo dpkg -i " + jTextField1.getText());
} catch (IOException ex) {
System.out.println(ex);
}

tanzadeh7
دوشنبه 10 شهریور 1393, 15:41 عصر
کسی نمی خواد جواب ما رو بده

ahmad.mo74
دوشنبه 10 شهریور 1393, 18:39 عصر
سلام، فکر نمیکنم بشه بعضی دستورات مثل cd و sudo و... رو اینجوری اجرا کرد و طبیعی هم هست چون executable نیستن...به جاش دستورات رو به صورت shell بنویسید و در فولدر پروژه قرار بدید و بعد اونو اجرا کنید مثلا:

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Scanner;


/**
* @author avb
*/
public class Main {


private static final String SHELL;


static {
SHELL = "shell";
try {
Path path = Paths.get(SHELL);
if (Files.notExists(path)) {
Files.createFile(path);
}
Runtime.getRuntime().exec("chmod a+x " + SHELL);
} catch (IOException e) {
e.printStackTrace();
}
}


public static void main(String[] args) {
System.out.println("type your commands :");
try (Scanner scanner = new Scanner(System.in)) {
while (scanner.hasNextLine()) {
executeCmd(scanner.nextLine());
}
}
}


private static void executeCmd(String cmd) {
try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(SHELL, false)))) {
writer.write(cmd);
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
try {
Process process = Runtime.getRuntime().exec("./" + SHELL);
try (Scanner scanner = new Scanner(process.getInputStream())) {
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
}
} catch (IOException e) {
System.out.println("bad command!");
}
}


}