[Risolto] Conky: problemi con istruzione che in BASH funziona

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2564
Iscrizione: domenica 17 febbraio 2008, 13:56

[Risolto] Conky: problemi con istruzione che in BASH funziona

Messaggio da Sargonsei »

[Risolto] Ho messo a punto vari conky, fra i quali uno per monitorare l'ultima periferica USB connessa ad una porta USB del PC.
Il conky in questione è questo:

Codice: Seleziona tutto

--[[  Conky progettato per visualizzare informazioni relative alle periferiche connesse alle porte USB.
      conky -c /mnt/Dati/conky2024/conkyEsaminaUSB02 &
      Informazioni utili:
      http://conky.sourceforge.net/config_settings.html
      https://ubuntuforums.org/showthread.php?t=281865&page=2346
      http://www.ubaweb.it/miniguide/conky.php
      https://wiki.manjaro.org/index.php?title=Basic_Tips_for_conky
      https://wiki.archlinux.org/index.php/Conky_(Italiano)
      https://zirconet.wordpress.com/2017/02/10/tutorial-linux-alla-scoperta-di-conky-configurazione-delle-opzioni-generali/
]] 
conky.config = {
-- ------------------------- Windows Settings
    own_window = true,
    own_window_transparent = no,
    own_window_argb_visual = true,
    own_window_argb_value = 255,
    own_window_colour = 'black',
    own_window_type = 'normal',
    own_window_hints = 'undecorated,skip_pager,below', -- sticky,skip_taskbar,

    double_buffer = true,    
    background = true,

-- ------------------------- Position
    alignment = 'top_left',

    minimum_width = 270,
    
    minimum_height = 200,
    gap_x = 210,
    gap_y = 125,

-- ------------------------- Font
    draw_shades = false,
    draw_outline = false,
    draw_borders = true,
    draw_graph_borders = true,

    default_bar_height = 3,
    default_graph_height = 20,

    use_spacer = 'right',

    use_xft = true,
    override_utf8_locale = true,

    font = 'DejaVu Sans Mono:size=8',


--------------------------- Other
    update_interval = 1,

----- text
    default_color = 'yellow',
----- headers
    color0 = 'white',

};

conky.text = [[
 ${color orange}Output del comando ${color red}lspci | awk '$2 == "USB" {system("lspci -ks " $1)}'
${color0}${exec lspci | awk '$2 == "USB" {system("lspci -ks " $1)}'}
 ${color orange}Output del comando ${color red}dmesg|grep found|grep idVendor|tail -1
${color0}${exec dmesg|grep found|grep idVendor|tail -1}
 ${color orange}Dati periferica USB summenzionata ${color red}(se tutt'ora connessa al PC)
${color0}${exec A1=`dmesg|grep found|grep idVendor|tail -1`; echo $A1; B1=`expr index "$A1" "]"`; B2=`expr index "$A1" ":"`; B0=${A1:$B1+4:$B2-$B1-5}; C1=`expr index "$A1" "="`; C0=${A1:$C1:4}; D1=`expr index "$A1" "t"`; D0=${A1:$D1+1:4}; lsusb -vd "$C0:$D0"|head -17; lsusb -tvv |grep $B0 -B2}
 ${color orange}Output del comando ${color red} cat /etc/issue ${color0}${exec cat /etc/issue}
 ${color orange}$sysname Kernel: ${color0}$kernel on $machine
 ${color orange}Output del comando ${color red} uptime 
${color0}${exec uptime}
]]
Il problema è che l'istruzione

Codice: Seleziona tutto

A1=`dmesg|grep found|grep idVendor|tail -1`; echo $A1; B1=`expr index "$A1" "]"`; B2=`expr index "$A1" ":"`; B0=${A1:$B1+4:$B2-$B1-5}; C1=`expr index "$A1" "="`; C0=${A1:$C1:4}; D1=`expr index "$A1" "t"`; D0=${A1:$D1+1:4}; lsusb -vd "$C0:$D0"|head -17; lsusb -tvv |grep $B0 -B2
fa tutto quello che deve fare solo se impartita da terminale, ma se viene contenuta in un conky, viene eseguita solo parzialmente (esegue ; echo $A1;, poi passa alla riga seguente).
Come risolvo?
Ringrazio sin d'ora chi mi aiuterà.
Ultima modifica di Sargonsei il sabato 10 agosto 2024, 18:43, modificato 2 volte in totale.
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
ivantu
Rampante Reduce
Rampante Reduce
Messaggi: 6788
Iscrizione: sabato 8 giugno 2013, 9:25
Desktop: Ubuntu Lubuntu Mate
Distribuzione: 22.04 LTS; 24.04 LTS
Sesso: Maschile

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da ivantu »

Avvialo in debug.
Che cosa dice il terminale?

AmbienteGrafico/Conky
Buona giornata utenti del forum. :ciao: ivantu
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2564
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da Sargonsei »

Codice: Seleziona tutto

$ conky -c conkyEsaminaUSB02 &
[1] 110483
$ conky: desktop window (2000010) is subwindow of root window (6c4)
conky: window type - normal
conky: drawing to created window (0x5000002)
conky: drawing to double buffer
conky: unknown variable '$2'
conky: unknown variable '$1'
conky: forked to background, pid is 110484

sh: 1: Bad substitution
sh: 1: Bad substitution
sh: 1: Bad substitution
sh: 1: Bad substitution
sh: 1: Bad substitution
sh: 1: Bad substitution
sh: 1: Bad substitution
sh: 1: Bad substitution
sh: 1: Bad substitution

Codice: Seleziona tutto

$ conky -D conkyEsaminaUSB02 &
[1] 184546
$ DEBUG(0) [./src/conky.cc:1958]: reading contents from config file '/etc/conky/conky.conf'
DEBUG(0) [./src/x11.cc:237]: enter init_x11()
DEBUG(0) [./src/x11.cc:326]: Fixed xinerama area to: 0 0 1366 768
DEBUG(0) [./src/x11.cc:275]: leave init_x11()
DEBUG(0) [./src/x11.cc:491]: enter x11_init_window()
DEBUG(0) [./src/x11.cc:326]: Fixed xinerama area to: 0 0 1366 768
conky: desktop window (2000010) is subwindow of root window (6c4)
DEBUG(0) [./src/x11.cc:468]: Found ARGB Visual
conky: window type - normal
conky: drawing to created window (0x6600002)
DEBUG(0) [./src/x11.cc:875]: leave x11_init_window()
conky: drawing to double buffer
conky: unknown variable '$2'
conky: unknown variable '$1'
conky: forked to background, pid is 184547

DEBUG(0) [./src/display-output.cc:138]: Initialized display output 'x11'... 
sh: 1: Bad substitution
sh: 1: Bad substitution
sh: 1: Bad substitution
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
ivantu
Rampante Reduce
Rampante Reduce
Messaggi: 6788
Iscrizione: sabato 8 giugno 2013, 9:25
Desktop: Ubuntu Lubuntu Mate
Distribuzione: 22.04 LTS; 24.04 LTS
Sesso: Maschile

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da ivantu »

Il file conkyrc è mal strutturato. Vedo se riuesco a spiegare

Come tu hai riportato, mancano le variabili $1 e $2
conky: unknown variable '$2'
conky: unknown variable '$1'
In qualche modo, nel file conkyrc che hai postato, i valori delle variabili andrebbero riportate, richiamate, inserite nella sezione conky.config. Nel file sono completamente assenti.
Qui dovrebbero essere d'aiuto i codici di compilazione Lua.


:edit
Se manca una variabile, non funziona, niente.
Per l'appunto, quello che tu hai visualizzato avviando la bash, sicuramente hai visualizzato il file conkyrc di default posizionato in /etc/conky/conky.conf.
Buona giornata utenti del forum. :ciao: ivantu
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2564
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da Sargonsei »

1) Le variabili $1 e $2 fanno parte del set di istruzioni di AWK e, nelle righe di conky, sono contenute unicamente nelle righe

Codice: Seleziona tutto

${color orange}Output del comando ${color red}lspci | awk '$2 == "USB" {system("lspci -ks " $1)}'
${color0}${exec lspci | awk '$2 == "USB" {system("lspci -ks " $1)}'}
e non devono essere impostate dall'utente, ma le imposta AWK stesso.
Togliendo queste righe, non compare più la corrispondente segnalazione "conky: unknown variable", ma il problema per cui ho aperto questa discussione persiste.

2) Per qualche motivo che io non comprendo, ieri, impartendo il comado

Codice: Seleziona tutto

conky -D conkyEsaminaUSB02 &
partivano sia il conky conkyEsaminaUSB02 contenuto nella cartella di lavoro, sia il conky contenuto nella cartella di configurazione.
Prima di postare l'output, avevo anche pensato di salvare il conky di default come .old e mettere nel conky di default il contenuto del conky che volevo provare, ma l'inconveniente continuava a presentarsi.

Oggi è partito solo il conky su cui vorrei lavorare. Ecco l'output:

Codice: Seleziona tutto

$ conky -D conkyEsaminaUSB02 &
[1] 4600
lmde6@AsusF555Y:/mnt/Dati1/conky2024$ DEBUG(0) [./src/conky.cc:1958]: reading contents from config file '/etc/conky/conky.conf'
DEBUG(0) [./src/x11.cc:237]: enter init_x11()
DEBUG(0) [./src/x11.cc:326]: Fixed xinerama area to: 0 0 1366 768
DEBUG(0) [./src/x11.cc:275]: leave init_x11()
DEBUG(0) [./src/x11.cc:491]: enter x11_init_window()
DEBUG(0) [./src/x11.cc:326]: Fixed xinerama area to: 0 0 1366 768
conky: desktop window (2000010) is subwindow of root window (6a5)
DEBUG(0) [./src/x11.cc:468]: Found ARGB Visual
conky: window type - normal
conky: drawing to created window (0x5200002)
DEBUG(0) [./src/x11.cc:875]: leave x11_init_window()
conky: drawing to double buffer
conky: unknown variable '$2'
conky: unknown variable '$1'
conky: forked to background, pid is 4601

DEBUG(0) [./src/display-output.cc:138]: Initialized display output 'x11'... 
sh: 1: Bad substitution
sh: 1: Bad substitution
sh: 1: Bad substitution
sh: 1: Bad substitution
sh: 1: Bad substitution
sh: 1: Bad substitution
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
ivantu
Rampante Reduce
Rampante Reduce
Messaggi: 6788
Iscrizione: sabato 8 giugno 2013, 9:25
Desktop: Ubuntu Lubuntu Mate
Distribuzione: 22.04 LTS; 24.04 LTS
Sesso: Maschile

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da ivantu »

Scusa, @Sargonsei

Mah, con variabili dati da sistema o utente, conky, deve comunque cercarli in una determinata cartella. Ma se tu a queste variabili non gli fai dove cercarle, ti dará l'errore di variabile assente.
Buona giornata utenti del forum. :ciao: ivantu
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2564
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da Sargonsei »

ivantu ha scritto:
giovedì 8 agosto 2024, 19:38
Scusa, @Sargonsei

Mah, con variabili dati da sistema o utente, conky, deve comunque cercarli in una determinata cartella. Ma se tu a queste variabili non gli fai dove cercarle, ti dará l'errore di variabile assente.
Molti linguaggi di programmazione fanno uso di variabili che non vengono impostate dall'utente.
In AWK, le variabili $1 e $2 corrispondono alla posizione del primo e del secondo separatore.
Faccio un esempio che potrai usare anche tu sul tuo computer direttamente dalla shell BASH senza impostare il valore di $1 e $2 e che in questo conky funziona senza problemi (per la cronaca: in AWK, $1 e $2 sono sempre 2 separatori. In questo caso specifico, $1 corrisponde al primo spazio della riga, e $2 corrisponde al secondo spazio della riga".

Codice: Seleziona tutto

:~$ lspci | awk '$2 == "USB" {system("lspci -ks " $1)}'
00:10.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB XHCI Controller (rev 11)
	Subsystem: ASUSTeK Computer Inc. FCH USB XHCI Controller
	Kernel driver in use: xhci_hcd
	Kernel modules: xhci_pci
00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 39)
	Subsystem: ASUSTeK Computer Inc. FCH USB EHCI Controller
	Kernel driver in use: ehci-pci
	Kernel modules: ehci_pci
00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 39)
	Subsystem: ASUSTeK Computer Inc. FCH USB EHCI Controller
	Kernel driver in use: ehci-pci
	Kernel modules: ehci_pci
	:~$ 
Nel caso specifico, come puoi vedere (e provare tu stesso sul tuo computer)

Codice: Seleziona tutto

:~$ A1=`dmesg|grep found|grep idVendor|tail -1`; echo $A1; B1=`expr index "$A1" "]"`; B2=`expr index "$A1" ":"`; B0=${A1:$B1+4:$B2-$B1-5}; C1=`expr index "$A1" "="`; C0=${A1:$C1:4}; D1=`expr index "$A1" "t"`; D0=${A1:$D1+1:4}; lsusb -vd "$C0:$D0"|head -17; lsusb -tvv |grep $B0 -B2
[ 3.961718] usb 1-1.4: New USB device found, idVendor=0bda, idProduct=57b5, bcdDevice= 0.12
Couldn't open device, some information will be missing

Bus 001 Device 005: ID 0bda:57b5 Realtek Semiconductor Corp. USB Camera
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x0bda Realtek Semiconductor Corp.
  idProduct          0x57b5 
  bcdDevice            0.12
  iManufacturer           3 04081-00092400G4816R
  iProduct                1 USB Camera
  iSerial                 2 200901010001
  bNumConfigurations      1
        |__ Port 4: Dev 5, If 0, Class=Video, Driver=uvcvideo, 480M
            ID 0bda:57b5 Realtek Semiconductor Corp. 
            /sys/bus/usb/devices/1-1.4  /dev/bus/usb/001/005
        |__ Port 4: Dev 5, If 1, Class=Video, Driver=uvcvideo, 480M
            ID 0bda:57b5 Realtek Semiconductor Corp. 
            /sys/bus/usb/devices/1-1.4  /dev/bus/usb/001/005
AWK incorporato in BASH imposta correttamente il valore di $1 e $2, ma AWK incorporato in BASH incorporato in Conky non lo fa, ed io non ne capisco il motivo, visto che l'istruzione

Codice: Seleziona tutto

lspci | awk '$2 == "USB" {system("lspci -ks " $1)}'

viene eseguita senza problemi sia da AWK incorporato in BASH, sia da AWK incorporato in BASH incorporato in Conky.
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 409
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da Lucio C »

Sargonsei ha scritto:
giovedì 8 agosto 2024, 20:06
[In AWK, le variabili $1 e $2 corrispondono alla posizione del primo e del secondo separatore.
[...] l'istruzione

Codice: Seleziona tutto

lspci | awk '$2 == "USB" {system("lspci -ks " $1)}'

viene eseguita senza problemi sia da AWK incorporato in BASH, sia da AWK incorporato in BASH incorporato in Conky.
uh?
Che cosa sarebbero il "primo e secondo separatore" ? In awk $1, $2 ... $n sono il primo, secondo, ... ennesimo campo o token separato dal field separator (FS), che defaulta a blank. Quindi di default la prima e seconda "parola".
Ovviamente non hanno nulla a che fare con $1,$2 ... $n in uno shell script che sono il primo, secondo, ... ennesimo argomento della chiamta dello script.
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2564
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da Sargonsei »

Lucio C ha scritto:
giovedì 8 agosto 2024, 20:54
Sargonsei ha scritto:
giovedì 8 agosto 2024, 20:06
[In AWK, le variabili $1 e $2 corrispondono alla posizione del primo e del secondo separatore.
[...] l'istruzione

Codice: Seleziona tutto

lspci | awk '$2 == "USB" {system("lspci -ks " $1)}'

viene eseguita senza problemi sia da AWK incorporato in BASH, sia da AWK incorporato in BASH incorporato in Conky.
uh?
Che cosa sarebbero il "primo e secondo separatore" ? In awk $1, $2 ... $n sono il primo, secondo, ... ennesimo campo o token separato dal field separator (FS), che defaulta a blank. Quindi di default la prima e seconda "parola".
Ovviamente non hanno nulla a che fare con $1,$2 ... $n in uno shell script che sono il primo, secondo, ... ennesimo argomento della chiamta dello script.
Per un attimo, lascia stare la terminologia tecnica, focalizzati sui concetti espressi e leggi bene l'istruzione.
In BASH $1 è il primo argomento dopo il nome dello script, ma qui $1 viene interpretato da AWK, non da BASH (fra l'altro, hai quotato l'istruzione che viene eseguita perfettamente sia da BASH sia da Conky, quindi potresti provarla dalla shell BASH.
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
ivantu
Rampante Reduce
Rampante Reduce
Messaggi: 6788
Iscrizione: sabato 8 giugno 2013, 9:25
Desktop: Ubuntu Lubuntu Mate
Distribuzione: 22.04 LTS; 24.04 LTS
Sesso: Maschile

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da ivantu »

Sargonsei ha scritto:
giovedì 8 agosto 2024, 21:10
Lucio C ha scritto:
giovedì 8 agosto 2024, 20:54
Sargonsei ha scritto:
giovedì 8 agosto 2024, 20:06
[In AWK, le variabili $1 e $2 corrispondono alla posizione del primo e del secondo separatore.
[...] l'istruzione

Codice: Seleziona tutto

lspci | awk '$2 == "USB" {system("lspci -ks " $1)}'

viene eseguita senza problemi sia da AWK incorporato in BASH, sia da AWK incorporato in BASH incorporato in Conky.
uh?
Che cosa sarebbero il "primo e secondo separatore" ? In awk $1, $2 ... $n sono il primo, secondo, ... ennesimo campo o token separato dal field separator (FS), che defaulta a blank. Quindi di default la prima e seconda "parola".
Ovviamente non hanno nulla a che fare con $1,$2 ... $n in uno shell script che sono il primo, secondo, ... ennesimo argomento della chiamta dello script.
Per un attimo, lascia stare la terminologia tecnica, focalizzati sui concetti espressi e leggi bene l'istruzione.
In BASH $1 è il primo argomento dopo il nome dello script, ma qui $1 viene interpretato da AWK, non da BASH (fra l'altro, hai quotato l'istruzione che viene eseguita perfettamente sia da BASH sia da Conky, quindi potresti provarla dalla shell BASH.
quale script?
ma quindi, AWK, interpreta comandi?

Ho provato a copiare avviare il conky che hai riportato nel primo post, mah... a me continua ad avviare il config file posto come /etc/conky/conky.conf ?? riportando il debug con nessun errore

sono convinto, che in qualche modo, il comando va riportato nel paragrafo conky.config = {
come se una certa variabile output fossi un Lua.

Interpretaszioni di config .conky sono cambiate. Siamo nel 2024 non nel 2012?
Buona giornata utenti del forum. :ciao: ivantu
Avatar utente
danilo_g
Prode Principiante
Messaggi: 212
Iscrizione: giovedì 6 giugno 2024, 13:02
Desktop: BoiaDE
Distribuzione: LollOS
Località: Memeland

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da danilo_g »

ivantu ha scritto:
venerdì 9 agosto 2024, 10:21
ma quindi, AWK, interpreta comandi?
https://it.wikipedia.org/wiki/Awk
Resistance is futile, you will be garbage collected.
«Le opinioni sono come i buchi del c*lo, tutti ne hanno uno.» :gh:
Whatever is the way. ¯\_(ツ)_/¯
ivantu
Rampante Reduce
Rampante Reduce
Messaggi: 6788
Iscrizione: sabato 8 giugno 2013, 9:25
Desktop: Ubuntu Lubuntu Mate
Distribuzione: 22.04 LTS; 24.04 LTS
Sesso: Maschile

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da ivantu »

I Lua, possono essere simulati cio che interpreta.

Ho chiesto info con Gemini AI, e mi ha risposto.
simulazione di comando awk in .lua file

Simulare comandi AWK in file .lua: Un approccio più profondo
Hai ragione, Lua non ha un equivalente diretto di AWK. Ma grazie alla sua flessibilità e alle sue potenti funzionalità per la manipolazione delle stringhe e dei dati, possiamo creare delle simulazioni molto efficaci dei comandi AWK.
Buona giornata utenti del forum. :ciao: ivantu
Avatar utente
danilo_g
Prode Principiante
Messaggi: 212
Iscrizione: giovedì 6 giugno 2024, 13:02
Desktop: BoiaDE
Distribuzione: LollOS
Località: Memeland

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da danilo_g »

ivantu ha scritto:
venerdì 9 agosto 2024, 19:18
I Lua, possono essere simulati cio che interpreta
Ma tu le rileggi le frasi che scrivi prima di fare "invia"? Perché io non riesco a capirti nel 98% delle volte.
Resistance is futile, you will be garbage collected.
«Le opinioni sono come i buchi del c*lo, tutti ne hanno uno.» :gh:
Whatever is the way. ¯\_(ツ)_/¯
ivantu
Rampante Reduce
Rampante Reduce
Messaggi: 6788
Iscrizione: sabato 8 giugno 2013, 9:25
Desktop: Ubuntu Lubuntu Mate
Distribuzione: 22.04 LTS; 24.04 LTS
Sesso: Maschile

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da ivantu »

danilo_g ha scritto:
venerdì 9 agosto 2024, 19:32
ivantu ha scritto:
venerdì 9 agosto 2024, 19:18
I Lua, possono essere simulati cio che interpreta
Ma tu le rileggi le frasi che scrivi prima di fare "invia"? Perché io non riesco a capirti nel 98% delle volte.
Sempre mi rileggo.

Eppure, l'AI mi ha capito e mi capisce. Strano.
Buona giornata utenti del forum. :ciao: ivantu
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2564
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da Sargonsei »

ivantu ha scritto:
venerdì 9 agosto 2024, 10:21
Sargonsei ha scritto:
giovedì 8 agosto 2024, 21:10
Lucio C ha scritto:
giovedì 8 agosto 2024, 20:54
Sargonsei ha scritto:
giovedì 8 agosto 2024, 20:06
[In AWK, le variabili $1 e $2 corrispondono alla posizione del primo e del secondo separatore.
[...] l'istruzione

Codice: Seleziona tutto

lspci | awk '$2 == "USB" {system("lspci -ks " $1)}'

viene eseguita senza problemi sia da AWK incorporato in BASH, sia da AWK incorporato in BASH incorporato in Conky.
uh?
Che cosa sarebbero il "primo e secondo separatore" ? In awk $1, $2 ... $n sono il primo, secondo, ... ennesimo campo o token separato dal field separator (FS), che defaulta a blank. Quindi di default la prima e seconda "parola".
Ovviamente non hanno nulla a che fare con $1,$2 ... $n in uno shell script che sono il primo, secondo, ... ennesimo argomento della chiamta dello script.
Per un attimo, lascia stare la terminologia tecnica, focalizzati sui concetti espressi e leggi bene l'istruzione.
In BASH $1 è il primo argomento dopo il nome dello script, ma qui $1 viene interpretato da AWK, non da BASH (fra l'altro, hai quotato l'istruzione che viene eseguita perfettamente sia da BASH sia da Conky, quindi potresti provarla dalla shell BASH.
quale script?
ma quindi, AWK, interpreta comandi?

Ho provato a copiare avviare il conky che hai riportato nel primo post, mah... a me continua ad avviare il config file posto come /etc/conky/conky.conf ?? riportando il debug con nessun errore

sono convinto, che in qualche modo, il comando va riportato nel paragrafo conky.config = {
come se una certa variabile output fossi un Lua.

Interpretaszioni di config .conky sono cambiate. Siamo nel 2024 non nel 2012?
Per qualche strano motivo, l'utilizzo dell'opzione -D nel comando [conky -D conkyEsaminaUSB02 &], sebbene impartito da terminale aperto nella cartella in cui si trova il file conkyEsaminaUSB02, fa sì che, ad avviarsi, sia il conky "di default", di conseguenza, per avviare il mio conky, avevo aperto la cartella '/etc/conky/', rinominato conky.conf come conky.conf.bak e, nella stessa cartella, ho creato un nuovo file conky.conf contenente il conky che ho riportato nel primo post, così ora il comando conky non avvia ilconky di default, ma il mio conky salvato come '/etc/conky/conky.conf ', e riesco ad avviarlo con l'opzione -D

Di tutte le istruzioni, l'unica che dà problemi è

Codice: Seleziona tutto

${color0}${exec A1=`dmesg|grep found|grep idVendor|tail -1`; echo $A1; B1=`expr index "$A1" "]"`; B2=`expr index "$A1" ":"`; B0=${A1:$B1+4:$B2-$B1-5}; C1=`expr index "$A1" "="`; C0=${A1:$C1:4}; D1=`expr index "$A1" "t"`; D0=${A1:$D1+1:4}; lsusb -vd "$C0:$D0"|head -17; lsusb -tvv |grep $B0 -B2}
così il l'ho rimossa ed ho salvato il file conky.conf contenente solo istruzioni perfettamente funzionanti. ora l'output del comando di avvio del conky con l'opzione di debug è

Codice: Seleziona tutto

$ conky -D &
[1] 57427
$ DEBUG(0) [./src/conky.cc:1958]: reading contents from config file '/etc/conky/conky.conf'
DEBUG(0) [./src/x11.cc:237]: enter init_x11()
DEBUG(0) [./src/x11.cc:326]: Fixed xinerama area to: 0 0 1366 768
DEBUG(0) [./src/x11.cc:275]: leave init_x11()
DEBUG(0) [./src/x11.cc:491]: enter x11_init_window()
DEBUG(0) [./src/x11.cc:326]: Fixed xinerama area to: 0 0 1366 768
conky: desktop window (2000010) is subwindow of root window (6c4)
DEBUG(0) [./src/x11.cc:468]: Found ARGB Visual
conky: window type - normal
conky: drawing to created window (0x3800002)
DEBUG(0) [./src/x11.cc:875]: leave x11_init_window()
conky: drawing to double buffer
conky: unknown variable '$2'
conky: unknown variable '$1'
conky: forked to background, pid is 57428

DEBUG(0) [./src/display-output.cc:138]: Initialized display output 'x11'... 

All'inizio "protesta" per l'utilizzo delle variabili $1 e $2, ma poi funziona tutto.
È l'istruzione

Codice: Seleziona tutto

${color0}${exec A1=`dmesg|grep found|grep idVendor|tail -1`; echo $A1; B1=`expr index "$A1" "]"`; B2=`expr index "$A1" ":"`; B0=${A1:$B1+4:$B2-$B1-5}; C1=`expr index "$A1" "="`; C0=${A1:$C1:4}; D1=`expr index "$A1" "t"`; D0=${A1:$D1+1:4}; lsusb -vd "$C0:$D0"|head -17; lsusb -tvv |grep $B0 -B2}
che proprio non gli piace...
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
ivantu
Rampante Reduce
Rampante Reduce
Messaggi: 6788
Iscrizione: sabato 8 giugno 2013, 9:25
Desktop: Ubuntu Lubuntu Mate
Distribuzione: 22.04 LTS; 24.04 LTS
Sesso: Maschile

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da ivantu »

Tralasciando ora le mie ipotesi di convertire awk in Lua.
Sargonsei ha scritto:
sabato 10 agosto 2024, 8:07
Per qualche strano motivo, l'utilizzo dell'opzione -D nel comando [conky -D conkyEsaminaUSB02 &], sebbene impartito da terminale aperto nella cartella in cui si trova il file conkyEsaminaUSB02, fa sì che, ad avviarsi, sia il conky "di default", di conseguenza, per avviare il mio conky, avevo aperto la cartella '/etc/conky/', rinominato conky.conf come conky.conf.bak e, nella stessa cartella, ho creato un nuovo file conky.conf contenente il conky che ho riportato nel primo post, così ora il comando conky non avvia ilconky di default, ma il mio conky salvato come '/etc/conky/conky.conf ', e riesco ad avviarlo con l'opzione -D
Mentre che scrivevi il post, stamattina, ho fatto anch'io le tue stesse identiche simulando le dovute prove nel mio sistema, risultato:
Stesso errore 'variabili $2 $1 non conosciute'.
Fino a qui ci sono anch'io.

Fatto delle ricerche, constato un bug di conky https://bugs.launchpad.net/ubuntu/+source/conky

:edit
Però, se sei convint*. o se hai un complotto per incolpare conky, è tutto da rivedere. :)
Buona giornata utenti del forum. :ciao: ivantu
Avatar utente
Sargonsei
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2564
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da Sargonsei »

Risolto!!!
A quanto pare, a conky non piace come BASH manipola il contenuto delle variabili... a tale scopo, preferisce che si usi AWK..
io allora ho sostituito questo codice

Codice: Seleziona tutto

${color0}${exec A1=`dmesg|grep found|grep idVendor|tail -1`; echo $A1; B1=`expr index "$A1" "]"`; B2=`expr index "$A1" ":"`; B0=${A1:$B1+4:$B2-$B1-5}; C1=`expr index "$A1" "="`; C0=${A1:$C1:4}; D1=`expr index "$A1" "t"`; D0=${A1:$D1+1:4}; lsusb -vd "$C0:$D0"|head -17; lsusb -tvv |grep $B0 -B2}
con quest'altro codice

Codice: Seleziona tutto

${color0}${exec A1=`dmesg|grep found|grep idVendor|tail -1`; A0=`echo "$A1" | awk '{ sub(", idProduct=",":"); print; }'`; C1=`echo $A0 | awk -F'=' '{print $2}'`; C0=`echo $C1 | awk -F',' '{print $1}'`; lsusb -vd "$C0"|head -17}
${color0}${exec A1=`dmesg|grep found|grep idVendor|tail -1`; echo $A1; B1=`echo $A1 | awk -F':' '{print $1}'`;B0=`echo $B1 | awk -F'usb ' '{print $2}'`; lsusb -tvv |grep $B0 -B2}
ed ora tutto funziona.
Posto il conky finale, nell'eventualità che interessi a qualcuno.

Codice: Seleziona tutto

--[[  Conky progettato per visualizzare informazioni relative alle periferiche connesse alle porte USB.
      conky -c /mnt/Dati/conky2024/conkyEsaminaUSB02 &
      Informazioni utili:
      http://conky.sourceforge.net/config_settings.html
      https://ubuntuforums.org/showthread.php?t=281865&page=2346
      http://www.ubaweb.it/miniguide/conky.php
      https://wiki.manjaro.org/index.php?title=Basic_Tips_for_conky
      https://wiki.archlinux.org/index.php/Conky_(Italiano)
      https://zirconet.wordpress.com/2017/02/10/tutorial-linux-alla-scoperta-di-conky-configurazione-delle-opzioni-generali/
]] 
conky.config = {
-- ------------------------- Windows Settings
    own_window = true,
    own_window_transparent = no,
    own_window_argb_visual = true,
    own_window_argb_value = 255,
    own_window_colour = 'black',
    own_window_type = 'normal',
    own_window_hints = 'undecorated,skip_pager,below', -- sticky,skip_taskbar,

    double_buffer = true,    
    background = true,

-- ------------------------- Position
    alignment = 'top_left',

    minimum_width = 270,
    
    minimum_height = 200,
    gap_x = 210,
    gap_y = 125,

-- ------------------------- Font
    draw_shades = false,
    draw_outline = false,
    draw_borders = true,
    draw_graph_borders = true,

    default_bar_height = 3,
    default_graph_height = 20,

    use_spacer = 'right',

    use_xft = true,
    override_utf8_locale = true,

    font = 'DejaVu Sans Mono:size=8',


--------------------------- Other
    update_interval = 1,

----- text
    default_color = 'yellow',
----- headers
    color0 = 'white',

};

conky.text = [[
 ${color orange}Output del comando ${color red}lspci | awk '$2 == "USB" {system("lspci -ks " $1)}'
${color0}${exec lspci | awk '$2 == "USB" {system("lspci -ks " $1)}'}
 ${color orange}Output del comando ${color red}dmesg|grep found|grep idVendor|tail -1
${color0}${exec dmesg|grep found|grep idVendor|tail -1}
 ${color orange}Dati periferica USB summenzionata ${color red}(se tutt'ora connessa al PC)
${color0}${exec A1=`dmesg|grep found|grep idVendor|tail -1`; A0=`echo "$A1" | awk '{ sub(", idProduct=",":"); print; }'`; C1=`echo $A0 | awk -F'=' '{print $2}'`; C0=`echo $C1 | awk -F',' '{print $1}'`; lsusb -vd "$C0"|head -17}
${color0}${exec A1=`dmesg|grep found|grep idVendor|tail -1`; echo $A1; B1=`echo $A1 | awk -F':' '{print $1}'`;B0=`echo $B1 | awk -F'usb ' '{print $2}'`; lsusb -tvv |grep $B0 -B2}
 ${color orange}Output del comando ${color red} cat /etc/issue ${color0}${exec cat /etc/issue}
 ${color orange}$sysname Kernel: ${color0}$kernel on $machine
 ${color orange}Output del comando ${color red} uptime 
${color0}${exec uptime}
]]
Ringrazio di cuore tutti i partecipanti per l'aiuto da me ricevuto.
Ultima modifica di Sargonsei il sabato 10 agosto 2024, 18:27, modificato 1 volta in totale.
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
ivantu
Rampante Reduce
Rampante Reduce
Messaggi: 6788
Iscrizione: sabato 8 giugno 2013, 9:25
Desktop: Ubuntu Lubuntu Mate
Distribuzione: 22.04 LTS; 24.04 LTS
Sesso: Maschile

Re: Conky: problemi con istruzione che in BASH funziona

Messaggio da ivantu »

Ricordati di riportare [Risolto] all'inizio nel titolo del primo post.
Buona giornata utenti del forum. :ciao: ivantu
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Bing [Bot] e 3 ospiti