Come Configurare SQLWorkbench per PostgreSQL

SQLWorkbench è un SQL query tool free particolarmente efficace che supporta un ampio numero di DBMS. Scritto in Java è in grado di interfacciarsi con qualsiasi database per il quale sia disponibile un JDBC driver.  Essendo in java SQLWorkbench potrebbe essere eseguito in qualsiasi Sistema Operativo che disponga di JRE ( Java Runtime Environment).  L’ultima versione stabile è la Build 123 del settembre 2017.  Tra i database supportati e testati non poteva mancare PostgreSQL. Di seguito i passi per “installare” e configurare SQLWorkbench per PostgreSQL.

Per poter utilizzare SQLWorkbench è necessario java JRE. Possiamo controllare la versione java disponibile con java -version

# java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-1~deb9u1-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

per installare Oracle JRE  manualmente su macchina linux si può fare riferimento  al post   Oracle Java Runtime 8 installazione manuale – versione 8.121 – Debian 8.xx 64 bit

Configurare e Installare SQLWorkbench per PostgreSQL

SQLWorkbench non necessita di una vera installazione è sufficiente scaricare il pacchetto generico per tutti i S.O e decomprimere lanciare lo script  sqlworkbench.sh.
Il pacchetto è disponibile alla pagina

http://www.sql-workbench.net/downloads.html

Per poter interagine con postgresql serve inoltre lo specifico driver JDBC scaricabile all’indirizzo che andra opportunamente configurato in SQL workbench.

https://jdbc.postgresql.org/download.html

Operando con il terminale

scegliamo la directory opt per l’applicazione quindi

su 
mkdir /opt/sqlworkbench
cd /opt/sqlworkbench

scarichiamo il pacchetto con l’ultima versione stable di SQLWorkBench 123 e l’ultima versione  del driver JDBC 42.2.1

wget http://www.sql-workbench.net/Workbench-Build123.zip

wget https://jdbc.postgresql.org/download/postgresql-42.2.1.jar

 

Decomprimiamo il pacchetto con

unzip Workbench-Build123.zip

Rendiamo eseguibile per tutti gli users lo script di avvio workbench.sh

chmod a+x sqlworkbench.sh 

exit

Volendo si può creare un link simbolico nel desktop con

ln -s /opt/sqlworkbench/sqlworkbench.sh sqlworkbench

avviamo

La finestra in primo piano che viene presentata e quella per creare un profilo di connessione.

Per connettersi a postgresql è necessario a questo punto configurare il driver.

  • Click sul pulsante Manage Drivers
  • In primo piano ci sarà  una nuova finestra Manage drivers

  • Selezionare postgreSQL dall’ elenco di destra con i DBMS supportati
  • Click sul pulsante cartella in alto a sinistra e selezionare il file driver JDBC per postgres scaricato che apparirà nella Library e premere OK.
  • a questo  punto è possibile completare la il profilo di connessione

Si dovrà inserire:

  • nome per la connessione
  • nell URL:  host porta e database
  • username e password

SQLworkbench in azione grazie alla funzione  WbGrepData
viene ricercata la presenza della stringa Zeus in qualsiasi campo (field) di tutte le tabelle del database. 7 le tabelle riscontrate.

Database Compatibili con SQLworkbench

 

 

Risorse:

 

Annunci

Creare una Immagine ISO da un CD o DVD in Linux

Per creare una immagine ISO da un CD o DVD in linux  utilizzando da terminale si può utilizzare il classico comando dd  

In Linux le unità disco e  file di dispositivo speciali  ( /dev/zero /dev/random ) per il file system sono come normali file pertanto dd: disk dump comando per la copia e la conversione di file può essere  utilizzato efficacemente allo scopo.

La sintassi la creazione del immagine ISO è

 
sudo dd if=/dev/cdrom of="/file/ISO/di/destinazione" bs="block size" count="volume size"  

if=/dev/cdrom: legge i dati da /dev/cdrom in formato raw format (if=input file)

of=/tmp/cdimg1.iso>: scrive sul file /tmp/cdimg1.iso i.e. crea l’ immagine ISO ( of=output file )

Per determinare il block size e volume size si può utilizzare il comando isoinfo 

 

 
$ isoinfo -d -i /dev/cdrom
CD-ROM is in ISO 9660 format
System id: 
Volume id: IKEYBOARD_NANO
Volume set id: 
Publisher id: 
Data preparer id: 
Application id: NERO BURNING ROM
Copyright File id: 
Abstract File id: 
Bibliographic File id: 
Volume set size is: 1
Volume set sequence number is: 1
Logical block size is: 2048
Volume size is: 16729
Joliet with UCS level 3 found
NO Rock Ridge present

in forma abbreviata

$ isoinfo -d -i /dev/cdrom | grep -i -E 'block size|volume size' 
Logical block size is: 2048
Volume size is: 16729

il comando diventa

 
sudo dd if=/dev/cdrom of=/tmp/nano1.ISO  bs=2048 count=16729  

 

Per controllare la progressione della copia si può digitare in una seconda console da root il comando

watch -n 2 killall -USR1 dd

ogni 2 secondi si avrà un output del tipo

 
$ dd if=/dev/cdrom of=nano1.iso bs=2048 count=16729
1+0 records in
0+0 records out
0 bytes copied, 2.45319 s, 0.0 kB/s
57+0 records in
56+0 records out
114688 bytes (115 kB, 112 KiB) copied, 2.77981 s, 41.3 kB/s
441+0 records in
440+0 records out
901120 bytes (901 kB, 880 KiB) copied, 3.79972 s, 237 kB/s
825+0 records in
824+0 records out
1687552 bytes (1.7 MB, 1.6 MiB) copied, 4.72789 s, 357 kB/s
1273+0 records in
...

 

Se si desidera utilizzare un programma ad interfaccia grafica si può far ricorso a Brasero:

 

Risorse:

 

Systemd come controllare che un servizio sia in esecuzione in linux

Oramai praticamente tutte le nuove release delle distribuzioni Linux hanno abbandonando il denome init ( SystemV init o SysV init  ) per passare al demone systemd come controllore dei servizi e del sistema.

Uno dei principali vantaggi di systemd è la capacità di avviare i processi in parallelo (aggressive parallelization capabilities). Con init infatti i processi vengono avviati in modo seriale e un task può essere avviato solo quando il precedente si è concluso correttamente.  Come per avviene per init systemd è il primo processo che sia avvia ed è il padre di tutti i processi nati dopo successivamente, tipicamente ha assegnato pid=1.

A differenza di SysV init,  systemd init è responsabile del mount point, della crittografia, di syslog, etc  superando così le funzionalità di un init system di base. La gran parte delle azioni di systemd si svolge agendo su risorse denominate  “units”. Le units sono definite da files noti come unit files. Il tipo di unit files è in genere riconoscibile a partire dall’estensione del file. Conseguentemente lo unit file di un servizio avrà l’estensione .service: il servizio di dbase postgresql  avrà come target uno unit files del tipo postgresql.service.

Il comando utilizzato per controllare systemd è systemctl.

Conseguentemente la situazione abbastanza frequente di verificare che un servizio o demone  (service o daemon)  sia in esecuzione ad esempio: apache ,mysqld, postrgresql, samba, ssh, nfs, rsync, cron, syslogd, etc. in un sistema Linux con systemd init sarà diversa da quella con SysV init.

Controllare che un servizio sia attivo: comparazione tra SysV init e systemd init

SysV init

per controllare che il servizio postgresql sia in esecuzione con SysV init utilizziamo il comando

service nome-del-servizio status
per postgresql
service postgresql status

ubuntu  12

$ service postgresql status
9.1/main (port 5432): online

per dettagli sul controllo dello stato di un servizio in SysV init fare riferimento al post:

Come controllare che un servizio (service) sia in esecuzione in linux  

Systemd init

per controllare che un servizio con systemd  sia in esecuzione è necessario conoscere lo unit file di riferimento e utilizzare il comando systemctl

systemctl status nome-unit-file.estensione
per postgresql 
systemctl status postgresql@9.6-main.service

debian 9

# systemctl status postgresql@9.6-main.service
 postgresql@9.6-main.service - PostgreSQL Cluster 9.6-main
   Loaded: loaded (/lib/systemd/system/postgresql@.service; disabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-04-28 16:23:29 CEST; 4min 36s ago
  Process: 19786 ExecStop=/usr/bin/pg_ctlcluster --skip-systemctl-redirect -m fast 9.6-main stop (code=exited, status=0/SUCCESS)
  Process: 19792 ExecStart=postgresql@9.6-main --skip-systemctl-redirect 9.6-main start (code=exited, status=0/SUCCESS)
 Main PID: 19799 (postgres)
    Tasks: 6 (limit: 4915)
   CGroup: /system.slice/system-postgresql.slice/postgresql@9.6-main.service
           ├─19799 /usr/lib/postgresql/9.6/bin/postgres -D /var/lib/postgresql/9.6/main -c config_file=/etc/postgresql/9.6/main/postgresql.conf
           ├─19801 postgres: 9.6/main: checkpointer process   
           ├─19802 postgres: 9.6/main: writer process   
           ├─19803 postgres: 9.6/main: wal writer process   
           ├─19804 postgres: 9.6/main: autovacuum launcher process   
           └─19805 postgres: 9.6/main: stats collector process   

Apr 28 16:23:27 deb9 systemd[1]: Starting PostgreSQL Cluster 9.6-main...
Apr 28 16:23:29 deb9 systemd[1]: Started PostgreSQL Cluster 9.6-main.

come si può osservare l’outup è decisamente più articolato di sysV.

Unit file 

Per visualizzare il contenuto dello unit file responsabile dell’avvio del servizio postgresql si può utilizzare il comando: systemctl cat nome-unit

systemctl cat postgresql@9.6-main.service

# /lib/systemd/system/postgresql@.service
# systemd service template for PostgreSQL clusters. The actual instances will
# be called "postgresql@version-cluster", e.g. "postgresql@9.3-main". The
# variable %i expands to "version-cluster", %I expands to "version/cluster".
# (%I breaks for cluster names containing dashes.)

[Unit]
Description=PostgreSQL Cluster %i
ConditionPathExists=/etc/postgresql/%I/postgresql.conf
PartOf=postgresql.service
ReloadPropagatedFrom=postgresql.service
Before=postgresql.service

[Service]
Type=forking
# @: use "postgresql@%i" as process name
ExecStart=@/usr/bin/pg_ctlcluster postgresql@%i --skip-systemctl-redirect %i start
ExecStop=/usr/bin/pg_ctlcluster --skip-systemctl-redirect -m fast %i stop
ExecReload=/usr/bin/pg_ctlcluster --skip-systemctl-redirect %i reload
PIDFile=/var/run/postgresql/%i.pid
SyslogIdentifier=postgresql@%i
# prevent OOM killer from choosing the postmaster (individual backends will
# reset the score to 0)
OOMScoreAdjust=-900
# restarting automatically will prevent "pg_ctlcluster ... stop" from working,
# so we disable it here. Also, the postmaster will restart by itself on most
# problems anyway, so it is questionable if one wants to enable external
# automatic restarts.
#Restart=on-failure
# (This should make pg_ctlcluster stop work, but doesn't:)
#RestartPreventExitStatus=SIGINT SIGTERM

[Install]
WantedBy=multi-user.target

Visualizzare le dipendenze di una unit

In systemd init è possibile visualizzare anche tutte le dipendenze di un servizio quale postgresql con il comando systemctl list-dependecies postgresql@96-main.service.

systemctl cat systemctl list-dependencies  postgresql@9.6-main.service
postgresql@9.6-main.service
 ├─system-postgresql.slice
 └─sysinit.target
●   ├─apparmor.service
   ├─dev-hugepages.mount
   ├─dev-mqueue.mount
●   ├─keyboard-setup.service
   ├─kmod-static-nodes.service
   ├─lvm2-lvmetad.socket
   ├─lvm2-lvmpolld.socket
   ├─lvm2-monitor.service
   ├─proc-sys-fs-binfmt_misc.automount
   ├─sys-fs-fuse-connections.mount
●   ├─sys-kernel-config.mount
   ├─sys-kernel-debug.mount
   ├─systemd-ask-password-console.path
●   ├─systemd-binfmt.service
●   ├─systemd-hwdb-update.service
   ├─systemd-journal-flush.service
   ├─systemd-journald.service
●   ├─systemd-machine-id-commit.service
   ├─systemd-modules-load.service
   ├─systemd-random-seed.service
   ├─systemd-sysctl.service
   ├─systemd-timesyncd.service
   ├─systemd-tmpfiles-setup-dev.service
   ├─systemd-tmpfiles-setup.service
   ├─systemd-udev-trigger.service
   ├─systemd-udevd.service
   ├─systemd-update-utmp.service
   ├─cryptsetup.target
   ├─local-fs.target
   │ ├─-.mount
   │ ├─media-ArchivioR.mount
   │ ├─media-Home_Dati.mount
●   │ ├─systemd-fsck-root.service
   │ └─systemd-remount-fs.service
   └─swap.target
     └─dev-sda15.swap

Verificare lo stato di tutti i servizi in systemd init – linux

SysV init

Per verificare lo stato di tutti i servizi presenti un sistema sysV init basta usare l’opzione –status-all

$ service --status-all

In pratica –status-all consente di vedere  i servizi installati.

systemd 

Come già affermato systemd gestisce un numero più elevato di funzionalità rispetto a sysV quindi la visualizzazione di tutte le unit diventa una schermata piuttosto estesa.

In questo caso conviene filtrare le units chiedendo di visualizzare sono le unit di tipo servizio. Per visualizzare tutte le units che systemd può gestire si usa il comando

# systemctl list-units

per restringere il campo a quelle di tipo service aggiungere l’opzione –type=service 

# systemctl list-units --type=service
systemctl list-units --type=service
  UNIT                                                                                      LOAD   ACTIVE SUB     DESCRIPTION                                                                  
  alsa-restore.service                                                                      loaded active exited  Save/Restore Sound Card State                                                
  avahi-daemon.service                                                                      loaded active running Avahi mDNS/DNS-SD Stack                                                      
  binfmt-support.service                                                                    loaded active exited  Enable support for additional executable binary formats                      
  colord.service                                                                            loaded active running Manage, Install and Generate Color Profiles                                  
  console-setup.service                                                                     loaded active exited  Set console font and keymap                                                  
  cron.service                                                                              loaded active running Regular background program processing daemon                                 
  cups-browsed.service                                                                      loaded active running Make remote CUPS printers available locally                                  
  cups.service                                                                              loaded active running CUPS Scheduler                                                               
  dbus.service                                                                              loaded active running D-Bus System Message Bus                                                     
  ebtables.service                                                                          loaded 
...                                                               loaded active exited  Set the console keyboard layout                                              
  kmod-static-nodes.service                                                                 loaded active exited  Create list of required static device nodes for the current kernel           
  libvirt-guests.service                                                                    loaded active exited  Suspend/Resume Running libvirt Guests                                        
  libvirtd.service                                                                          loaded active running Virtualization daemon                                                        
  lightdm.service                                                                           loaded active running Light Display Manager                                                        
...                                                                     loaded active exited  Raise                                                            
● nginx.service                                                                             loaded failed failed  A high performance web server and a reverse proxy server                     
  polkit.service                                                                            loaded active running Authorization Manager                                                        
  postgresql.service                                                                        loaded active exited  PostgreSQL RDBMS                                                             
  postgresql@9.6-main.service                                                               loaded active running PostgreSQL Cluster 9.6-main                                                  
  rpcbind.service
.....
LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

runlevel e System state

SysV init runlevel

In SysV init il modo più semplice per visualizzare i servizi attivi in un dato runlevel è digitare un comando del tipo:

sudo ls -l /etc/rc(num-run-level).d/

systemd init System state ( runlevel )

In systemd il concetto di runlevel è sostituito dal concetto di System State o punto di sincronizzazione.  Per definire un determinato System State vengono utilizzati degli unit file particolari con estensione .target.  Uno unit.target garantirà di avere disponibile tutti gli units che definiscono uno specifico System State senza doversi preoccupare dei singoli elementi. Se si utilizza lo unit sound.target questo starà ad indicare che servizi per l’audio sono pronti all’audio.

In systemd i System State sono più numerosi dei runlevel quelli comparabili con i runlevel possono essere elencati con il comando:

systemctl list-units --type=target
systemctl list-units --type=target
UNIT                       LOAD   ACTIVE SUB    DESCRIPTION              
basic.target               loaded active active Basic System             
cryptsetup.target          loaded active active Encrypted Volumes        
getty.target               loaded active active Login Prompts            
graphical.target           loaded active active Graphical Interface      
local-fs-pre.target        loaded active active Local File Systems (Pre) 
local-fs.target            loaded active active Local File Systems       
multi-user.target          loaded active active Multi-User System        
network-online.target      loaded active active Network is Online        
network-pre.target         loaded active active Network (Pre)            
network.target             loaded active active Network                  
paths.target               loaded active active Paths                    
remote-fs-pre.target       loaded active active Remote File Systems (Pre)
remote-fs.target           loaded active active Remote File Systems      
rpcbind.target             loaded active active RPC Port Mapper          
slices.target              loaded active active Slices                   
sockets.target             loaded active active Sockets                  
sound.target               loaded active active Sound Card               
swap.target                loaded active active Swap                     
sysinit.target             loaded active active System Initialization    
time-sync.target           loaded active active System Time Synchronized 
timers.target              loaded active active Timers                   
virt-guest-shutdown.target loaded active active Libvirt guests shutdown  

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

22 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

Benchè il concetto di System State conseguito con gli unit.target sia decisamente più flessibile del concetto di runlevel è possibile evidenziare alcuni target che sono in relazione proprio i principali runlevel di SysV. A questo proposito si può precisare  sono diponibili anche unit  dal nome evocativo: 

systemctl list-units-files --type=target
UNIT FILE                  STATE              
...
runlevel0.target           disabled
runlevel1.target           disabled
runlevel2.target           static  
runlevel3.target           static  
runlevel4.target           static  
runlevel5.target           static  
runlevel6.target           disabled            
...
59 unit files listed.

Elencare i servizi abilitati in Systemctl

Per elencare tutti i servizi abilitati,  enabled,  si può far ricorso al solito greo

systemctl list-unit-files | grep enabled

es:

# systemctl list-unit-files | grep enabled
acpid.path                                                             enabled  
cups.path                                                              enabled  
apache2.service                                                        enabled  
atd.service                                                            enabled  
autovt@.service                                                        enabled  
avahi-daemon.service                                                   enabled  
clamav-freshclam.service                                               enabled  
console-setup.service                                                  enabled  
cron.service                                                           enabled         
...
...

per elencare i servizi in esecuzioni utilizzare il filtro running

systemctl  | grep running

es:

# systemctl | grep running
  proc-sys-fs-binfmt_misc.automount              loaded active running   Arbitrary Executable File Formats File System Automount Point                              
  acpid.path                                     loaded active running   ACPI Events Check                                                                          
  cups.path                                      loaded active running   CUPS Scheduler                                                                             
  init.scope                                     loaded active running   System and Service Manager                                                                 
  session-877.scope                              loaded active running   Session 877 of user maurizio        
...      
...

Comparazione tra runlevel e target ( System state) :

  • Run level 3 è emulato dal target multi-user.target;
  • Run level 5 è emulato da target graphycal.target;
  • runlevel3.target  è un link simbolico a multi-user.target;
  • runlevel5.target è un link simbolico a graphycal.target.

Comparazione tra alcuni comandi SysV init (service)  e systemd init (systemctl)

systemctl start sshd.service service sshd start start
systemctl status sshd.service service sshd status status
systemctl stop sshd.service service sshd stop stop
systemctl reload sshd.service service sshd reload reload
ls /lib/systemd/system/*.service /etc/systemd/system/*.service ls /etc/rc.d/init.d/ lista tutti i servizi avviabili
systemctl enabled sshd.service service sshd enabled attivare un servizio al prossimo boot

Avviare e abilitare un servizio al prossimo boot

Per avviare un servizio come il webserver apache2 e come abilitarlo al riavvio al successvio boot

systemctl start apache2 

systemctl enable apache2

Risorse:

systemdctl State: degraded – una unit ha fallito l’avvio

Se controllando lo status del demone systemd con

systedctl status

compare  State: degraded

systemctl status State degraded

maurizio@deb9:~$ systemctl status
● deb9
    State: degraded
     Jobs: 0 queued
   Failed: 1 units
    Since: Sun 2017-08-04 14:01:22 CET; 6h ago
   CGroup: /
           ├─user.slice
           │ └─user-1000.slice
           │   ├─ session-2.scope

questo sta a significare che una delle units ha fallito l’avvio.

Per controllare quale unit è coinvolta utilizzare il comando

systemctl –failed

maurizio@deb9:~$ systemctl --failed
  UNIT               LOAD   ACTIVE SUB    DESCRIPTION                                                                              
● networking.service loaded failed failed Raise network interfaces                                                                 

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

1 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

controlliamo lo unit con systemctl status networking.service

maurizio@deb9:~$ systemctl status networking.service 
root@deb9:/etc/network/interfaces.d# systemctl status networking.service
 networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sun 2018-02-04 20:36:48 CET; 31s ago
     Docs: man:interfaces(5)
  Process: 17836 ExecStop=/sbin/ifdown -a --read-environment --exclude=lo (code=exited, status=0/SUCCESS)
  Process: 17863 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=1/FAILURE)
  Process: 17857 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude
 Main PID: 17863 (code=exited, status=1/FAILURE)

Aug 04 20:36:47 deb9 ifup[17863]: than a configuration issue please read the section on submitting
Aug 04 20:36:47 deb9 ifup[17863]: bugs on either our web page at www.isc.org or in the README file
Aug 04 20:36:47 deb9 ifup[17863]: before submitting a bug.  These pages explain the proper
Aug 04 20:36:47 deb9 ifup[17863]: process and the information we find helpful for debugging..
Aug  04 20:36:47 deb9 ifup[17863]: exiting.
Aug 04 20:36:47 deb9 ifup[17863]: ifup: failed to bring up eth0
Aug 04 20:36:48 deb9 systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Aug 04 20:36:48 deb9 systemd[1]: Failed to start Raise network interfaces.
Aug 04 20:36:48 deb9 systemd[1]: networking.service: Unit entered failed state.
Aug 04 20:36:48 deb9 systemd[1]: networking.service: Failed with result 'exit-code'.


In questo caso ricontrollare e sistemare le impostazioni riguardanti i servizi di rete.

 

Risorse:

 

Networking creare un bridge su debian 9 per KVM

La creazione di un bridge di rete serve per soddisfare più esigenze. Dal punto di vista terminologico un bridge di rete è un elemento hardware o software che connette due o più reti in modo che possano comunicare tra di loro.

  • E’ possibile ad esempio create un bridge tra due schede di rete  e filtrare il traffico con un firewall.
  • Poichè un bridge è in grado di gestire più connessioni viene usata nella virtualizzione KVM per consentire alle macchine virtuali di comunicare con altri computer. La configurazione di default infatti consente la navigazione internet ma non permette la comunicazione con altri computer.

Bridge su singola scheda

Per creare il il bridge è necessaria la presenza del pacchetto bridge-utils

apt install bridge-utils

Il file di configurazione è il solito

/etc/network/interfaces

Di seguito il file di configurazione di un doppio bridge su un pc con due schede di rete standard: Realtek e Intel .

Network:   Card-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller driver: r8169
           IF: enp7s0 state: up speed: 1000 Mbps duplex: full mac: 00:e0:e4:69:01:43
           Card-2: Intel 82572EI Gigabit Ethernet Controller (Copper) driver: e1000e
           IF: enp8s0 state: up speed: 1000 Mbps duplex: full mac: 00:11:11:b1:16:b6

Il nome delle schede di rete enp7s0 è basato sul Predictable Network Interface Names utilizzato a partire dalla v197 di systemd.

dmesg | grep enp
[ 1.180950] r8169 0000:07:00.0 enp7s0: renamed from eth0
[ 1.326320] e1000e 0000:08:00.0 enp8s0: renamed from eth0

abilitare l’autoconfigurazione della schede e dei bridge con auto :
auto enp7s0
auto br0

manual per assicurarsi che ottengano indirizzi sul dispositivo se non quelli manuali indicati

iface enp7s0 inet manual

Le impostazioni riportate di seguito riguardano la configurazione di due bridge statici sulle due schede presenti.
I settaggi tengono conto anche di di ipv6

:~$ cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# Network interfaces
allow-hotplug enp7s0
allow-hotplug enp8s0

# abitilità la configurazione automatica  
auto enp7s0 

iface enp7s0 inet manual
iface enp7s0 inet6 manual

# set up bridge0 and give it a static ip
auto br0
iface br0 inet static
 address 192.168.1.121
 netmask 255.255.255.0
 network 192.168.1.0
 broadcast 192.168.1.255
 gateway 192.168.1.1
 bridge_ports enp7s0 #eth0
 bridge_stp off
 bridge_fd 0
 bridge_maxwait 0
 dns-nameservers 8.8.8.8

#allow autoconf for ipv6
iface br0 inet6 auto
       accept_ra 1

...
...

in caso di modifiche per riavviare il bridge

systemctl  start mode-bridge

File di configurazione in debian con il settaggio del bridge di tipo static su enp8s0

cat /etc/network/interfaces

:~$ cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

....
....
auto enp8s0
...
iface enp8s0 inet manual
iface enp8s0 inet6 manual
...
# enp8s0 network interface 
# set up bridge and give it a static ip
auto br1
iface br1 inet static
 address 192.168.2.141
 netmask 255.255.255.0
 network 192.168.2.0
 broadcast 192.168.2.255
 gateway 192.168.2.1
 bridge_ports enp8s0 #eth1
 bridge_stp off
 bridge_fd 0
 bridge_maxwait 0
 dns-nameservers 8.8.8.8

#allow autoconf for ipv6
iface br1 inet6 auto
        accept_ra 1

 

Riavvio Bridge

per riavviare un bridge in genere si ricorre a mode-bridge
il comando varia a seconda che sia attivo il gestore di sistema e di servizi systemd o SysV

Debian/Centos/linux
- systemd
systemctl stop mode-bridge  
e
systemctl start mode-bridge 
- System V init (initscript) 
/etc/init.d/mode-bridge stop     
e 
/etc/init.d/mode-bridge start

 

Configurazione Bridge  su Pc desktop

La gestione della connessioni di rete in un pc desktop debian attualmente è demandata a NetworkManager.

In generale network-manager gestisce solamente le interfacce di rete che non risultano dichiarate in /etc/network/interfaces

Tuttavia qualora si installi KVM su pc desktop con attivo Network-Manager potrebbe inzialmente risultare comoda o necessaria anche la disabiltazione manuale della scheda di rete da usare per il bridge.

 

Risorse:

Come determinare e cambiare la frequenza di refresh del monitor in linux

In linux per determinare via terminale la frequenza di refresh del proprio monitor si utilizza il comando xrandr.

Il comando xrandr senza opzioni consente infatti di visualizzare i modi: cioè  le risoluzioni e le frequenze a disposizione per ciascun modo attivo ( connected) .

xrandr
$ xrandr 
Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 16384 x 16384
VGA-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DVI-0 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 550mm x 344mm
   1920x1200     59.95*+
   1920x1080     60.00    60.00    50.00   59.94 
   1600x1200     60.00
   1680x1050     59.88
   1280x1024     75.02    60.02
   1440x900      74.98    59.90
   1152x864      75.00
   1024x768      75.08    70.07    60.00
   832x624       74.55
   800x600       72.19    75.00    60.32
   640x480       75.00    72.81    66.67    60.00
   720x400       70.08

 

Altro esempio

$ xrandr
Screen 0: minimum 320 x 200, current 3840 x 2160, maximum 16384 x 16384
DisplayPort-0 connected 3840x2160+0+0 (normal left inverted right x axis y axis) 953mm x 543mm
   3840x2160     30.00*   25.00    24.00    29.97    23.98  
   1920x2160     59.99  
   2560x1440     59.95  
   1920x1080     60.00    60.00    50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.95  
   1280x1024     75.02    60.02  
   1440x900      59.89  
   1280x960      60.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    70.07    60.00  
   832x624       74.55  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    72.81    66.67    60.00    59.94  
   720x400       70.08  
VGA-0 disconnected (normal left inverted right x axis y axis)
DVI-0 disconnected (normal left inverted right x axis y axis)

Il ruolo principale di xrandr è comunque quello di impostare la risoluzione e la frequenza del video per impostare/cambiare la frequenza di utilizza l’opzione -r

Negli esempi riportati a parità di risoluzione non ci sono frequenze superiori disponibili  quindi  impostiamo una nuova risoluzione con l’opzione  – s e una frequenza tra le disponibili con l’ opzione -r

xrandr -s 1920x1080 -r 60

Si può variare la frequenza di refresh con -r

xrandr -r 50

La Gestione della Risoluzione Video con arandr la GUI  per xrandr

La gestione della risoluzione video è demandata a programmi come xrandr, aranrd o lxrandr …. Questi applicativi consentono agevolemente di impostare la risoluzione dello schermo desiderata. L’efficace GUI Aranrd è presente in molte distro. In ubuntu ad esempio le impostazioni definite con vengono in un file .sh nella directory .screenlayout.

arandr jwm

arandr change jwm screen resolution

Di seguito un esempio del file .sh generato da arandr

#!/bin/sh
xrandr --output VGA-0 --off --output DVI-0 --off --output HDMI-0 --mode 1280x1024 --pos 0x0 --rotate normal

lo scripts avviato xrandr che imposta così l’output:
– VGA off
– DVI off
– HDMI modalità 1280×1024.

Avviando il file .sh da terminale oppure utilizzano un file manager la risoluzione dello schermo viene impostata come indicato.

se il file viene salvato come sr-default.sh da terminale può essere eseguito con

~/.screenlayout/sr-default.sh &

 

 

Risorse:

 

installare Postgresql 9.6 su Centos 7.4 64 bit

postgresql  go to:  PostgreSQL nel blog 

Default postgresql server in Centos 7 x86 64 is version 9.2.x

to install postgresql 9.6.x use   Postgresl yum repository.

https://www.postgresql.org/download/linux/redhat/

su -

Download and install the yum rpm PostgreSQL Repository

yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

We can use yum list to check the package now available.

yum list postgresql*

you have to see many postgresql96 packages

Install, inizialize and start postgresql 9.6.

install the client

yum install postgresql96

Install th server postgresql 9.6 with contrib package.

yum install postgresql96-server postgresql94-contrib

Than we initialize and start postgresql-9.6

#/usr/pgsql-9.6/bin/postgresql96-setup initdb
Initializing database ... OK
# systemctl enable postgresql-9.6
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-9.6.service to /usr/lib/systemd/system/postgresql-9.6.service.

# systemctl start postgresql-9.6

postgresql-9.6 /bin /lib /doc /share are in directory

/usr/pgsql-9.6

postgresql-9.6 data are in directory

/var/lib/pgsql/9.6

check that everything is OK

su - postgres  
pslq -l

we have to see a list of 3 databases

Firewall

Open postgresql port 5432 in Iptables Firewall

with editord vi, cmedit nano edit file /etc/sysconfig/iptables  :
vi -w /etc/sysconfig/iptables

# add next commit row

-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT

restart iptables firewall

Configure postgres set superuser postgres password

# switch to postgres user

  su - postgres

# open postgresql cli as postgres and connect to the postgres database

  psql postgres

# set the password of user postgres using alter

 ALTER USER postgres WITH PASSWORD 'your-postgres-password';

Setting pg_hba.conf
pg_hba.conf say postgresql which users can access which databases and how they can do. ( centos/redhat location /var/lib/pgsql/9.4/data/pg_hab.conf)

so we change METHOD to md5 for IPv4 and IPv5 local connections
then we can add other ipv4 connection as

host    all         all         192.168.1.0/24        md5

at the end we can have something like this

# TYPE  DATABASE    USER        CIDR-ADDRESS               METHOD                    
                                                                                
# "local" is for Unix domain socket connections only                            
local   all         all                                      peer    
# IPv4 local connections:                                                       
host    all         all           127.0.0.1/32               ident
host    all         all           192.168.1.0/24             md5      
# IPv6 local connections:                                                       
host    all         all           ::1/128                    ident                     
# Allow replication connections from localhost, by a user with the              
# replication privilege.                                                        
#local   replication     postgres                            peer           
#host    replication     postgres        127.0.0.1/32        ident          
#host    replication     postgres        ::1/128             ident  

In order for the change to take effect we have to

reload pg_hba.conf
from the postgresql cli

 postgres=# select pg_reload_conf();

from the shell as postgres user ( su – postgres ) pg_ctl reload

Setting postgresq.conf
In this file we can configure remote access to postgresql
(centos/redhat location: /var/lib/pgsql/9.4/data/postgresql.conf  )

look for listen_address in connections and authentication section.
to enable remote connections uncomment and change listen_address that by default is ‘localhost’ so access is limited to local machine.
So at the and listen_addresses look like*

listen_addresses = '*'

It is possible to set the listen_address to specific IPs using a comma separate list.

Restart postgresql con

servicectl  postgresql restart

Now if you want you can change post value

port=  5432
Change port value 
Default port value for postgresql is 5432
Usually to change port value (ex:5433 ) we have to uncomment and to modify
# port= 5432
to
port= 5433
in Centos 7 we have to do another step we have to create the file /etc/sysconfig/pgsql/postgresql-9.4 with
PGPORT=5433
export PGPORT
touch /etc/sysconfig/pgsql/postgresql-9.6
echo ‘PGPORT=5433’ >> /etc/sysconfig/pgsql/postgresql-9.6
echo ‘export PGPORT’ >> /etc/sysconfig/pgsql/postgresql-9.6

If port change you have to change iptables firewall setting and restart postgresql.

we can check changes in postgesql cli :

# show listen_addresses;
# show port;

we can also do another check as root with

# netstat -nxl | grep PGSQL
netstat -nlp | grep PGSQL
unix 2 [ ACC ] STREAM LISTENING 263035 /var/run/postgresql/.s.PGSQL.5432
unix 2 [ ACC ] STREAM LISTENING 263037 /tmp/.s.PGSQL.5432

and

# netstat -nlp | grep 5432
netstat -nlp | grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 28083/postmaster 
tcp6 0 0 :::5432 :::* LISTEN 28083/postmaster 
unix 2 [ ACC ] STREAM LISTENING 263035 28083/postmaster /var/run/postgresql/.s.PGSQL.5432
unix 2 [ ACC ] STREAM LISTENING 263037 28083/postmaster /tmp/.s.PGSQL.5432

Postgres blog’s post: