[Risolto] Eseguire uno shell script

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
biomaucal
Prode Principiante
Messaggi: 8
Iscrizione: sabato 23 ottobre 2010, 17:00

[Risolto] Eseguire uno shell script

Messaggio da biomaucal »

Ho letto un paio di discussioni sul forum ma non ho trovato nulla che risolvesse il mio problema. Devo lanciare un file .sh dando comando java. Questo .sh cattura i dati sulla porta usb e li mette in un file txt. Ora, quando lancio da terminale ubuntu "sudo ./file.sh" tutto funziona, il file txt si crea e viene caricato di dati. Quando lo lancio con codice Java, usando il comando:
try
{
Runtime.getRuntime().exec("/bin/bash ./file.sh");
System.out.println("Script successfully launched");
}
catch(IOException e) {
e.printStackTrace();
}
Si crea il file txt e poi non succede più nulla come se lo script si fermasse. Come posso risolvere?
Ultima modifica di biomaucal il sabato 7 maggio 2016, 16:57, modificato 1 volta in totale.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] Eseguire uno shell script

Messaggio da Zoff »

Lancia il comando java con sudo
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
biomaucal
Prode Principiante
Messaggi: 8
Iscrizione: sabato 23 ottobre 2010, 17:00

Re: [JAVA] Eseguire uno shell script

Messaggio da biomaucal »

Provato in questi modi
Runtime.getRuntime().exec("/bin/bash sudo ./file.sh");
Runtime.getRuntime().exec("sudo /bin/bash ./file.sh");
Ma non funziona
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] Eseguire uno shell script

Messaggio da Zoff »

io intendevo:

Codice: Seleziona tutto

sudo java ClassDaLanciare
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
biomaucal
Prode Principiante
Messaggi: 8
Iscrizione: sabato 23 ottobre 2010, 17:00

Re: [JAVA] Eseguire uno shell script

Messaggio da biomaucal »

Niente, non funziona.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] Eseguire uno shell script

Messaggio da Zoff »

Prova:

Codice: Seleziona tutto

Runtime.getRuntime().exec(new String[]{"/bin/bash","file.sh"});
file.sh deve essere nella stessa cartella da cui esegui il comando
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
biomaucal
Prode Principiante
Messaggi: 8
Iscrizione: sabato 23 ottobre 2010, 17:00

Re: [JAVA] Eseguire uno shell script

Messaggio da biomaucal »

In pratica lo script si avvia e il programma funziona regolarmente solo se avvio eclipse da terminale come amministratore. Non posso risolvere in nessun modo questa cosa? non posso farlo diventare durante l'esecuzione amministratore?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [JAVA] Eseguire uno shell script

Messaggio da Zoff »

In teoria se funziona con eclipse avviato da amministratore dovrebbe andare avviando direttamente con sudo (con lo stesso comando usato da eclipse)

Per farlo diventare amministratore dovresti inserire la password.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
biomaucal
Prode Principiante
Messaggi: 8
Iscrizione: sabato 23 ottobre 2010, 17:00

Re: [JAVA] Eseguire uno shell script

Messaggio da biomaucal »

Ho risolto in questo modo:

Public class RxTx {
public static void main(String[] args) throws IOException {
System.out.println("Run the script to read a stream");
String[] cmd = {"/bin/bash","-c","echo \"sudo\"| sudo -S /..path../script.sh"};
Process pb = Runtime.getRuntime().exec(cmd);
String line;
BufferedReader input = new BufferedReader(new InputStreamReader(pb.getInputStream()));
while ((line = input.readLine()) == null) {
System.out.println("No input stream");
break;
}
input.close();
try {
System.out.println("Waiting 2 minutes...");
Ora, se il terminale usb non è connesso,entra nel while e il programma completa la sua esecuzione.
Se invece la usb è connessa, il file.txt si scrive e si riempie.
Ora, come faccio a interrompere, dopo un certo tempo l'esecuzione dello script(quindi bloccare Runtime.getRuntime) e passare a try?
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti