Gambas-it

Gambas3 => Programmazione => Topic aperto da: Andreone - 31 Luglio 2016, 09:21:00

Titolo: Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 31 Luglio 2016, 09:21:00
Buona giornata
Ho inserito in un form gambas un pulsante
Ora voglio che cliccando il pulsante si apre il terminale e viene avvia il comanda apt-get update e dopo apt-get upgrade
il problema è che prima cerca ovviamente la password per avviare apt-get update ma appena arriva a apt-get upgrade di nuovo mi ricerca la password cosa che non dovrebbe cercarla perchè lo inserita prima

  Shell "x-terminal-emulator -e sudo apt-get update && sudo apt-get upgrade" Wait
  Message.Info("Aggiornamento andato a buon fine!")

Come faccio in modo che esegue tutte e 2 i comandi e inserisco la password solo la prima volta ?
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 31 Luglio 2016, 16:31:16
Potresti provare l'alternativa presente in questo paragrafo della seguente pagina della nostra WIKI:

http://www.gambas-it.org/wiki/index.php?title=Inserire_le_password_per_lanciare_comandi#Uso_di_sudo
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 31 Luglio 2016, 16:54:44
Stesso problema, cerca la password quando esegue il comando apt-get upgrade cosa che non voglio che la cerca se l' ho inserita prima
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 31 Luglio 2016, 16:54:58
...intendo dire la seconda parte compresa nel sotto-paragrafo:
Senza far aprire la finestra del Terminale per l'inserimento della password
(in particolare vedi l'ultimo esempio del sotto-paragrafo)


Faccio qui un esempio semplicissimo con il quale si eliminerà (limitatamente alla corrente sessione) la protezione ad un paio di file-device:
Codice: [Seleziona]
Public Sub Button1_Click()

  Dim s As String

' Il programma resta in attesa che venga scritta nella console ed inviata la password dell'utente:   
    Input s
   
  Shell "echo " & s & " | sudo -S chmod 666 /dev/tty1 && sudo -S chmod 666 /dev/tty2" Wait

End
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 31 Luglio 2016, 16:57:42
Dovrebbe aprirsi il terminale ed quando si apre il terminale richiede la password da inserire e poi deve eseguire i comandi
apt-get update ed apt-get upgrade senza richiedere di nuovo la password
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 31 Luglio 2016, 17:03:41
Dovrebbe aprirsi il terminale ...
Dunque tu preferisci che il Terminale si debba aprire per inserire la password ?
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 31 Luglio 2016, 17:05:43
si, esattamente
aprirsi il terminale, inserire la password ed eseguire i comandi senza che poi richiede di nuovo la password
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 31 Luglio 2016, 17:09:44
si, esattamente
aprirsi il terminale, inserire la password ....

Capisco....

esisterebbe - in vero - una modalità nativa di Gambas per fare quello che vuoi, presente nella Classe Desktop, sfruttando in paricolare il suo metodo  .RunAsRoot( ) .

Si tratta di attivare i Componenti gb.desktop e gb.desktop.x11.

Puoi vedere una breve esposizione nel primo paragrafo della pagina della nostra WIKI che t'ho segnalato:
http://www.gambas-it.org/wiki/index.php?title=Inserire_le_password_per_lanciare_comandi#Utilizzo_della_funzione_Gambas:_Desktop.RunAsRoot


Provala, però credo ci sia attualmente un bug (dovrò segnalarlo a Minisini (http://forum.ubuntu-it.org/images/smilies/sisi.gif) ): a me da un errore.
Fammi sapere.


Ah.... devi tenere installato nel sistema il Terminale xterm  !
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 31 Luglio 2016, 17:17:14
Ho scritto il codice così

Dim S As String
S = InputBox("Immetti password di root")
Shell "echo " & s & " | sudo -S chmod 666 apt-get update && sudo -S chmod 666 apt-get upgrade" Wait

Ma non vedo quando finisce
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 31 Luglio 2016, 17:26:19
Ho scritto il codice così
........
Ma non vedo quando finisce

Uhmmm.... prova a gestire il processo di quel comando.

Ossia similmente a quanto ho mostrato in quest'altra discussione:
http://www.gambas-it.org/smf/index.php?topic=5038.msg38728#msg38728


Però forse non potrai usare il Wait !
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 31 Luglio 2016, 22:00:56
Messo questo codice
Dim S As String
S = InputBox("Immetti password di root")
  Shell "echo " & s & " | sudo -S apt-get update && sudo -S apt-get upgrade" Wait

Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 01 Agosto 2016, 01:52:54
Ho scritto il codice così

Shell "echo " & s & " | sudo -S chmod 666 apt-get update && sudo -S chmod 666 apt-get upgrade" Wait
Aspetta.... non mi ero accorto che c'è un errore nella riga di comando: chmod 666 e apt-get update, nonché chmod 666 e apt-get upgrade non hanno nessun significato stando insieme !    :danger:



Messo questo codice
Dim S As String
S = InputBox("Immetti password di root")
  Shell "echo " & s & " | sudo -S apt-get update && sudo -S apt-get upgrade" Wait
e.... funziona ?
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 01 Agosto 2016, 07:46:08
Funziona però mi interessa sapere come si fa a vedere il numero degli aggiornamenti disponibili da gambas ovviamente, ma a parte questo non sono riuscito a far visualizzare il terminale nel momento che fà gli update e l' upgrade
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 01 Agosto 2016, 10:32:23
come si fa a vedere il numero degli aggiornamenti disponibili da gambas ovviamente
Perdonami, ma non ho capito cosa vuoi dire.   :-\
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 01 Agosto 2016, 12:11:15
lo spiego
Allora voglio che appena lancio il programmino in gambas, gambas deve controllare se ci sono aggiornamenti linux e quante ce ne sono
se ci sono aggiornamenti si può aggiornare altrimenti niente, e mi interessa anche sapere se quando inserisco la password di root se si inserisce sbagliata non deve proseguire con i comando apt-get update e apt-get upgrade
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 01 Agosto 2016, 14:01:25
non sono riuscito a far visualizzare il terminale nel momento che fà gli update e l' upgrade
Io ritengo che innanzitutto tu debba verificare che si possano intercettare - come già detto - quei dati mediante la gestione del processo.
Per quanto riguarda il Terminale potresti forse anche utilizzare le risorse del Componente gb.form.terminal .
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 01 Agosto 2016, 16:09:04
non sono riuscito a far visualizzare il terminale nel momento che fà gli update e l' upgrade
Io ritengo che innanzitutto tu debba verificare che si possano intercettare - come già detto - quei dati mediante la gestione del processo.
Per quanto riguarda il Terminale potresti forse anche utilizzare le risorse del Componente gb.form.terminal .

E dove trovo questo componente gb.form.terminal ?
Appena avvio l' esempio GbTerminal 0.1.4 mi dice che il componente non c'è..........
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 01 Agosto 2016, 16:13:06
E dove trovo questo componente gb.form.terminal ?


Ogni Componente è attivabile dall'IDE di Gambas.

In alto a sinistra clicca sul menu:

Progetto--->Proprietà--->Componenti

quindi cercalo nella lista ed attivalo vergandolo.
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 01 Agosto 2016, 16:17:21
E dove trovo questo componente gb.form.terminal ?


Ogni Componente è attivabile dall'IDE di Gambas.

In alto a sinistra clicca sul menu:

Progetto--->Proprietà--->Componenti

quindi cercalo nella lista ed attivalo vergandolo.

ho visto ma manca il componente nella lista
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 01 Agosto 2016, 16:23:57
ho visto ma manca il componente nella lista
Credo che manchi nel tuo sistema (http://www.supercellfan.it/images/smilies/nuove/sisi.gif) una specifica libreria utilizzata da quel Componente.

Sarebbe necessario installarla.
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 01 Agosto 2016, 16:26:20
ho visto ma manca il componente nella lista
Credo che manchi nel tuo sistema (http://www.supercellfan.it/images/smilies/nuove/sisi.gif) una specifica libreria utilizzata da quel Componente.

Sarebbe necessario installarla.

E come si chiama esattamente questa libreria e vedo se c'è su synaptic ?
Su synaptic non c'è, bisogna vedere in qualè ppa c'è, io ho linux mint 18
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 01 Agosto 2016, 16:30:05

E come si chiama esattamente questa libreria e vedo se c'è su synaptic ?
Attualmente non lo so, poiché non ho mai usato quel Componente (però, da quel che sembra, dovremo tutti apprendere il funzionamento delle sue risorse).

Solitamente le librerie utilizzate da Gambas, sono indicate nel sito ufficiale:
http://gambas.sourceforge.net/en/main.html#
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 01 Agosto 2016, 16:33:44

E come si chiama esattamente questa libreria e vedo se c'è su synaptic ?
Attualmente non lo so, poiché non ho mai usato quel Componente (però, da quel che sembra, dovremo tutti apprendere il funzionamento delle sue risorse).

Solitamente le librerie utilizzate da Gambas, sono indicate nel sito ufficiale:
http://gambas.sourceforge.net/en/main.html#

Non riesco a trovarlo nemmeno io, c'è un' altro modo ?
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 01 Agosto 2016, 16:39:02
Non riesco a trovarlo nemmeno io, c'è un' altro modo ?

Probabilmente rimettere mano all'installazione di Gambas. Poiché, però, io utilizzo solo SVN/Trunk per l'installazione/aggiornamento di Gambas, lascerei ad altri - ad esempio Gianluigi (http://www.astronomia.com/forum/images/smilies/customsmilies/whistling.gif) - l'opinione al riguardo e gli eventuali utili suggerimenti sul da farsi. 
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 01 Agosto 2016, 16:43:44
Non riesco a trovarlo nemmeno io, c'è un' altro modo ?

Probabilmente rimettere mano all'installazione di Gambas. Poiché, però, io utilizzo solo SVN/Trunk per l'installazione/aggiornamento di Gambas, lascerei ad altri - ad esempio Gianluigi (http://www.astronomia.com/forum/images/smilies/customsmilies/whistling.gif) - l'opinione al riguardo e gli eventuali utili suggerimenti sul da farsi.

Ok
Io mi riferivo a:
Non se c'è altro modo per installare il componente ma come far visualizzare il terminale quando si lancia il comando apt-get update e apt-get upgrade da shell in modo che si vede quando finisce  sia l' update che l' upgrade........
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 01 Agosto 2016, 17:06:20
come far visualizzare il terminale quando si lancia il comando apt-get update e apt-get upgrade da shell in modo che si vede quando finisce  sia l' update che l' upgrade........
Il Terminale non è altro che un'interfaccia testuale. Gambas ti consente con la shell di avviare i comandi al di là del classico terminale.

La questione secondo me che si pone è:
1) vuoi far aprire da Gambas un classico Terminale e da lì far lanciare (sempre da Gambas) quei comandi  apt-get update e apt-get upgrade ?

2) vuoi lanciare con Shell da Gambas i due comandi apt-get update e apt-get upgrade e vedere i messaggi inviati da quei comandi (anche per capire quando finisce l'aggiornamento) all'interno di un Terminale che Gambas apre separatamente ?
In tal caso si pone la tosta questione di intercettare le stringhe che quei comandi inviano in modo verbose.
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 01 Agosto 2016, 17:55:36
come far visualizzare il terminale quando si lancia il comando apt-get update e apt-get upgrade da shell in modo che si vede quando finisce  sia l' update che l' upgrade........
Il Terminale non è altro che un'interfaccia testuale. Gambas ti consente con la shell di avviare i comandi al di là del classico terminale.

La questione secondo me che si pone è:
1) vuoi far aprire da Gambas un classico Terminale e da lì far lanciare (sempre da Gambas) quei comandi  apt-get update e apt-get upgrade ?

2) vuoi lanciare con Shell da Gambas i due comandi apt-get update e apt-get upgrade e vedere i messaggi inviati da quei comandi (anche per capire quando finisce l'aggiornamento) all'interno di un Terminale che Gambas apre separatamente ?
In tal caso si pone la tosta questione di intercettare le stringhe che quei comandi inviano in modo verbose.

1) Si
2) Si
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Gianluigi - 01 Agosto 2016, 20:02:49
Non riesco a trovarlo nemmeno io, c'è un' altro modo ?

Probabilmente rimettere mano all'installazione di Gambas. Poiché, però, io utilizzo solo SVN/Trunk per l'installazione/aggiornamento di Gambas, lascerei ad altri - ad esempio Gianluigi (http://www.astronomia.com/forum/images/smilies/customsmilies/whistling.gif) - l'opinione al riguardo e gli eventuali utili suggerimenti sul da farsi.

Non so che tipo di installazione ha fatto Andreone, se ha un sistema Ubuntu like posso dare una mano.

Le librerie che funzionano su Ubuntu 16.04 sono:
Codice: [Seleziona]
build-essential g++ automake autoconf libtool libbz2-dev libmysqlclient-dev unixodbc-dev libpq-dev postgresql-server-dev-9.5 libsqlite0-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libsage-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-glib-dev libpoppler-private-dev libasound2-dev libesd0-dev libdirectfb-dev libxtst-dev libffi-dev libqt4-dev libqtwebkit-dev libqt4-opengl-dev libglew1.6-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgnome-keyring-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl0-dev libncurses5-dev libgmime-2.6-dev llvm-3.5-dev libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 01 Agosto 2016, 20:38:48
Ho linux mint 18 a 64 bit
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Gianluigi - 01 Agosto 2016, 20:50:34
Si è compatibile, ma che tipo di installazione hai fatto?
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 01 Agosto 2016, 20:59:29
Da gestore applicazioni o selezionato i pacchetti di gambas 3, tutti
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Gianluigi - 01 Agosto 2016, 21:04:42
Da gestore applicazioni o selezionato i pacchetti di gambas 3, tutti

Fai questo:
Apri Gambas e clicchi sul punto interrogativo dal menu clicchi su System information e posti qui il risultato fra i cancelletti di code  ;D
 :ciao:
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 01 Agosto 2016, 21:08:24
Da gestore applicazioni o selezionato i pacchetti di gambas 3, tutti

Fai questo:
Apri Gambas e clicchi sul punto interrogativo dal menu clicchi su System information e posti qui il risultato fra i cancelletti di code  ;D
 :ciao:

Codice: [Seleziona]
[System]
Gambas=3.8.4
OperatingSystem=Linux
Kernel=4.4.0-31-generic
Architecture=x86_64
Distribution=Linux Mint 18 Sarah
Desktop=MATE
Theme=Gtk
Language=it_IT.UTF-8
Memory=3823M

[Libraries]
Cairo=libcairo.so.2.11400.6
Curl=libcurl.so.4.4.0
DBus=libdbus-1.so.3.14.6
GStreamer=libgstreamer-0.10.so.0.30.0
GStreamer=libgstreamer-1.0.so.0.802.0
GTK+2=libgtk-x11-2.0.so.0.2400.30
GTK+3=libgtk-3.so.0.1800.9
OpenGL=libGL.so.1.2.0
Poppler=libpoppler.so.58.0.0
QT4=libQtCore.so.4.8.7
QT5=libQt5Core.so.5.5.1
SDL=libSDL-1.2.so.0.11.4

[Environment]
CLUTTER_BACKEND=x11
COMPIZ_CONFIG_PROFILE=mate
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-Ex7JIEfCmq,guid=31710eff7b748b9c74920859579ed956
DEFAULTS_PATH=/usr/share/gconf/mate.default.path
DESKTOP_SESSION=mate
DISPLAY=:0
GB_GUI=gb.qt5
GDMSESSION=mate
GDM_XSERVER_LOCATION=local
GIO_LAUNCHED_DESKTOP_FILE=/usr/share/applications/gambas3.desktop
GIO_LAUNCHED_DESKTOP_FILE_PID=20583
GTK_MODULES=gail:atk-bridge
GTK_OVERLAY_SCROLLING=0
HOME=<home>
LANG=it_IT.UTF-8
LOGNAME=<user>
MANDATORY_PATH=/usr/share/gconf/mate.mandatory.path
MATE_DESKTOP_SESSION_ID=this-is-deprecated
MDMSESSION=mate
MDM_LANG=it_IT.UTF-8
MDM_XSERVER_LOCATION=local
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=<home>
QT_ACCESSIBILITY=1
QT_IM_MODULE=compose
QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
QT_STYLE_OVERRIDE=gtk
SESSION_MANAGER=local/<hostname>:@/tmp/.ICE-unix/3532,unix/<hostname>:/tmp/.ICE-unix/3532
SHELL=/bin/bash
SSH_AGENT_PID=3600
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
TZ=:/etc/localtime
USER=<user>
USERNAME=<user>
WINDOWPATH=7
XAUTHORITY=<home>/.Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-mate:/etc/xdg
XDG_CURRENT_DESKTOP=MATE
XDG_DATA_DIRS=/usr/share/mate:/usr/local/share/:/usr/share/:/usr/share/mdm/
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
XDG_SESSION_COOKIE=4603ef0b0eb640e2836974a04d12e5ab-1470028117.859652-1916993872
XDG_SESSION_DESKTOP=mate
XDG_SESSION_ID=c1
XDG_VTNR=7
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Gianluigi - 01 Agosto 2016, 21:21:48
Per quanto ne capisco sembrerebbe a posto, ma visto che non ha installato tutte le librerie, se te la senti puoi provare a disinstallare completamente Gambas e installare da SVN.
Se lo vuoi fare poi ti scrivo la procedura.
Cosa ne dici?
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 01 Agosto 2016, 21:49:29
1) Si
2) Si
  ???
Sarà che non sono riuscito io a spiegarmi, ma - se rileggi bene quanto avevo scritto - le due circostanze sono diverse: o segui una o segui l'altra.


Aggiungo che la mia proposta di utilizzare le risorse del Componente gb.form.terminal era determinata solo e semplicemente dal fatto che prooobabilmente potresti trovarti più agevolato nel gestire il tutto con il simil-Terminale messo a disposizione da quel Componente.

Circa l'assenza da te segnalata del Componente gb.form.terminal nel tuo sistema, ho posto la questione nel forum spagnolo:
https://www.gambas-es.org/viewtopic.php?f=2&t=5687

come puoi vedere è stato risposto che quel Componente - attualmente - è presente soltanto nella versione scaricata via SVN (come faccio io).


Torno - comunque - a ribadire che devi anche affrontare il problema di come intercettare i dati testuali povenienti dal processo in atto dei due comandi che tu vuoi utilizzare con Shell per l'aggiornamento !!!
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Gianluigi - 01 Agosto 2016, 21:56:22
Andreone,
se leggi bene quanto avevo scritto anche io  :P ti avevo detto di inserire il risultato fra i cancelletti puoi per favore farlo.
Cerchiamo di essere precisi, tutti, a partire dal sottoscritto.
Denghiu
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 01 Agosto 2016, 23:46:08
(http://www.astronomia.com/forum/images/smilies/customsmilies/whistling.gif)
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 02 Agosto 2016, 07:14:37
Andreone,
se leggi bene quanto avevo scritto anche io  :P ti avevo detto di inserire il risultato fra i cancelletti puoi per favore farlo.
Cerchiamo di essere precisi, tutti, a partire dal sottoscritto.
Denghiu

Quali sono questi cancelletti
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 02 Agosto 2016, 10:03:29
1) Si
2) Si
  ???
Sarà che non sono riuscito io a spiegarmi, ma - se rileggi bene quanto avevo scritto - le due circostanze sono diverse: o segui una o segui l'altra.


Aggiungo che la mia proposta di utilizzare le risorse del Componente gb.form.terminal era determinata solo e semplicemente dal fatto che prooobabilmente potresti trovarti più agevolato nel gestire il tutto con il simil-Terminale messo a disposizione da quel Componente.

Circa l'assenza da te segnalata del Componente gb.form.terminal nel tuo sistema, ho posto la questione nel forum spagnolo:
https://www.gambas-es.org/viewtopic.php?f=2&t=5687

come puoi vedere è stato risposto che quel Componente - attualmente - è presente soltanto nella versione scaricata via SVN (come faccio io).


Torno - comunque - a ribadire che devi anche affrontare il problema di come intercettare i dati testuali povenienti dal processo in atto dei due comandi che tu vuoi utilizzare con Shell per l'aggiornamento !!!

Codice: [Seleziona]
Dim S As String
Dim prova As String
S = InputBox("Immetti password di root")
  prova = Shell "echo " & S & " | sudo -S apt-get update && sudo -S apt-get upgrade" For Write
 Label2.text = prova

C'è qualche cosa che non và
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Gianluigi - 02 Agosto 2016, 11:55:19
Andreone,
se leggi bene quanto avevo scritto anche io  :P ti avevo detto di inserire il risultato fra i cancelletti puoi per favore farlo.
Cerchiamo di essere precisi, tutti, a partire dal sottoscritto.
Denghiu

Quali sono questi cancelletti

Dove digiti questi post hai a disposizione diversi pulsanti per formattare il tuo scritto, fra questi il tasto cancelletto (https://it.wikipedia.org/wiki/Cancelletto) che serve per postare il codice (e altro).
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 02 Agosto 2016, 12:14:21
Andreone,
se leggi bene quanto avevo scritto anche io  :P ti avevo detto di inserire il risultato fra i cancelletti puoi per favore farlo.
Cerchiamo di essere precisi, tutti, a partire dal sottoscritto.
Denghiu

Quali sono questi cancelletti

Ok, sarà la prossima volta

Dove digiti questi post hai a disposizione diversi pulsanti per formattare il tuo scritto, fra questi il tasto cancelletto (https://it.wikipedia.org/wiki/Cancelletto) che serve per postare il codice (e altro).
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Gianluigi - 02 Agosto 2016, 13:58:16
Non puoi andare su modifica e cambiarli?
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 02 Agosto 2016, 14:08:30
Non puoi andare su modifica e cambiarli?

Ma se non te ne sei ancora accorto già ho fatto tutto, ho di sopra posto il codice con il problema
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 02 Agosto 2016, 14:56:54
Codice: [Seleziona]
Dim S As String
Dim prova As String
S = InputBox("Immetti password di root")
  prova = Shell "echo " & S & " | sudo -S apt-get update && sudo -S apt-get upgrade" For Write
 Label2.text = prova

C'è qualche cosa che non và

1) Shell non ritorna una Stringa, bensì una variabile di tipo Process, quale handle per gestire il processo del comando avviato.
Per raccogliere direttamente un risultato testuale come unica stringa derivante da un comando, lanciato con Shell, solitamente si fa così:
Codice: [Seleziona]
Shell "nome_comando" To variabile_di_tipo_string
reindirizza il risultato alla variabile di tipo stringa.
Ma non credo che questo possa fare il caso tuo, perché le stringhe restituite saranno molteplici fino alla fine dell'aggiornamento di Lunux.

2) For Write significa che tu intendi scrivere nel flusso che gestisce il processo del comando avviato da Shell (......ed invece tu devi leggere da lì, perché i dati provengono dal flusso del processo);

3) .....ti avevo posto su un piatto d'argento un semplice codice esemplificativo che poteva farti da guida, ma sembra che tu non lo sia andato a vedere.
Ad ogni modo ricorda che la gestione dei dati da e verso un Terminale o console è in sé materia abbastanza complessa:   (http://forum.ubuntu-it.org/images/smilies/sisi.gif)
http://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0#Terminale_-_Console_IDE_Gambas



Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 03 Agosto 2016, 08:29:49
Codice: [Seleziona]
Dim S As String
Dim prova As String
S = InputBox("Immetti password di root")
  prova = Shell "echo " & S & " | sudo -S apt-get update && sudo -S apt-get upgrade" For Write
 Label2.text = prova

C'è qualche cosa che non và

1) Shell non ritorna una Stringa, bensì una variabile di tipo Process, quale handle per gestire il processo del comando avviato.
Per raccogliere direttamente un risultato testuale come unica stringa derivante da un comando, lanciato con Shell, solitamente si fa così:
Codice: [Seleziona]
Shell "nome_comando" To variabile_di_tipo_string
reindirizza il risultato alla variabile di tipo stringa.
Ma non credo che questo possa fare il caso tuo, perché le stringhe restituite saranno molteplici fino alla fine dell'aggiornamento di Lunux.

2) For Write significa che tu intendi scrivere nel flusso che gestisce il processo del comando avviato da Shell (......ed invece tu devi leggere da lì, perché i dati provengono dal flusso del processo);

3) .....ti avevo posto su un piatto d'argento un semplice codice esemplificativo che poteva farti da guida, ma sembra che tu non lo sia andato a vedere.
Ad ogni modo ricorda che la gestione dei dati da e verso un Terminale o console è in sé materia abbastanza complessa:   (http://forum.ubuntu-it.org/images/smilies/sisi.gif)
http://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0#Terminale_-_Console_IDE_Gambas

Se è una materia molto complessa ce un modo di aggiornare da gambas la versione di linux senza usare i comandi apt-get update ed apt-get upgrade ?
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 03 Agosto 2016, 14:52:53
Se è una materia molto complessa ce un modo di aggiornare da gambas la versione di linux senza usare i comandi apt-get update ed apt-get upgrade ?
La tua idea di utilizzare quei due comandi è corretta.... scusa, insomma, puoi testare innanzitutto il seguente codice ?

Codice: [Seleziona]
Private pr As Process


Public Sub Button1_Click()

  Dim root As String

   root = InputBox("Immetti password di root")

' Lanciamo con Shell i due comandi, e ne poniamo in osservazione in lettura il processo: '
   pr = Shell "echo " & root & " | sudo -S apt-get update && sudo -S apt-get upgrade" For Input As "Osserva"

End


Public Sub Osserva_Read()
 
  Print pr.ReadLine()
 
End
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 03 Agosto 2016, 17:06:09
Se è una materia molto complessa ce un modo di aggiornare da gambas la versione di linux senza usare i comandi apt-get update ed apt-get upgrade ?
La tua idea di utilizzare quei due comandi è corretta.... scusa, insomma, puoi testare innanzitutto il seguente codice ?

Codice: [Seleziona]
Private pr As Process


Public Sub Button1_Click()

  Dim root As String

   root = InputBox("Immetti password di root")

' Lanciamo con Shell i due comandi, e ne poniamo in osservazione in lettura il processo: '
   pr = Shell "echo " & root & " | sudo -S apt-get update && sudo -S apt-get upgrade" For Input As "Osserva"

End


Public Sub Osserva_Read()
 
  Print pr.ReadLine()
 
End

  pr = Shell "echo " & root & " | sudo -S apt-get update && sudo -S apt-get upgrade" For Input As "Osserva"

Unknown identifier:pr in Fmain.Class:14.
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 03 Agosto 2016, 17:21:09

Unknown identifier:pr in Fmain.Class:14.

Ho provato il codice: a me funziona perfettamente, come puoi vedere nel file immagine allegato.

Domanda un po' stupida:  nel codice, che hai incollato, ...sicuro che è presente la riga di comando Private pr As Process
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 03 Agosto 2016, 22:05:30

Unknown identifier:pr in Fmain.Class:14.

Ho provato il codice: a me funziona perfettamente, come puoi vedere nel file immagine allegato.

Dom

Ok, lo vedo così, ma appena lo compilo e lo lancio compilato, poi non vedo niente che cosa fà, cioè in gambas vedo la finestra echo
ma compilato non vedo poi nulla ?
Il problema è proprio questo........
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 04 Agosto 2016, 00:11:06
....ma appena lo compilo e lo lancio compilato, poi non vedo niente che cosa fà, cioè in gambas vedo la finestra echo
ma compilato non vedo poi nulla ?
Il problema è proprio questo........

Il codice compilato come "eseguibile" (ad esempio: mio_programma.gambas), dal menu dell'IDE secondo la modalità seguente:

  Progetto-->Crea--->Eseguibile...

va lanciato da Terminale, come nuovamente puoi vedere nel file immagine allegato.


...e a me funziona ugualmente.    :)
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: Andreone - 04 Agosto 2016, 08:26:31
....ma appena lo compilo e lo lancio compilato, poi non vedo niente che cosa fà, cioè in gambas vedo la finestra echo
ma compilato non vedo poi nulla ?
Il problema è proprio questo........

Il codice compilato come "eseguibile" (ad esempio: mio_programma.gambas), dal menu dell'IDE secondo la modalità seguente:

  Progetto-->Crea--->Eseguibile...

va lanciato da Terminale, come nuovamente puoi vedere nel file immagine allegato.


...e a me funziona ugualmente.    :)

Anche a me funziona però voglio che
Quando clicco sull' eseguibile mi apre il terminale e non devo lanciare il programma dal terminale
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 04 Agosto 2016, 15:31:27
.... però voglio che
Quando clicco sull' eseguibile mi apre il terminale e non devo lanciare il programma dal terminale

Dunque... possiamo esperire almeno due modalità.


1) la prima modalità (anche se è un po' farraginosa) prevede che siano attivati i Componenti gb.desktop e gb.desktop.x11:
Codice: [Seleziona]
Public Sub Form_Open()

  Shell "gnome-terminal"

End


Public Sub Button1_Click()

  Dim root As String
  Dim c As Integer[]
 
   root = InputBox("Immetti password di root")

' Trova l'identificativo della finestra del Terminale aperta prima.
' Nel metodo "FindWindow()" inseriamo il nome della finestra del Terminale: '
   c = Desktop.FindWindow("Termin*")

   If c.Count > 0 Then
' Attribuisce il "Focus" alla finestra del Terminale: '
      Desktop.ActiveWindow = c[c.Max]
     
' Scrive nel Terminale l'intera riga di comndo e la lancia: '
     Desktop.SendKeys("echo " & root & " | sudo -S apt-get update && sudo -S apt-get upgrade\n")
   Endif

End



2) La seconda modalità prevede di far aprire un Terminale, lanciare i due comandi mediante la semplice Shell,  e reindirizzare l'output al Terminale aperto inizialmente:
Codice: [Seleziona]
Private fl As File
Private pr As Process


Public Sub Form_Open()

 Dim b As Byte
 Dim pts, s As String

' Sollecitiamo l'apertura del Form e favoriamo la visibilità del Button:
   Me.Show
   Wait 0.3

   pts = "/dev/pts"
 
' Verifichiamo innanzitutto quanti file 'pts' sono presenti in "/dev/pts": '
  b = Dir(pts, Null, gb.Device).Count

' Apriamo il Terminale: '
  Shell "gnome-terminal" Wait

' Restiamo in attesa che venga generato il file-device speciale del Terminale: '
  Do
    Wait 0.01
  Loop Until b < Dir(pts, Null, gb.Device).Count

' L'ultimo file 'pts' creato è posizionato nel 1° elemento del vettore generato dalla funzione "Dir()": '
  s = Dir(pts, Null, gb.Device)[0]

' Apriamo il file-device speciale del Terminale in lettura bufferizzata: '
  fl = Open pts &/ s For Output

End


Public Sub Button1_Click()

  Dim root As String
 
  root = InputBox("Immetti password di root")

' Lanciamo con Shell i due comandi, e ne poniamo in osservazione in lettura il processo: '
   pr = Shell "echo " & root & " | sudo -S apt-get update && sudo -S apt-get upgrade" For Input As "Osserva"
   
End


Public Sub Osserva_Read()
 
' Reindirizziamo l'output del processo  verso il Terminale:
  Output To #fl
 
  Print pr.ReadLine()
 
End


Public Sub Form_Close()

' In caso di chiusura del Form, il file-device speciale viene chiuso ed il processo dei due comandi viene soppresso: '
  fl.Close
  pr.Kill
 
End
Titolo: Re:Chiamare apt update e apt upgrade da shell
Inserito da: vuott - 14 Agosto 2016, 00:08:29
........Desktop.RunAsRoot


....credo ci sia attualmente un bug (dovrò segnalarlo a Minisini: a me da un errore.
Il bug è stato finalmente risolto (per chi usa l'aggiornamento via SVN/trunk con la rev. 7838).