Autore Topic: [RISOLTO] Input ed Output del testo dal terminale.  (Letto 362 volte)

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
[RISOLTO] Input ed Output del testo dal terminale.
« il: 22 Novembre 2016, 22:04:31 »
Ho fatto una piccola interfaccia per eseguire dei comandi da terminale utilizzando, ad esempio, il seguente codice:

Codice: [Seleziona]
 Shell "/usr/bin/x-terminal-emulator -e su -c \"apt-get clean\" \"$user\" " 

Così facendo il terminale esegue il comando ma si chiude senza mostrarmi testo e risultato.

Come lo modifico per trasmettere tutto quello che viene automaticamente scritto nel terminale, in una Form con un TextBox.

Grazie Andrea
« Ultima modifica: 23 Novembre 2016, 16:15:38 da ilfurlan »
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Input ed Output del testo dal terminale.
« Risposta #1 il: 22 Novembre 2016, 23:47:09 »
Innanzitutto volevo domandarti se è assolutamente necessario aprire un Terminale, invece che gestire il resto di quella riga semplicemente e solamente con il comando Shell.

Inoltre volevo chiederti se puoi utilizzare una riga di comando meno impegnativa, più agevole, più tranquilla - diciamo - da testare.
« Ultima modifica: 22 Novembre 2016, 23:55:28 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:Input ed Output del testo dal terminale.
« Risposta #2 il: 23 Novembre 2016, 13:56:14 »
Il meglio, per me sarebbe integrare "o riprodurre" il terminale in un Form, al quale, poi inviare dei comandi.
Sono due giorni che cerco spiegazioni in merito ma non le ho trovate o non sono stato capace di trovarle.
Per capirci ho scritto un programmino per le operazioni di manutenzione e pulizia del sistema... funziona ma non sono soddisfatto,
anche perchè poi vorrei metterlo a disposizione di tutti.
« Ultima modifica: 23 Novembre 2016, 13:57:04 da ilfurlan »
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Input ed Output del testo dal terminale.
« Risposta #3 il: 23 Novembre 2016, 15:31:00 »
Come è comprensibile, lanciare da Shell un Terminale, al quale far eseguire un comando, di cui raccogliere il risultato o quanto esso comunica durante l'operazione,  ...diventa molto complesso.

Il meglio, per me sarebbe integrare "o riprodurre" il terminale in un Form, al quale, poi inviare dei comandi.
Esiste il Componente gb.form.terminal che -credo - faccia il caso tuo:

http://gambaswiki.org/wiki/comp/gb.form.terminal

che però sembra esista solo (ma va oggi verificato) nella versione Trunk di Gambas:
https://www.gambas-es.org/show_post.php?p=33616


Ad ogni modo il comando Shell, da te usato, compie quanto solitamente si effettua in Terminale.  :-\
Il verbose dei comandi, il loro risultato può essere raccolto mediante le risorse dell'oggetto Process .
« Ultima modifica: 23 Novembre 2016, 15:36:23 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:Input ed Output del testo dal terminale.
« Risposta #4 il: 23 Novembre 2016, 16:14:53 »
Grazie per le indicazioni, con calma mi documento.....

 :-[ intanto, quello che volevo sono riuscito a farlo così:

Codice: [Seleziona]
Public Sub Button1_Click()

   Dim risultato As String
   Shell "gksu apt-get update" To risultato
   TextArea1.Text = risultato

End
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Input ed Output del testo dal terminale.
« Risposta #5 il: 23 Novembre 2016, 16:40:33 »
intanto, quello che volevo sono riuscito a farlo così:

Ottima soluzione.
Come ti dicevo nel mio primo messaggio, se non è proprio necessario mostrare una finestra di Terminale, il solo comando Shell è bastevole.


E' opportuno ricordare che in via generale l'uso di Shell "...." To variabile_stringa va bene nel caso il comando lanciato restitusca immediatamente una stringa di caratteri.
Nel caso in cui il comando restituisca stringhe di testo in più fasi (imagina ad esempio quando si installa un programma), per poter raccoglierle tutte, è necessario - come già detto sopra - gestire quell'operazione mediante una variabile di tipo Process, ponendo in osservazione l'evento di lettura dei dati dal flusso del processo.
« Ultima modifica: 23 Novembre 2016, 17:04:46 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:Input ed Output del testo dal terminale.
« Risposta #6 il: 23 Novembre 2016, 17:23:58 »
Citazione
E' opportuno ricordare che in via generale l'uso di Shell "...." To variabile_stringa va bene nel caso il comando lanciato restitusca immediatamente una stringa di caratteri.
Nel caso in cui il comando restituisca stringhe di testo in più fasi (imagina ad esempio quando si installa un programma), per poter raccoglierle tutte, è necessario - come già detto sopra - gestire quell'operazione mediante una variabile di tipo Process, ponendo in osservazione l'evento di lettura dei dati dal flusso del processo.

Questo è molto interessante, devo rivedere e ristudiare le variabili Process, non ci avevo pensato....

 :ok: Grazie mille per le dritte.
« Ultima modifica: 23 Novembre 2016, 17:24:54 da ilfurlan »
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:[RISOLTO] Input ed Output del testo dal terminale.
« Risposta #7 il: 23 Novembre 2016, 17:34:50 »
Ciao ilfurlan, benvenuto nel forum!
 :ciao: :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Input ed Output del testo dal terminale.
« Risposta #8 il: 23 Novembre 2016, 17:52:40 »
devo rivedere e ristudiare le variabili Process

Fra l'altro ti segnalo la sezione della nostra WIKI sulla gestione dell'oggetto Process:

http://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0#Gestione_dei_processi
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:[RISOLTO] Input ed Output del testo dal terminale.
« Risposta #9 il: 23 Novembre 2016, 21:28:05 »
Ciao ilfurlan, benvenuto nel forum!
 :ciao: :ciao:

Grazie mille Kicco  :ciao:
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:Input ed Output del testo dal terminale.
« Risposta #10 il: 23 Novembre 2016, 21:31:18 »

Fra l'altro ti segnalo la sezione della nostra WIKI sulla gestione dell'oggetto Process:

http://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0#Gestione_dei_processi

La vostra wiki è sempre aperta sul mio computer  :ok:
Non insegno ma imparo per riportare ad altri il mio sapere.