Visualizzazione post con etichetta Centos 7. Mostra tutti i post
Visualizzazione post con etichetta Centos 7. Mostra tutti i post

mercoledì 30 maggio 2018

Network Manager OpenVPN Client su Centos 7

In modo abbastanza curioso Centos 7 non ha una configurazione base di Network Manager che prevede l'utilizzo di OpenVPN



Per installare il client si devono scaricare i seguenti pacchetti

NetworkManager-openvpn.x86_64 : NetworkManager VPN plugin for OpenVPN
NetworkManager-openvpn-gnome.x86_64 : NetworkManager VPN plugin for OpenVPN 

lunedì 9 ottobre 2017

Modificare grandezza delle iconde desktop di Centos 7

Le icone sul desktop di Centos 7 sono fastidiosamente grandi, indipendentemente dalla risoluzione. Come si risolve ?? cosi'

 gsettings set org.gnome.nautilus.icon-view default-zoom-level small

per creare uno shortcut sul desktop di una applicazione la via piu' semplice e' copiare il file .desktop da /usr/share/applications/ in /home/user/Desktop

venerdì 27 gennaio 2017

Docker su Centos 7

Ho provato a dare un'occhiata ai Container per un eventuale utilizzo parallelo a sostitutivo di alcune macchine virtuale. Quali sono le principali differenze:




Un container usa lo stesso kernel del SO principale cosi' come le librerie e la memoria e questo genera un risparmio sensibile di risorse delle macchina
In generale un Container utilizza un solo applicativo (Web Server, Sql Server) ed come regola generale i dati non sono contenuti nel container; da cio' deriva che non e' necessario delle immagini disco (con poi la necessita' di espanderle) e i Container hanno dimensioni di qualche decina di Mb e non delle centinaia di Mb come accade per le immagini

Un problema serio e' pero' il grado di isolamento. Se viene compromesso un servizio di una macchina virtuale la macchina host risulta salva. Vi sono invece notizie di compromissioni d container che permettono di attaccare il sistema operativo host

Queste sono le regole auree riportate da Red Hat

1) Don’t store data in containers
2) Don’t ship your application in two pieces
3) Don’t create large images
4) Don’t use a single layer image
5) Don’t create images from running containers (questo vuol dire di non usare i commit ma i dockerfile per creare un nuovo container)
6) Don’t use only the “latest” tag
7) Don’t run more than one process in a single container
8) Don’t store credentials in the image. Use environment variables
9) Don’t run processes as a root user
10) Don’t rely on IP addresses
per installare Docker su Centos 7 si inizia aggiungendo il repository

yum-config-manager \ --add-repo \ https://docs.docker.com/engine/installation/linux/repo_files/centos/docker.repo

e si installa la docker engine

yum -y install docker-engine makecache fast
si avvia quindi il servizio

service docker start

una volta installata la engine si inizia ad installare i container.
In generale un container si puo' installare mediante il comando pull ma se si lancia il comando run ed il container non e' installato allora sara' automaticamente installato

Per vedere  che  tutto funzioni la base e' installare questi due container

docker run hello-world
docker run docker/whalesay cowsay boo

il secondo mostra semplicemente il logo di Docker
dei container gia' pronti con le applicazioni piu' comuni si possono scaricare da Docker Store

la lista dei container si ottiene mediante
docker images

mentre il carico di lavoro mediante
docker ps

per entrare in shell sulla container si usa
docker run -i -t  [nome_container] /bin/bash

i container si stoppano con
docker stop [nome_container]

per aggiornare un container, visto che i dati risiedono nel file system normale dell'host, e' sufficiente stoppare il container, distruggerlo ed effettuare il pull della nuova immagine

Due esempi di comandi per lanciare dei servizi container
Apache (container httpd:alpine  docker pull httpd:alpine)
docker run -d -p 8080:80 --name apache -v /home/linnocenti/docker/:/usr/local/apache2/htdocs/ httpd:alpine

La prima cosa da notare e' il forwarding della porta 80 del container verso la porta 8080 dell'host (per questo il container e' raggiungibile su http://localhost:8080)
La seconda e' che i file html statici sono depositati nel filesystem dell'host (/home/linnocenti/docker)


MySql (container mysql  docker pull mysql)
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

Nel caso in cui si dovesse fare una installazione LAMP il container Httpd deve riuscire ad interagire con Mysql..questo e' effettuato mediante lo switch link




docker run --name lamp --link some-mysql -d httpd:alpine

martedì 3 gennaio 2017

Pebble SDK su Centos 7

Colpo di genio del nuovo anno : comprare un Pebble (usato) e scoprire un paio di giorni dopo che Pebble e' stato acquistato da FitBit e che quindi dismetteranno tutto il supporto compreso il cloud !!

Mi sono quindi affrettato almeno a configurarmi l'SDK di Pebble prima che diventi non disponibile



Le istruzioni riportate sul sito sono per distribuzioni Linux basate su apt ma ho provato lo stesso l'installazione su Centos
Il pacchetto dell'SDK 64 di Pebble si scarica da qui

-----------------------------
mkdir ~/pebble-dev/
cd ~/pebble-dev/
tar -jxf ~/Downloads/pebble-sdk-4.5-linux64.tar.bz2
echo 'export PATH=~/pebble-dev/pebble-sdk-4.5-linux64/bin:$PATH' >> ~/.bash_profile
. ~/.bash_profile

-----------------------------

si deve poi installare pip ed virtualenv di Python (e nessun problema)
---------------------------
cd ~/pebble-dev/pebble-sdk-4.5-linux64 
virtualenv --no-site-packages .env 
source .env/bin/activate 
pip install -r requirements.txt 
deactivate
---------------------------
in questo caso deactivate mi ha dato errore ma non ha creato problemi per i passi futuri
Vengono scaricati diversi pacchetti ma non sono riuscito a trovare una opzione per configurare il proxy server.
Si devono poi installare le dipendenze per il compilare. Nessun problema per installare libpixman e libsdl (peraltro gia' presenti)  ma su Centos non esiste un pacchetto precompilato per la libreria libfdt e si deve quindi partire dai sorgenti.
Si scarica il file tgz da GitHub e si lancia

make

nella sottodirectory libfdt viene creata la libreria libfdt-1.3.0.so. Il problema e' che l'emulatore di Pebble ricerca la libreria libfdt.so.1. Quindi e' necessario o rinominare il file oppure creare un symlink con il nome richiesto.
Usanso make install non funziona e quindi ho copiato a mano la libreria compilato in /usr/lib e /usr/lib64

L'installazione delle applicazioni sul telefono non avviene mediante il cavo, che di fatto e' funzionale solo alla ricarica, ma passa attraverso il telefono a cui e' accoppiato l'orologio


Si deve quindi attivare il pulsante a scorrimento. Non funziona con il telefono in modalita' HotSpot ma in associazione ad un vero e proprio Access Point


per creare un nuovo progetto (Javascript o C) si usa
pebble new-project [--simple] [--javascript] [--worker] [--rocky] NAME

che genera un template su cui iniziare a lavorare

pebble build per compilare

ed infine per installare si usa
pebble install --phone IP (per il telefono)
pebble install --emulator basalt (per l'emulatore. i nomi dei vari dispositivi sono riportati qui sotto)




Emulatore in esecuzione
Per interagire con l'emulatore si usano i tasti freccia

freccia su = Up
freccia giu' = Down
freccia destra = Select
freccia sinistra = Back

Per visualizzare i log si usa

pebble log

per fare piu' in fretta si puo' fare
pebble wipe & pebble build & pebble install --emulator diorite --logs




martedì 20 dicembre 2016

Hosting su Firebase con Centos 7

Firebase offre la possibilita' di avere anche un hosting di contenuti statici (quindi si puo' utilizzare scripting lato client ma non scripting lato server...niente PHP)

Per sfruttare tale opzione si utilizza Firebase-CLI via NPM. Si parte su Centos 7 installando NPM mediante il comando

curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -

e

yum install -y nodejs

a questo punto si installa Firebase-CLI con 

npm install -g firebase-tools
si effettua il login

firebase login (si apre una pagina del browser per l'autenticazione anche a due vie)



ci si sposta nella root del progetto HTML che si vuole pubblicare su Firebase e si digita

firebase init

(vengono creati alcuni file tipo firebase.json e .firebaserc)

di default viene creata una directory public....si copiano qui tutti i file HTML, CSS, JS etc



a questo punto si digita

firebase deploy




ed i file saranno copiati sui server di Firebase e saranno disponibili all'indirizzo

https://{nome_progetto}.firebaseapp.com

prima di fare il deploy l'applicazione Web puo' essere provata usando il comando

firebase serve

sara' avviato un server web locale all'indirizzo 

http://localhost:5000

la gestione dei file sull'hosting avviene in un modo piu' simile a GitHub che a FTP. In pratica si fa un commit di tutti i file ed il server mette in produzione l'ultimo snapshot. Se si e' commesso un errore su un file non si puo' modificare il singolo file ma si deve fare il commit di tutto il progetto

Se si vuole ritornare ad una situazione precedente sicuramente funzionante si puo' selezionare il salvataggio preferito dal tab hosting




mercoledì 30 novembre 2016

Mqtt con Arduino e Centos 7 ed Android

Ho voluto provare ad usare il protocollo MQTT, attualmente al centro dell'attenzione per InternetOfThings.
Si tratta di un protocollo molto leggero sull'occupazione di banda per lo scambio di messaggi (applicabile anche a sistemi di chat come per esempio Facebook Messenger) con la logica sottoscrizione/pubblicazione di messaggi su un canale. I client ricevono i messaggi in modalita' push




per installare il server MQTT su Centos si procede con
yum install mosquitto

e si apre la porta 1883 del firewall per accettare connessioni dall'esterno
firewall-cmd --zone=public --add-port=1883/tcp permanent

si lancia quindi il server dalla linea di comando
mosquitto

da linea di comando per pubblicare un messaggio (dati) con l'identificativo luca/inno (dato che e' in localhost non e' necessario specificare l'indirizzo del server)
mosquitto_pub -t "luca/inno" -m "dati" -q 1 -r

su un altro terminale si puo' lanciare il comando per sottoscrivere i messaggi del server
mosquitto_sub -t "luca/inno"
e si osservano i messaggi scorrere

Si puo' utilizzare una Arduino MKR1000 (o simile con connettivita' di rete) per pubblicare i dati mediante la libreria MQTT utilizzando il seguente script (in giallo le linee di codice specifiche di MQTT)
-----------------------------------------------------------
#include <SPI.h>
#include <WiFi101.h>

#include <MQTTClient.h>


char ssid[] = "Android";     //  your network SSID (name)
char pass[] = "XXXXXXXXXXXXXX";  // your network password
int status = WL_IDLE_STATUS;     // the Wifi radio's status

WiFiClient net;
MQTTClient client;
unsigned long lastMillis = 0;



void setup() {
  Serial.begin(9600);

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while (true);
  }
connect();

}

void connect(){
    // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to WPA SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network:
    status = WiFi.begin(ssid, pass);

    // wait 10 seconds for connection:
    delay(10000);
  }

  // you're connected now, so print out the data:
  Serial.print("You're connected to the network");
  printCurrentNet();
  printWifiData();

  client.begin("192.168.43.4", net);

  Serial.print("\nconnecting...");
  while (!client.connect("luca", "", "")) {
    Serial.print(".");
    delay(1000);
  }

}

void loop() {
  client.loop();

  // publish a message roughly every second.
  if(millis() - lastMillis > 1000) {
    lastMillis = millis();
    if (WiFi.status() != WL_CONNECTED)
          {
          connect();
          //printCurrentNet();
          }
     client.publish("luca/inno", "dati");
     Serial.println("Inviato");

  }
  
  
}

void printWifiData() {
  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
  Serial.println(ip);

  // print your MAC address:
  byte mac[6];
  WiFi.macAddress(mac);
  Serial.print("MAC address: ");
  Serial.print(mac[5], HEX);
  Serial.print(":");
  Serial.print(mac[4], HEX);
  Serial.print(":");
  Serial.print(mac[3], HEX);
  Serial.print(":");
  Serial.print(mac[2], HEX);
  Serial.print(":");
  Serial.print(mac[1], HEX);
  Serial.print(":");
  Serial.println(mac[0], HEX);

}

void printCurrentNet() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print the MAC address of the router you're attached to:
  byte bssid[6];
  WiFi.BSSID(bssid);
  Serial.print("BSSID: ");
  Serial.print(bssid[5], HEX);
  Serial.print(":");
  Serial.print(bssid[4], HEX);
  Serial.print(":");
  Serial.print(bssid[3], HEX);
  Serial.print(":");
  Serial.print(bssid[2], HEX);
  Serial.print(":");
  Serial.print(bssid[1], HEX);
  Serial.print(":");
  Serial.println(bssid[0], HEX);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.println(rssi);

  // print the encryption type:
  byte encryption = WiFi.encryptionType();
  Serial.print("Encryption Type:");
  Serial.println(encryption, HEX);
  Serial.println();
}

void messageReceived(String topic, String payload, char * bytes, unsigned int length) {
}

martedì 10 maggio 2016

Arduino YUN e Centos 7

In modo un po' curioso Centos 7 non riesce a risolvere l'indirizzo arduino.local (default di Yun) usando Avahi/Bonjour



Dopo un po' di tentativi, in modo molto pragamatico, ho preferito effettuare un ping sweep con nmap per trovare l'indirizzo ip della Yun tramite

nmap -sP 192.168.43.1/24

(di solito uso l'hotspot di Android come access point il cui DHCP stranamente non distribuisce gli ip in modo sequenziale, per esempio il telefono e' 192.168.43.1, Centos aveva preso 192.168.43.4  mentre la Yun l'ho trovata su 192.168.43.174)

Un altro piccolo dettaglio: tentando di aprire minicom dall'interno di una sessione SSH compare l'errore

Cannot find termcap entry for 'xterm-256color'

che si risolve digitando 

TERM=xterm screen

mercoledì 6 aprile 2016

Wifi su Lenovo X201 con Centos 7

Ho finalmente deciso di smontare la Ubuntu dal mio Lenovo X201 per fare spazio a qualcosa di piu' stabile come la CentOs 7, ed ovviamente sono andato incontro ai guai

L'installazione e' stata senza problemi a parte il fatto che la scheda WiFi, nonostante il modulo iwlwifi  fosse correttamente montato in /var/log/dmesg non compariva in ifconfig



Il primo tentativo e' stato quello di vedere (rfkill list all) se era bloccata in modo hardware e software ed effettìivamente sul dispositivo era presente un Soft Lock rimosso con rfkill unblock all.
Speravo di avere finito ma ancora niente scheda wifi. Usando nmcli d la wifi era dichiarata unmanaged (non gestita)
A questo punto ho provato ad installare

yum install Network-Manager-wifi 

e finalmente ho preso il controllo della scheda WiFi

giovedì 20 agosto 2015

Samba su Centos 7

Per installare Samba su Centos 7 ho seguito questi passi (la macchina ha Selinux disattivato)

yum install samba samba-client samba-common

ed in seguito

systemctl enable smb.service
systemctl enable nmb.service
systemctl restart smb.service
systemctl restart nmb.service

ad un primo tentativo il servizio nmd non veniva tirato su, ho risolto facendo uno yum update (e' quindi consigliabile farlo da subito prima dell'installazione dei pacchetti)

dato che il server su cui lo ho installato ha due interfacce (una con ip pubblico ed una con ip privato)  ho modificato il file /etc/samba/smb.conf per mettere in ascolto solo sull'interfaccia interna modificando

[global] 
interfaces = 10.1.1.16 lo 
bind interfaces only = yes

per verificare che tutto sia andando a buon fine si puo' digitare netstat -tapn | grep smbd

Rimane da aprire la porta del firewall 

firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd reload

visto che era richiesto l'accesso autorizzato ad una cartella condivisa e' stato creato un utente samba generico che permette di scrivere sulla directory del web server

smbpasswd -a www_user


il file smb.conf finale e' di questo tipo
---------------------------------------------------
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = centos
security = user
map to guest = bad user
dns proxy = no
interfaces = 10.1.1.16 lo
bind interfaces only = yes
#============= Share Definitions ==============
[www]
path = /var/www/html
valid users = www_user
read only = No
create mask = 0777
directory mask = 0777

venerdì 29 maggio 2015

2 Nic su Centos 7

Alcune volte puo' essere comodo avere installate due schede di rete, una con indirizzo pubblico ed una con indirizzo di rete interna.

Su Centos la gestione di una scheda aggiuntiva non e' proprio immediata come su altre distribuzioni, a partire dal nome delle interfacce

Dopo aver installato la scheda si procede montato il modulo corrispondente e si digita ifconfig
---------------------------------------
enp0s29u1u4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.1.238  netmask 255.255.255.0  broadcast 10.1.1.255
        inet6 fe80::21f:5bff:feff:272e  prefixlen 64  scopeid 0x20<link>
        ether 00:1f:5b:ff:27:2e  txqueuelen 1000  (Ethernet)
        RX packets 513511  bytes 486606241 (464.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 39723 (38.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet xxx.xxx.xxx.xxx  netmask 255.255.255.0  broadcast xxx.xxx.xxx.xxx
        inet6 fe80::76d0:2bff:fe33:1b57  prefixlen 64  scopeid 0x20<link>
        ether 74:d0:2b:33:1b:57  txqueuelen 1000  (Ethernet)
        RX packets 40416982  bytes 21343890651 (19.8 GiB)
        RX errors 0  dropped 9381  overruns 0  frame 0
        TX packets 44936717  bytes 45611506292 (42.4 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 3209  bytes 330370 (322.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3209  bytes 330370 (322.6 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
---------------------------------------
l'interfaccia enp3s0' e' quella che e' stata configurata in automatico durante l'installazione mentre la enp0s29u1u4 e' quella aggiunta in un secondo momento. Ci si deve annotare il MAC Address della nuova scheda.

Si va quindi nella directory /etc/sysconfig/network-scripts/ e si duplica il file ifcfg-enp3s0 su un nuovo file ifcfg-enp0s29u1u4 (da notare che il nome corrisponde all'dentificativo di ifconfig)
---------------------------------------------
TYPE=Ethernet
BOOTPROTO=static
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s29u1u4
ONBOOT=yes
IPADDR0=10.1.1.238
PREFIX0=24
IPV6_PEERDNS=yes
HWADDR=00:1f:5b:ff:27:2e

---------------------------------------------
si inserisce in HWADDR il valore copiato da ifconfig e si elimina il gateway

si rilancia la rete con il comando
systemctl restart network.service

Puo' essere utile mettere in ascolto il demone SSH su entrambe le interfacce di rete (sia quella interna che quella esterna). Per fare cio' si edita il file /etc/ssh/sshd_config impostante il ListenAddress a 0.0.0.0 (che equivale a tutti gli indirizzi IP impostati sulla macchina)

il server SSH si aggiorna con 
systemctl restart sshd.service

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...