Archivio

Archivio per la categoria ‘Linux’

Xubuntu: modificare il colore del prompt del terminale

18 Ottobre 2019 Commenti chiusi

Vogliamo modificare il colore del prompt del terminale di Ubuntu.
Il tipo di terminale che ci interessa è il “non-login”, che carica le sue impostazioni dal file

.bashrc

residente nella home.

Per modificare tali caratteristiche, editare il file suddetto:

mousepad ~/.bashrc

e decommentare la riga di codice contenente:

force_color_prompt=yes

Questa modifica consente di abilitare la colorazione del prompt fornita nel file di default.

La colorazione di default (ad es. di Xubuntu), è racchiusa nella seguente stringa:

if [ "$color_prompt" = yes ]; then

    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Nota:
cosa è ${debian_chroot:+($debian_chroot)}?
Questo è uno schema del tipo ${var:+value} che significa:
Se la variabile $var è definita, allora utilizza il valore ‘value’;
altrimenti non fare nulla.
La variabile debian_chroot è definita nel file /etc/bash.bashrc e si
occupa di prendere il contenuto del file /etc/debian_chroot, se questo file esiste
ed è leggibile. Di default però, tale file non esiste.

esempio:

banco@banco-desktop:~$ PS1='${var:+($var)}\u@\h:\w\$ '
banco@banco-desktop:~$ var="example"
(example)banco@banco-desktop:~$

La colorazione viene decisa da una stringa racchiusa tra i caratteri di escape

\[\033[ e \]

a volte \[\033[ è sostituito da \e[

– Stringhe Colori disponibili

Ecco le stringhe usate per la colorazione del testo:

txtblk=’0;30m’ # Nero – Regular
txtred=’0;31m’ # Rosso
txtgrn=’0;32m’ # Verde
txtylw=’0;33m’ # Giallo
txtblu=’0;34m’ # Blu
txtpur=’0;35m’ # Viola
txtcyn=’0;36m’ # Ciano
txtwht=’0;37m’ # Bianco
bldblk=’1;30m’ # Nero – Bold
bldred=’1;31m’ # Rosso
bldgrn=’1;32m’ # Verde
bldylw=’1;33m’ # Giallo
bldblu=’1;34m’ # Blu
bldpur=’1;35m’ # Viola
bldcyn=’1;36m’ # Ciano
bldwht=’1;37m’ # Bianco
unkblk=’4;30m’ # Nero – Underline
undred=’4;31m’ # Rosso
undgrn=’4;32m’ # Verde
undylw=’4;33m’ # Giallo
undblu=’4;34m’ # Blu
undpur=’4;35m’ # Viola
undcyn=’4;36m’ # Ciano
undwht=’4;37m’ # Bianco
bakblk=’40m’ # Nero – Background
bakred=’41m’ # Rosso
badgrn=’42m’ # Verde
bakylw=’43m’ # Giallo
bakblu=’44m’ # Blu
bakpur=’45m’ # Viola
bakcyn=’46m’ # Ciano
bakwht=’47m’ # Bianco
txtrst=’0m’ # Text Reset

Nel nostro caso specifico, verrà usata la sequenza di escape non stampabile, ‘1;32m’ (verde grassetto):

\[\033[01;32m\]

Il testo successivo, fino alla sequenza successiva, verrà modificato; la stringa GreenBold sarà:

\u@\h

dove ‘\u@\h\’ sta per user@host

– Comandi di escape disponibili

Ecco la lista dei comandi di escape disponibili:

\a         il carattere ASCII beep (07)
\d         la data nel formato "Giorno-della-settimana Mese Data"
\D{format} the format is passed to strftime(3) and the result
           is inserted into the prompt string an empty format
           results in a locale-specific time representation.
           The braces are required
\e         un carattere di escape ASCII (033)
\h         l'hostname fino al primo `.'
\H         l'hostname
\j         the number of jobs currently managed by the shell
\l         the basename of the shell's terminal device name
\n         il carattere "newline"
\r         il carattere "carriage return"
\s         il nome della shell, il nome base di $0
           (la parte che segue lo slash finale)
\t         l'ora corrente nel formato 24-ore HH:MM:SS
\T         l'ora corrente nel formato 12-ore HH:MM:SS
\@         l'ora corrente nel formato 12-ore am/pm
\A         the current time in 24-hour HH:MM format
\u         lo username dell'utente corrente
\v         la versione di bash (e.g., 2.00)
\V         la release di bash, versione + patchlevel
           (es, 2.00.0)
\w         la directory di lavoro corrente, con $HOME abbreviato con una tilde
\W         il nome di base della directory di lavoro corrente
           abbreviato con una tilde
\!         il numero cronologico (history number) di questo comando
\#         il numero di questo comando
\$         se l'UID effettivo è 0, un #, altrimenti un $
\nnn       il carattere corrispondente al numero ottale nnn
\\         un backslash
\[         comincia una sequenza di caratteri non stampabili, che
           potrebbero essere usati per inserire una sequenza di
           controllo del terminale nel prompt
\]         termina la sequenza di caratteri non stampabili

tornando alla stringa, dopo user@host, abbiamo un text reset, ovvero togliamo la colorazione per il carattere “:”,

\[\033[00m\]:

poi abbiamo il path in blu grassetto:

\[\033[01;34m\]\w

dove appunto \w sta per la directory corrente

ed infine, sempre senza colorazione:

\[\033[00m\]\$ '

dove \$ controlla l’UID (user identifier):
se è 0 (root), viene visualizzato un ‘#’, altrimenti il ‘$’.

– Modificare il prompt di root

Per modificare il prompt di root, ad esempio utilizzando il rosso, è necessario modificare il file
.bashrc in root.
Copiare in /root il file skeleton:

/etc/skel/.bashrc

sudo cp /etc/skel/.bashrc /root

Editare quindi il file .bashrc di root e, prima decommentare:

force_color_prompt=yes

poi modificare il colore nella stringa:

    PS1='\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Categorie:Xfce Tag: ,

NFS: condivisione files

3 Ottobre 2019 Commenti chiusi

Voglio condividere files da un server (Debian Buster) verso un client (Xubuntu 16.04).
Gli indirizzi IP dei dispositivi sono:

server: ip -> 192.168.1.2
client: ip -> 192.168.1.120

Configurazione lato SERVER

Aprire una finestra terminale ed installare il nesessario:

sudo apt-get install nfs-kernel-server

I comandi per controllare il demone nfs-kernel-server sono:

/etc/init.d/nfs-kernel-server start|stop|restart|status

Nota:

Il server dovrebbe avere un IP statico, per evitare che il DHCP assegni ogni volta un ip differente,
e si debba sempre riconfigurare il client.

Le directories che devono essere condivise, vanno inserite nel file etc/exports.
Aprire il suddetto file:

sudo nano /etc/exports

All’interno di questo file, va inserita una riga, per ogni directory che si vuole condividere,
con la seguente sintassi:

/dir_server_da_condividere IP_client(opzioni,)

dove:

/dir_server_da_condividere: la directory sul server, che dobbiamo condividere;
Ip_client: l’indirizzo IP del client (nel nostro scenario 192.168.1.120)
(opzioni,): sono le opzioni di condivisione che riguardano il client

tali opzioni si suddividono in:

ro: la directory condivisa è in sola lettura, quindi il client non può scrivere.
Questa è l’opzione di default
rw: il client può leggere e scrivere nella directory condivisa
no_root_squash: di default ogni azione fatta dall’utente root sul client, viene trattata come fosse l’utente nobody sul server.
Selezionare questa opzione invece, dà al root del client, gli stessi diritti del root sul server. Questo implica tutti i problemi di sicurezza del caso!
no_subtree_check: disabilita la routine subtree_check, che verifica se un file richiesto dal client, è presente nella parte di volume esportata. In caso di grandi porzioni di volume esportate, disabilitare la routine con questa opzione, velocizza molto il trasferimento dei file.
sync: di default per prevenire la perdita di dati in caso il server si riavvii, exportfs assume un comportamento asincrono. Questa opzione invece prevede un comportamento sincrono, ovvero forza la scrittura dei dati appena questi arrivano al server.

nel nostro caso volendo condividere la directory /home/banco/Immagini/backupfoto del server, avremo:

/home/banco/Immagini/backupfoto 192.168.1.120(rw,no_root_squash)

Per questo caso, concediamo al client i privilegi di root come fossimo sul server, con gli annessi rischi
nel caso volessimo estendere l’accesso a tutti i client di rete da 120 a 200, ma solo in lettura:

/home/banco/Immagini/backupfoto 192.168.1.120/200(ro)

Una volta configurato il file, esporare le condivisioni con il comando:

sudo exportfs -a

e riavviare il servizio nfs-kernel-server

sudo systemctl restart nfs-kernel-server

Questi due comandi sono da eseguire dopo ogni modifica del file etc/exports.

AVANZATE

Per definire gli accessi al server, in maniera più dettagliata, si possono configurare i file
/etc/host.deny ed /etc/host.allow.
Il primo setta i divieti, il secondo i permessi.
Per prima cosa infatti si setta sempre il deny, poi l’allow.

Per prima cosa quindi vietare l’accesso a tutti i client editando il file /etc/host.deny con il comando:

sudo nano /etc/hosts.deny

ed aggiungendo la stringa:

portmap mountd nfsd statd rquotad : ALL

In sostanza vietiamo a tutti i client i seguenti servizi:
portmap: è il demone di assegnazione della porta dinamica per servizi come NFS.
fmountd: il demone che implementa il lato server del protocollo NFS.
nfsd: è lo speciale filesystem che dà accesso ad un server NFS.
statd: è il demone che gestisce il file lock, che non sono persistenti nel
file system e pertanto vengono persi in caso di reboot.
rquotad: è un rpc server che ritorna la quota-disco assegnata allo user.

Ora che abbiamo vietato tutto, assegnamo i permessi al client desiderato, editando il file /etc/host.allow:

sudo nano /etc/hosts.allow

inserendo la stringa

portmap mountd nfsd statd rquotad : 192.168.1.2 192.168.1.120

nota:

Va inserito nel file anche l’indirizzo IP del server.
Terminati i settaggi è necessario riavviare il servizio NFS, con il comando:

sudo systemctl restart nfs-kernel-server

Ora passiamo a configurare il lato client.

Configurazione lato CLIENT

Installare il pacchetto necessario, in questo caso nfs-common:

sudo apt-get install nfs-common

Come in precedenza configurare i file hosts.deny e hosts.allow.

sudo nano /etc/hosts.deny

inserendo il divieto universale:

portmap : ALL

poi sui permessi:

sudo nano /etc/hosts.allow

aggiungendo l’IP del server con la sintassi:

portmap : 192.168.1.2

Ora creare una directory per il punto di mount della condivisione

sudo mkdir /mnt/nfsshared/backup_foto

e montare con il comando:

sudo mount -t nfs 192.168.1.2:/home/banco/Immagini/backupfoto /mnt/nfsshared/backup_foto

se è tutto ok, possiamo inserire il montaggio in /etc/fstab:

sudo nano /etc/fstab

inserendo

192.168.1.2:/home/banco/Immagini/backupfoto  /mnt/nfsshared/backup_foto nfs4 _netdev,bg,nofail,rw,relatime,rsize=65536,wsize=65536 0 0

dove le opzioni sono:
_netdev: il filesystem risiede su un dispositivo di rete quindi evita che il sistema (client) tenti di montare questo filesystem quando ancora la rete non è attiva sul sistema stesso.
bg: se il tentativo di mount fallisce, un child in background continuerà a tentare di montare l’export.
nofail: Il boot continuerà anche se questo mount fallirà (es. il server è spento).
rw: sono i diritti di lettura/scrittura.
relatime: aggiorna i tempi di accesso agli “inode” e può migliorare le prestazioni.
rsize, wsize: indica la quantità di bytes per parte di dato. Migliora la prestazione di NFS.

Per smontare la condivisione

sudo umount /mnt/nfsshared/backup_foto
Categorie:Linux, Ubuntu Tag: , ,

Ubuntu 16.04: pip install wxpython

17 Ottobre 2018 Commenti chiusi

Installare wx su ubuntu 16.04 all’interno di un virtual environment, può risultare ostico
Se tentassimo infatti di installare le librerie wx con il comando:

pip install wxpython

otterremmo un errore e l’installazione non andrebbe a buon fine.

Come indicato sul sito ufficiale delle librerie wx,

è possibile installare le suddette librerie, con pip, tramite il comando:

pip install -U --pre -f https://wxpython.org/Phoenix/snapshot-builds/linux/gtk3/ubuntu-16.04 wxPython

dove le opzioni stanno ad indicare:

-U, –upgrade: aggiorna i pacchetti alla versione più recente;
–pre: Include le versioni pre-rilascio o in sviluppo, poichè di default, pip troverebbe solo le versioni stable;
-f, –find-links: cerca i link ad eventuali archivi, all’interno dell’url specificato.

Se l’errore durante l’installazione persiste, affidarsi ai Wheel.
Sul sito https://extras.wxpython.org/wxPython4/extras/linux/gtk3/
selezionare la propria distribuzione e successivamente la relativa architettura e versione desiderata di wx.
Scaricato il wheel, posizionarlo all’interno del venv ed installarlo con il comando:

pip install wxPython-4.0.3-cp35-cp35m-linux_x86_64.whl

Ovviamente il nome del file.whl varierà da caso a caso

Categorie:python, Ubuntu, wxPython Tag: , , ,

Ubuntu 16.04: python3 virtual environment

17 Ottobre 2018 Commenti chiusi

Può accadere che il metodo suggerito dal sito ufficiale di python

python3 -m virtualenv name_of_venv

non funzioni correttamente, inquanto, nonostante il virtual environment venga correttamente creato,
le librerie incluse riguardino ancora Python2.
Per creare correttamente il virtual environment, riferendosi alle librerie di Python3, è possibile installare il pacchetto python-virtualenv

sudo apt-get install python-virtualenv

Una volta installato il pacchetto, basterà dare il comando:

virtualenv --python=python3.5 venv3

dove al posto di python3.5, si utilizzerà la versione installata desiderata.

Una volta terminata la creazione del virtual environment si potrà verificare che la versione
di Python, sia quella corretta:

source name_of_venv/bin/activate
python
Categorie:python, Ubuntu Tag: , ,

Conky: Xfce4

9 Maggio 2018 Commenti chiusi

Installazione Conky

Installare i pacchetti conky-all, curl, lm-sensors e hddtemp,
con il comando:

sudo apt-get install conky-all curl lm-sensors hddtemp

Per prima cosa impostare il bit SUID su hddtemp in modo da assegnare allo user che esegue hddtemp, gli stessi privilegi dell’utente root.
Questo è necessario perchè conky non potrà altrimenti eseguire sudo autonomamente dal suo file di configurazione conkyrc:

sudo chmod u+s /usr/sbin/hddtemp

Comandi base di Conky

per eseguire conky da terminale:

conky &

per eseguire conky in background ed evitare che venga terminato alla chiusura del terminale:

conky -d

File di configurazione

Le configurazioni di conky risiedono nel file ~/.conkyrc, se non devesse esistere, fare una copia del file di default:

cp /etc/conky/conky.conf  ~/.conkyrc

E’ necessario riavviare conky per poter utilizzare il nostro file di configurazione:

killall conky
conky &

Il file di configurazione è diviso in due parti:
tutto ciò che riguarda la resa a schermo di conky risiede in conky.config mentre tutto ciò che riguarda la formattazione del testo risiede in conky.text.
Tutto ciò che non è compreso tra

${ }

viene interpretato da conky come testo semplice.

conky.config = {
    alignment = 'top_left',
    background = false,
    border_width = 1,
    cpu_avg_samples = 2,
    default_color = 'white',
    default_outline_color = 'white',
    default_shade_color = 'white',
    draw_borders = false,
    draw_graph_borders = true,
    draw_outline = false,
    draw_shades = false,
    use_xft = true,
    font = 'DejaVu Sans Mono:size=12',
    gap_x = 5,
    gap_y = 60,
    minimum_height = 5,
    minimum_width = 5,
    net_avg_samples = 2,
    no_buffers = true,
    out_to_console = false,
    out_to_stderr = false,
    extra_newline = false,
    own_window = true,
    own_window_class = 'Conky',
    own_window_type = 'desktop',
    stippled_borders = 0,
    update_interval = 1.0,
    uppercase = false,
    use_spacer = 'none',
    show_graph_scale = false,
    show_graph_range = false
}

conky.text = [[
${scroll 16 $nodename - $sysname $kernel on $machine | }
$hr
${color grey}Uptime:$color $uptime
${color grey}Frequency (in MHz):$color $freq
${color grey}Frequency (in GHz):$color $freq_g
${color grey}RAM Usage:$color $mem/$memmax - $memperc% ${membar 4}
${color grey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 4}
${color grey}CPU Usage:$color $cpu% ${cpubar 4}
${color grey}Processes:$color $processes  ${color grey}Running:$color $running_processes
$hr
${color grey}File systems:
 / $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color grey}Networking:
Up:$color ${upspeed eth0} ${color grey} - Down:$color ${downspeed eth0}
$hr
${color grey}Name              PID   CPU%   MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
]]

e corrisponde alla seguente grafica:

La lista di tutti i parametri è reperibile sul sito ufficiale.

alignment = ‘top_left’:
Indica la posizione della finestra di conky sullo schermo.
I valori accettati sono: alignment top_left, alignment top_right, alignment bottom_left, alignment bottom_right, alignment none

background = false:
Se settato a true, conky viene forzato a funzionare in background e non dipende da nessun terminale

border_width = 1:
Spessore del bordo in pixels

cpu_avg_samples = 2:
Numero di campionamenti per il monitoraggio della cpu

default_color = ‘white’:
colore di default di testo e bordo

default_outline_color = ‘white’:
colore di default dell’outline

default_shade_color = ‘white’:
colore di default dell’ombreggiatura

draw_borders = false:
Disegna i bordi del testo

draw_graph_borders = true:
Disegna i bordi dei grafici

draw_outline = false:
Disegna i bordi attorno a testi e linee, utile se il contrasto di background è insufficiente

draw_shades = false:
Aggiunge una sottile ombra sotto testi e linee per facilitare la lettura con background a medio
contrasto. Per contrasti insufficienti, vedere draw_outline.

use_xft = true:
Utilizza Xft (X FreeType interface Library) per fonts anti-aliased

font = ‘DejaVu Sans Mono:size=12’:
Il nome del font utilizzato in X. Costituito da tre parametri:
Font Name – Il nome del font, nel nostro caso “‘DejaVu Sans Mono”;
[size=] – [optional] la dimensione del font in pixels;
[weight] – [optional] in caso si voglia il grassetto, inserire la parola “bold”.

gap_x = 5:
Gap sull’asse x, rispetto al bordo dello schermo

gap_y = 60:
Gap sull’asse y, rispoetto al bordo dello schermo

minimum_height = 5:
Minima altezza della finestra di conky

minimum_width = 5:
Minima larghezza della finestra di conky

net_avg_samples = 2:
numero campionamenti per il traffico di dati

no_buffers = true:
Sottrae i buffers (file system) dalla memoria utilizzata

out_to_console = false:
Stampa sullo “stdout” (standard output) per essere visualizzato a terminale

out_to_stderr = false
Stampa sullo “stderr” (standard error)

extra_newline = false
Aggiunge una linea extra alla fine, quando sta scrivendo sullo “stdout”

own_window_class = ‘Conky’
Imposta manualmente il nome del window manager WM_CLASS. “Conky” di default

own_window_type = ‘desktop’
Serve per utilizzare alcuni hints del window manager che influiscono sulla visualizzazione di Conky

stippled_borders = 0
Stippling dei bordi in pixels

update_interval = 1.0
Intervallo di update di conky in secondi

uppercase = false
Serve per visualizzare il testo in maiuscolo

use_spacer = ‘none’
Aggiunge spazi attorno a certi oggetti. Utile quando si usano font particolari come “Bitstream Vera Sans Mono”

show_graph_scale = false
Mostra il valore massimo nella scala del grafico

show_graph_range = false
Mostra il time-range del grafico

Analizzando ora il formato del testo visualizzato nel file di default:

${scroll 16 $nodename - $sysname $kernel on $machine | }

Scrolling del testo (su 16 caratteri in movimento) delle variabili indicate con $

$hr

Disegna una riga orizzontale

${color grey}Uptime:$color $uptime

Visualizza la scritta uptime in grigio (delimitata dai tag $color).
La variabile che segue, $uptime, utilizza il colore di default (“white”)

${color grey}Frequency (in MHz):$color $freq
${color grey}Frequency (in GHz):$color $freq_g
RAM Usage:$color $mem/$memmax - $memperc% ${membar 4}
${color grey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 4}
${color grey}CPU Usage:$color $cpu% ${cpubar 4}
${color grey}Processes:$color $processes  ${color grey}Running:$color $running_processes

Stessa cosa del punto precedente con altri parametri.

$hr

Disegna una riga orizzontale

${color grey}File systems:
 / $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color grey}Networking:
Up:$color ${upspeed eth0} ${color grey} - Down:$color ${downspeed eth0}
$hr

Disegna una riga orizzontale

${color grey}Name              PID   CPU%   MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}

Modifica File di configurazione

Un esempio di file personalizzato del mio desktop è il seguente e sono stati modificati i font, i size del font, i colori e i parametri da visualizzare.
E’ necessaria l’installazione del font-awesome quindi:

sudo apt-get install fonts-font-awesome
conky.config = {
	alignment = 'top_right',
	background = true,
	cpu_avg_samples = 2,
	default_color = "FFFFFF",
	draw_borders = false,
	draw_graph_borders = false,
	draw_outline = false,
	draw_shades = true,
	use_xft = true,
	font = 'Ubuntu Mono:size=10',
	gap_x = 10,
	gap_y = 10,
	minimum_width = 0, minimum_height = 0,
	net_avg_samples = 2,
	no_buffers = true,
	out_to_console = false,
	own_window = true,
	own_window_class = "Conky",
	own_window_type = "normal",
	own_window_hints = "undecorated,below,sticky,skip_taskbar,skip_pager",
	own_window_transparent = true,
	own_window_colour = "000000",
	update_interval = 1,
	uppercase = false,
	override_utf8_locale = true,
	double_buffer = true,
	text_buffer_size = 32768,
	border_inner_margin = 10,
	border_outer_margin = 0,
	xftalpha = 0.8,
        color1 = CCAB8D,
};

conky.text = [[
	${color1}
	${voffset 5}
	${alignr}${font Ubuntu:style=Medium:pixelsize=50}${time %H:%M}${font}
	${voffset 5}
	${alignr}${font Ubuntu:style=Medium:pixelsize=13}${time %A %d %B %Y}${font}
	${voffset 5}
	${color #DD3A21}$nodename: ${scroll 16 $sysname $kernel on $machine}${color}
	${hr}
	${font FontAwesome}?${font} IP address:
        ${goto 20}${addrs eth0}
	${goto 20}${upspeedgraph eth0 30,178 06E9F8 2104FA}${goto 202}${downspeedgraph eth0 30,175 FFFF00 DD3A21}
	${font FontAwesome}${goto 20}?${font} ${upspeed eth0}${font FontAwesome}${goto 202}?${font} ${downspeed eth0}
	${hr}
	${font FontAwesome}?${font} DiskIO:
	${goto 20}${diskiograph_read 30,178 06E9F8 2104FA}${goto 202}${diskiograph_write 30,175 FFFF00 DD3A21}
	${font FontAwesome}${goto 20}?${font} ${diskio_read}${font FontAwesome}${goto 202}?${font} ${diskio_write}
	${hr}
	${font FontAwesome}?${font} Memory usage: 
        ${goto 20}${mem}/${memmax} (${memperc}%) | Swap: ${swapperc}%
	${goto 20}${memgraph 30,355 AAF5D0 00B35B}
	${hr}
	${color1}File systems:
	${color1}sda: /home${goto 125}${color}${fs_used /home}/${fs_size /home} ${fs_used_perc /home}% ${color1}					
	${color1}sda: /${goto 125}${color}${fs_used /}/${fs_size /} ${fs_used_perc /}% ${color1}								
        ${color1}sdb: /home${goto 125}${color}${fs_used /home/banco/mediaHD/}/${fs_size /home/banco/mediaHD/} ${fs_used_perc /home/banco/mediaHD/}% ${color1}							

	${hr}
	${color1}Temperatures in Celsius:
	${color1}sda			${alignr}	${color} ${execi 10 hddtemp /dev/sda | cut -c32-36}
	${color1}sdb			${alignr}	${color} ${execi 10 hddtemp /dev/sdb | cut -c31-36}
	${color1}Core0 			${alignr}${color} ${execi 60 sensors | grep "Core 0" | cut -c16-22}
	${color1}Core1 			${alignr}${color} ${execi 60 sensors | grep "Core 1" | cut -c16-22}
	${color1}GPU 			${alignr}	${color} ${execi 60 nvidia-settings -query [gpu:0]/GPUCoreTemp -t}°C
	${hr}
	${goto 20}CPU0: ${cpu cpu0}%${goto 100}${cpubar 7,80 cpu0}
	${goto 20}CPU1: ${cpu cpu1}%${goto 100}${cpubar 7,80 cpu1}
	${hr}
	${color #FFFF00}${goto 20}Name ${goto 200}Pid${goto 255}Cpu%${goto 310}Mem%${color}
	${goto 20}${top name 1} ${goto 180}${top pid 1}${goto 235}${top cpu 1}${goto 290}${top mem 1}
	${goto 20}${top name 2} ${goto 180}${top pid 2}${goto 235}${top cpu 2}${goto 290}${top mem 2}
	${goto 20}${top name 3} ${goto 180}${top pid 3}${goto 235}${top cpu 3}${goto 290}${top mem 3}
	${goto 20}${top name 4} ${goto 180}${top pid 4}${goto 235}${top cpu 4}${goto 290}${top mem 4}
	${goto 20}${top name 5} ${goto 180}${top pid 5}${goto 235}${top cpu 5}${goto 290}${top mem 5}

]];

Ecco le sezioni una per una

Orario e data

	${color1}
	${voffset 5}
	${alignr}${font Ubuntu:style=Medium:pixelsize=50}${time %H:%M}${font}
	${voffset 5}
	${alignr}${font Ubuntu:style=Medium:pixelsize=13}${time %A %d %B %Y}${font}


Nodename e Net

	${color #DD3A21}$nodename: ${scroll 16 $sysname $kernel on $machine}${color}
	${hr}
	${font FontAwesome}?${font} IP address:
        ${goto 20}${addrs eth0}
	${goto 20}${upspeedgraph eth0 30,178 06E9F8 2104FA}${goto 202}${downspeedgraph eth0 30,175 FFFF00 DD3A21}
	${font FontAwesome}${goto 20}?${font} ${upspeed eth0}${font FontAwesome}${goto 202}?${font} ${downspeed eth0}

Con scroll è possibile far scorrere il testo (16 caratteri) delle variabili sysname, kernel e machine.
Il traffico di rete in entrata ed uscita si ottiene con le variabili:
upspeedgraph, downspeedgraph, upspeed e downspeed
“hr” indica una linea di separazione

Disk IO

	${hr}
	${font FontAwesome}?${font} DiskIO:
	${goto 20}${diskiograph_read 30,178 06E9F8 2104FA}${goto 202}${diskiograph_write 30,175 FFFF00 DD3A21}
	${font FontAwesome}${goto 20}?${font} ${diskio_read}${font FontAwesome}${goto 202}?${font} ${diskio_write}

Il traffico di dati sull’HDD in lettura e scrittura si ottiene con le variabili:
diskiograph_read, diskiograph_write, diskio_read e diskio_write

Memory usage

	${hr}
	${font FontAwesome}?${font} Memory usage: 
        ${goto 20}${mem}/${memmax} (${memperc}%) | Swap: ${swapperc}%
	${goto 20}${memgraph 30,355 AAF5D0 00B35B}

“mem” indica la memoria utilizzata
“memmax” indica la memoria totale disponibile
“memperc” indica il rapporto tra le due
“swapperc” indica la percentuale di swap utilizzata


File Systems

	${hr}
	${color1}File systems:
	${color1}sda: /home${goto 125}${color}${fs_used /home}/${fs_size /home} ${fs_used_perc /home}% ${color1}					
	${color1}sda: /${goto 125}${color}${fs_used /}/${fs_size /} ${fs_used_perc /}% ${color1}								
        ${color1}sdb: /home${goto 125}${color}${fs_used /home/banco/mediaHD/}/${fs_size /home/banco/mediaHD/} ${fs_used_perc /home/banco/mediaHD/}% ${color1}							

“fs_used” indica la quantità di spazio utilizzato
“fs_size” indica la quantità di spazio totale disponibile
“fs_used_perc” indica la quantità di spazio disponibile occupata

Temperatures

	${hr}
	${color1}Temperatures in Celsius:
	${color1}sda			${alignr}	${color} ${execi 10 hddtemp /dev/sda | cut -c32-36}
	${color1}sdb			${alignr}	${color} ${execi 10 hddtemp /dev/sdb | cut -c31-36}
	${color1}Core0 			${alignr}${color} ${execi 60 sensors | grep "Core 0" | cut -c16-22}
	${color1}Core1 			${alignr}${color} ${execi 60 sensors | grep "Core 1" | cut -c16-22}
	${color1}GPU 			${alignr}	${color} ${execi 60 nvidia-settings -query [gpu:0]/GPUCoreTemp -t}°C
	${hr}

execi esegue il comando “command” ogni “num” secondi.
Nel caso specifico viene eseguito

hddtemp /dev/sda | cut -c32-36

ecco il perchè dell’assegnare il bit SUID ad hddtemp, che altrimenti, senza sudo non ritornerebbe nessun output. Dalla stringa in output di hddtem si estrapolano i gradi tramite cut.
Nel mio caso, avendo 2 HDD, si esegue la stessa cosa, sia per sda che sdb.
Per i processori si utilizza invece sensors.

	${color1}Core0 			${alignr}${color} ${execi 60 sensors | grep "Core 0" | cut -c16-22}
	${color1}Core1 			${alignr}${color} ${execi 60 sensors | grep "Core 1" | cut -c16-22}

Il discorso GPU invece dipende dai driver utilizzati.
Nel mio caso, avendo installato i driver NVIDIA proprietari, è necessario utilizzare il tool nvidia-settings con:

	${color1}GPU 			${alignr}	${color} ${execi 60 nvidia-settings -query [gpu:0]/GPUCoreTemp -t}°C

Con i driver open invece, è sempre possibile estrapolare i dati con sensors.
sensors può essere eseguito da terminale per visualizzare parecchie informazioni

	${color1}GPU 			${alignr}	${color} ${execi 60 nvidia-settings -query [gpu:0]/GPUCoreTemp -t}°C

La temperatura inerente la GPU, dovrebbe essere qualcosa simile a “temp1”, in questo caso:

sensors | grep "temp"

Nel mio caso l’output sarebbe di più righe e quindi ci si potrebbe avvalere di cut e awk.
Con awk selezionerei solo la seconda riga, poi filtrerei solo i caratteri indicanti la temperatura:

sensors | grep "temp1" | awk 'FNR == 2 {print}' | cut -c16-19}°C

Cpus

	${hr}
	${goto 20}CPU0: ${cpu cpu0}%${goto 100}${cpubar 7,80 cpu0}
	${goto 20}CPU1: ${cpu cpu1}%${goto 100}${cpubar 7,80 cpu1}
	${hr}
	${color #FFFF00}${goto 20}Name ${goto 200}Pid${goto 255}Cpu%${goto 310}Mem%${color}
	${goto 20}${top name 1} ${goto 180}${top pid 1}${goto 235}${top cpu 1}${goto 290}${top mem 1}
	${goto 20}${top name 2} ${goto 180}${top pid 2}${goto 235}${top cpu 2}${goto 290}${top mem 2}
	${goto 20}${top name 3} ${goto 180}${top pid 3}${goto 235}${top cpu 3}${goto 290}${top mem 3}
	${goto 20}${top name 4} ${goto 180}${top pid 4}${goto 235}${top cpu 4}${goto 290}${top mem 4}
	${goto 20}${top name 5} ${goto 180}${top pid 5}${goto 235}${top cpu 5}${goto 290}${top mem 5}

Qui vengono indicate le cpu e le barre grafiche (cpubar)
Infine con top vengon mostrati i 5 processi più esosi di risorse.

Inserire in avvio automatico il nostro script personalizzato.

Nel mio caso (xfce4) avviare Sessione e Avvio e nella sezione Avvio Automatico aggiungere
la voce conky, la descrizione del comando e il comando conky stesso:

Riavviando conky dovrebbe avviarsi in automatico secondo le nostre indicazioni.

Categorie:Conky, Xfce Tag: , ,

Ubuntu minimal: errori .Xauthority parse_vt_settings

8 Novembre 2017 Commenti chiusi

Installare ubuntu minimal come da guida

Al riavvio Loggarsi con il proprio utente

se siamo su virtualbox procedere con l’installazione dei pacchetti
virtualbox-guest-utils e virtualbox-guest-dkms:

sudo apt-get install virtualbox-guest-utils virtualbox-guest-dkms

e creare il file virtualbox.conf con i moduli da caricare all’avvio…

sudo nano /etc/modules-load.d/virtualbox.conf

…inserendo all’interno del file i moduli:

vboxguest
vboxsf
vboxvideo

ora installare xfce4 e lightdm:

sudo apt-get install xfce4 lightdm

Al termine dell’installazione, editare il file lightdm.conf:

sudo nano /etc/lightdm/lightdm.conf

inserendo/modificando le seguenti coppie chiave=valore:

[SeatDefaults]
allow-guest=false
autologin-user=<username>
user-session=xfce

La prima opzione non consente accesso ad utente ospite;
la seconda permette l’autologin (cancellare la coppia in caso si voglia accedere ogni volta inserendo le credenziali);
la terza non ha bisogno di commenti.

per le configurazioni di lightdm seguire
questa guida.

Riavviare:

sudo reboot

Se al riavvio lightdm non riesce ad avviare la sessione con
errore “Avvio sessione non riuscito”, potrebbero esserci più
cause.

Permessi file .Xauthority

il file .Xauthority risiede nella home directory di ogni user e memorizza le credenziali degli stessi users, in cookies utilizzati da xauth per l’identificazione delle sessioni di X. Quando viene avviata una sessione X il cookie viene usato per autenticare le connessioni ad un determinato display.
Se non si hanno i diritti di accesso a tale file, non è possibile avviare la sessione.

Assicurarsi quindi di avere i diritti sul file .Xauthority

ls -l .Xauthority

in caso i diritti fossero solo per root, modificarli riassegnadoli ad ‘username’:

sudo chown <username>:<username> -R /home/<username>/.Xauthority

E’ possibile anche eliminare lo stesso file, inquanto verrà ricreato al riavvio.

Riavviare. Se continua a presentarsi l’impossibilità del login:

Consultare il file log

E’ bene consultare il file /home/username/.local/share/xorg/Xorg.1.log
in modo da risalire agli errori. Solitamente vengono evidenziati anche quando si tenta di avviare la sessione da terminale con startxfce4, ma nel nostro caso abbiamo installato lightdm e potremmo essere bloccati nel DM con il messaggio “Avvio Sessione NON riuscito”.

Con la combinazione CTRL+ALT+F2 entriamo nella console virtuale ed effettuaiamo il login con il nostro utente.
Blocchiamo prima il servizio lightdm:

sudo service lightdm stop

visualizziamo il log suddetto:

cat /home/<username>/.local/share/xorg/Xorg.1.log

(EE) parse_vt_settings: Cannot open /dev/tty0 (Permission denied)

Alla presenza di questo errore dovrebbe essere risolutivo aggiungere al gruppo tty.
/dev/tty0 rappresenta il display corrente, se quindi il nostro utente non ha i diritti su questo dispositivo, non è possibile avviare la sessione.

sudo usermod -a -G tty <username>

(EE) parse_vt_settings: Cannot open /dev/tty0 (No such file or directory)

Altro errore ricorrente.
Il pacchetto xserver-xorg-legacy fornisce un wrapper per il server X, quando si hanno driver obsoleti e kernel diversi. Se non necessario, come nel mio caso, è bene disinstallarlo:

sudo apt-get remove xserver-xorg-legacy

Ovviamente il file Xwrapper deve rimanere quindi assicuriamoci che esista ed abbia la giusta configurazione

sudo nano /etc/X11/Xwrapper.config

le coppie nome=valore sono:

allowed-users=anybody
needs-root-rights=yes

need-root-rights serve per assicurare che Xorg venga avviato con privilegi da amministratore da qualsiasi utente (il nostro caso).

riavviare con

sudo reboot

Al riavvio si dovrebbe riuscire ad effettuare il login.

Categorie:Linux, Ubuntu Tag: ,

Ubuntu 16.10: libgstreamer-0.10.so.0: cannot open shared object file: No such file

25 Gennaio 2017 Commenti chiusi

install missing 64bit deb packages:

$ wget http://ftp.ca.debian.org/debian/pool/main/g/gstreamer0.10/libgstreamer0.10-0_0.10.36-1.5_amd64.deb
$ wget http://ftp.ca.debian.org/debian/pool/main/g/gst-plugins-base0.10/libgstreamer-plugins-base0.10-0_0.10.36-2_amd64.deb

or 32bit ones:

$ wget http://ftp.ca.debian.org/debian/pool/main/g/gstreamer0.10/libgstreamer0.10-0_0.10.36-1.5_i386.deb
$ wget http://ftp.ca.debian.org/debian/pool/main/g/gst-plugins-base0.10/libgstreamer-plugins-base0.10-0_0.10.36-2_i386.deb

install deb packages

sudo dpkg -i libgstreamer*.deb
Categorie:Linux, Ubuntu Tag:

Problem starting Steam on ubuntu 15.04 64-bit

19 Marzo 2016 Commenti chiusi

Problema con Steam su Ubuntu 15.04 64bit.
Dopo gli aggiornamenti, lanciando steam da terminale ottengo questo errore:

SteamUpdateUI: An X Error occurred
X Error of failed request:  BadValue (integer parameter out of range for operation)

il problema si risolve con i seguenti comandi:

cd $HOME/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
mv libstdc++.so.6 libstdc++.so.6.bak
cd $HOME/.steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu
mv libstdc++.so.6 libstdc++.so.6.bak

al riavvio di steam, l’update di Steam partirà senza problemi.

Categorie:Linux Tag:

ubuntu 15.04 64bit: PLEX doesn’t work

17 Agosto 2015 Commenti chiusi

First of all remove old plex packages.
From terminal:

cd /var/lib/dpkg/info

and

sudo rm -f plexmediaserver*

and finally:

sudo dpkg -r plexmediaserver

now get the package that fixes the issue:

sudo wget https://downloads.plex.tv/plex-media-server/0.9.12.1.1079-b655370/plexmediaserver_0.9.12.1.1079-b655370_amd64.deb

Install the new package (with default answers)…

sudo dpkg -i plexmediaserver_0.9.12.1.1079-b655370_amd64.deb

…and run the service:

sudo service plexmediaserver start

njoy

Categorie:Kubuntu, plex, Ubuntu Tag: , ,

Kubuntu 14.04: impossible to shutdown, logout, reboot

25 Aprile 2015 Commenti chiusi

After the last upgrade it’s impossible to reboot, shutdown and logout from K menu. When I click on the icon, the system does nothing.
No errors in log files.
If I open the konsole and shutdown the system with command

sudo halt

or reboot it with:

sudo reboot

I’ve no problems, the system, shutdowns/reboots correctly.

The only way to correct everything is to rename the file
.kde/share/config/ksmserverrc
and let the system to recreate it, after reboot.
So from the konsole:

sudo mv .kde/share/config/ksmserverrc .kde/share/config/ksmserverrc.old
sudo reboot
Categorie:Kubuntu, Linux Tag: