domenica 3 febbraio 2019

Installare stampanti HP su Raspberry Pi

HP prduce Driver per stampanti e Fax specificamente per Sistemi operativi Linux.
Per stampare con stampanti HP da Raspberry Pi occorre installare i programmi cups, hplip e l'interfaccia grafica di hplip.
Da shell i comandi sono i seguenti...

sudo su
apt-get update
apt-get install hplip cups
usermod -a -G lpadmin pi

Con solo queste istallazioni sarà possibile accedere all'interfaccia web delle applicazioni aprendo un browser web e digitando:

localhost:631

ma da questa interfaccia non sempre è possibile aggiungere stampanti che permettano di stampare. Infatti dopo aver installato la stampante la stampa si blocca per un errore definito "Filter failed"
Per superare questo errore è conveniente installare l'interfaccia grafica di hplip con il seguente comando:

apt-get install hplip-gui

Dopo l'istallazione sarà possibile accedere, dalla barra delle applicazioni e dal menù preferenze>>HPLIP Toolbox, alla procedura guidata per aggiungere una stampante.
Con le stampanti di rete (come è successo a me) è conveniente cercare la stampante manualmente scegliendo il pulsante "Opzioni avenzate" inserendo direttamente l'indirizzo ip della stampante in rete.

sabato 2 febbraio 2019

Condividere file con Windows da Raspberry e viceversa

Per condividere file tra windows e Linux (Raspbian) si usa un programma chiamato Samba (SMB/CIFS sono protocolli di comunicazione tra computer linux e windows all'interno di una LAN ed il nome è stato storpiato per renderlo più famigliare SMB -> Samba; SMB = Server Message Block, CIFS = Common Internet File Sistem).
Bisogna istallarli e configurarli; questi i comandi da shell:

sudo apt-get update
sudo apt-get upgrade

per aggiornare il software del nostro Raspberry; poi:

sudo apt-get install samba samba-common-bin smbclient cifs-utils

per istallare samba e cifs.

Condividere una cartella di Raspberry PI con MS Windows


Nel nostro Raspberry creare una cartella da condividere nella home dell'utente predefinito (pi)

mkdir ~/RPIShare

NB: la tilde (~) si fa con altGr + ì oppure con "pagina giù" oppure con Alt + 126.

Infine entrare nel file di configurazione di samba per modificare le impostazioni...

sudo nano /etc/samba/smb.conf

cercare questa stringa e modificarla o de-commentarla...

workgroup = WORKGROUP

Sempre nel file di configurazione arrivare fino in fondo al testo ed aggiungere queste righe:

[PiShare]
comment=Raspberry Pi Share
path=/home/pi/RPIShare
browseable=Yes
writeable=Yes
only guest=no

Nel computer Windows che farà da client sarà necessario attivare la specifica funzionalità:
Dal menù "Impostazioni" aprire la finestra "Funzionalità di Windows" e cercare la voce "Supporto per condivisione file SMB/CIFS" e spuntare la 'sottovoce' "client SMB/CIFS". Riavviare il PC.

Ora si potrà vedere Raspberry dalle risorse di rete di un PC MSWindows creando e modificando file all'interno delle cartelle (sia all'interno delle risorse di rete del PC Windows sia all'interno della cartella RPIShare che abbiamo creato in Raspberry.

Condividere una cartella MSindows con Raspberry PI

Un po' più macchinoso effettuare la condivisione opposta.
Prima di tutto creiamo una cartella, per esempio sul desktop del PC Windows, che conterrà i file da condividere (chiamiamola WinShare). Dalle "Proprietà" della cartella diamo ad "Everyone" le autorizzazioni di controllo completo sia nella scheda "Condivisione" sia in quella "Sicurezza".

Ora sul nostro Raspberry creiamo una cartella che diventerà la destinazione della cartella Windows condivisa (chiamiamola "WindowShare") ... da shell

mkdir ~/WindowShare

Ora, sempre da shell modifichiamo come root il file /etc/fstab:

sudo nano /etc/fstab

e aggiungiamo in fondo questa riga
 
//remote_ip_address/folder /srv/mount_destination cifs vers=3.0,username=<add_your_UN>,noauto,user 0 0

Poi modifichiamo le autorizzazioni per il file /usr/sbin/mount.cifs da -rwxr-xr-x a rwsr-xr-x
   
sudo chmod 4755 /usr/sbin/mount.cifs

Possiamo effettuare il reboot del nostro Raspberry. 
A questo punto per vedere i file di window nella cartella condivisa da windows sarà necessario effettuare il mount della stessa risorsa: sempre da shell:
   
USER=<add_your_UN> mount /srv/mount_destination

Ci verrà chiesta la password dell'utente windows che abbiamo indicato nel fil di configurazione
          
Password for <add_your_UN>@//remote_ip_address/folder:  ************

... e visualizzeremo nella cartella WindowShare del Raspberry il contenuto nella cartella WShare di Windows potendo modificare (come utente Pi) i file da entrambi i lati.

Collegarsi da remoto a Raspberry

SSH è un protocollo di comunicazione che può permetterci di lavorare da riga di comando su Raspberry Pi stando comodamente seduti davanti al nostro PC senza usare doppia tastiera, mouse e monitor...
In un vecchio post ho già indicato come trasformare il nostro computer Linux in server SSH e poi come accedere allo stesso computer via Putty da PC remoto.
La differenza interessante è che SSH è già istallato su Raspbian e non c'è quindi nessun bisogno di installare alcunché.
Basta accedere alla finestra (interfaccia grafica) Preferenze>>Raspberry Pi Configuration e, dalla finestra che si apre selezionare il tab "Interfaces"; lì sarà possibile abilitare SSH.
Da PC remoto quindi avviando Putty e inserendo l'IP del nostro Raspberry si aprirà una finestra terminale che ci permetterà di dialogare direttamente con lui.
Ancora più interessante sarà accedere da remoto alla interfaccia grafica di Raspberry...
In questo caso bisogna scaricare e installare sul nostro PC il programma VNC (scaricalo da qui) e ancora una volta, con lo stesso sistema utilizzato per SSH, abilitare anche VNC.
Dopo aver avviato il programma sul nostro PC ed inserito l'indirizzo IP del Raspberry si potrà lavorare comodamente con due computer usando un solo monitor, una tastiera ed un mouse.

Loggarsi come Root su RaspberryPi/Raspbian

L'utente Root, su Sistemi Operativi Linux, è l'utente amministratore e, normalmente, all'istallazione del S.O. viene richiesto all'operatore di impostare una password per tale utente. Difficilmente viene usata ma qualche volta serve: per esempio quando si istalla software o aggiornamenti di software.
Durante l'istallazione di Raspbian invece la richiesta di impostare una password per l'utente root non viene effettuata perché, per ragioni di sicurezza non viene impostata.
Se si prova infatti a loggarsi come Super User (su) da riga di comando verrà chiesta la password e non c'è modo di effettuare l'accesso.
L'unica possibilità sarà quella di modificarla utilizzando il comando :

sudo passwd su

Verrà richiesto di digitare la password e di ridigitarla per conferma.
Alla fine il sistema comunicherà che l'operazione è andata a buon fine.

Prima installazione ed uso di Raspberry Pi 3B+

Raspberry (nelle sue diverse versioni è un piccolo computer del valore commerciale di circa 30€ con un processore quad-core a 64 bit, 1.4 GHz di clock ed una memoria RAM di 1GB.
Non possiede un Hard Disk fisico ma al suo posto c'è una scheda SD (consigliata 8 GB ma si può usare anche molto più capiente 16 o 32 GB).
Con tale apparecchiatura è possibile usare diversi Sistemi Operativi sia Windows che Linux; esiste, in particolare, una distribuzione Linux appositamente progettata per questo dispositivo denominata Raspbian e derivata da Debian.
Dopo l'acquisto, fuori dalla scatola, il Raspberry si presenta come nell'immagine soprastante e per farlo funzionare occorre un alimentatore da 5 Volt, una tastiera, un mouse (o periferiche analoghe) anche wireless o bluetooth, un monitor (il tutto da collegare alle specifiche porte in dotazione al dispositivo) e, soprattutto, una capiente scheda SD.
Ecco la procedura per l'installazione del Sistema operativo Raspbian...

  • La prima operazione da compiere è quella di scaricare su un PC uno specifico programma per la formattazione di una scheda SD la quale, sia che sia stata acquistata ex novo, sia che sia già stata usata per altre attività, va formattata (si può usare un programma tipo "SD Card Formatter").
  • E' inoltre necessario scaricare dal sito ufficiale il S.O. nella sua versione più recente... (https://www.raspberrypi.org/downloads/raspbian/ oppure fai click qui per scaricare la versione più recente); il file scaricato è un file compresso con estensione .zip che va decompresso. Si otterrà un file con estensione .img che andrà, con opportuno programma salvato sulla scheda SD;
  • Il programma per salvare il file immagine sulla scheda SD potrebbe essere Win32DiskImager (scaricalo da qui); Basterà avviare il programma dopo istallazione, e indicare sia il file di origine (il file del S.O con estensione .img) e la cartella di destinazione (la scheda SD precedentemente formattata).
Ora si potrà inserire la scheda SD nello specifico alloggiamento e avviare il Raspberry...


mercoledì 16 gennaio 2019

Redirect 301 (Permanent) attraverso web.config

L'operazione di redirect può essere necessaria quando si cambia il nome del dominio per varie necessità ma non si vuole perdere il rank dei motori di ricerca. 
Si lasciano i contenuti del vecchio sito (circa tre mesi), se ne costruisce una copia con il nuovo dominio ed ogni pagina del vecchio sito viene reindirizzata al nuovo avendo cura di indicare la direttiva "permanent" (ovvero 301).
Quando i crawler dei motori di ricerca individuano le pagine del vecchio sito troveranno che la pagina punta ad un nuovo dominio e "impareranno" che ora i contenuti sono altrove (cioè nel nuovo sito).
Se il sito è costituito da poche pagine non sarà difficile inserire nella sezione head della pagina le direttive necessarie al re indirizzamento ma se le pagine sono alcune decine il lavoro si fa noioso... se poi il sito non è costituito da pagine statiche ma si usano linguaggi di script server side, non si può proprio fare....
Il sistema che propongo è adatto a chi usa CMS che utilizzano asp.net e che quindi possono modificare a manina il file web.config
Personalmente come CMS uso DNN che propone, per effettuare l'operazione di redirect, uno specifico modulo venduto a caro prezzo....


Per reindirizzare le pagine di un sito a nuovi URL utilizzando lo stato 301 agire come segue:
Creare un file rewriteMaps.config con questa struttura:

<?xml version="1.0" encoding="utf-8"?>
<rewriteMaps>
<rewriteMap name="Redirects">
<add key="/oldurl" value="/newurl" />
<add key="/oldurl2" value="/newurl2" />
... 
</rewriteMap>
</rewriteMaps>

Salvare il file nella root del sito.
Modificare il file web.config inserendo nella opportuna sezione il seguente codice:

<configuration>
<system.webServer>
<rewrite>
<rewriteMaps configSource="rewritemaps.config"><rewriteMaps>
<rules>
<rule name="Redirect rule1 for Redirects">
<match url=".*" />
<conditions>
<add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

Verificare il tutto sul sito: https://httpstatus.io/
Tale sito restituisce il response del server ad ogni chiamata di pagina... potrete così verificare se la procedura funziona

NB: il tutto può essere preceduto dall'analisi di quali siano le pagine indicizzate dal motore di ricerca: scrivere sulla barra della ricerca "site:xyz:it"; la risposta sarà l'elenco delle pagine indicizzate. Per ognuna delle pagine sarà possibile così inserire la chiave e lo specifico indirizzo di nuova destinazione nel file rewriteMaps.config

martedì 15 gennaio 2019

Impostazioni per GoogleAnalytics in un sito creato con DNN 9.1

Dalla versione 9.1 di DNN non sarà più possibile impostare il traking di google sul sito come si poteva fare da amministratori nelle versioni precedenti.
La scappatoia è creare due file da posizionare direttamente nel fileSystem del sito:

Primo file = "GoogleAnalytics.config" da copiare in Portals/0 con questo contenuto...

<?xml version="1.0" encoding="utf-8"?>
<AnalyticsConfig xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Settings>
    <AnalyticsSetting>
      <SettingName>TrackingId</SettingName>
      <SettingValue>UA-35742042-4</SettingValue>
    </AnalyticsSetting>
    <AnalyticsSetting>
      <SettingName>UrlParameter</SettingName>
      <SettingValue/>
    </AnalyticsSetting>
    <AnalyticsSetting>
      <SettingName>TrackForAdmin</SettingName>
      <SettingValue>false</SettingValue>
    </AnalyticsSetting>
  </Settings>
</AnalyticsConfig>


Sostituendo naturalmente "IL TUO TRAKING-ID" con il valore corretto fornito da Google.

Secondo File = "SiteAnalytics.config" da copiare nella root del sito con questo contenuto...

<?xml version="1.0" encoding="utf-8" ?>
<AnalyticsEngineConfig>
<Engines>
<AnalyticsEngine>
<EngineType>DotNetNuke.Services.Analytics.GoogleAnalyticsEngine, DotNetNuke</EngineType>
<ElementId>Head</ElementId>
<InjectTop>False</InjectTop>
<ScriptTemplate>
<![CDATA[   
     
    <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', '[TRACKING_ID]']);
      _gaq.push(['_trackPageview']);
      [PAGE_URL]

      (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();
    </script>
     
  ]]>
</ScriptTemplate>
</AnalyticsEngine>
</Engines>
</AnalyticsEngineConfig>

Salvati i files nelle rispettive posizioni Google Analytics comincerà a seguire il vostro sito.