SMsoft – informatica e dintorni

varie su OSX, GNU/Linux e l'Open Source

Linux: Montare una cartella remota con sshfs

Linux mette a disposizione molti sistemi per la connessione a file system remoti. SSHFS (Secure SHell FileSystem) è un filesystem che permette di condividere cartelle in modo sicuro tramite la connessione SSH. Nel PC locale, la risorsa remota verrà montato tramite FUSE (Filesystem in Userspace).

Premessa:
Ipotizziamo il seguente scenario:

  • Sistema Locale: s1.local, IP address: 192.168.0.100
  • Sistema Remoto: s2.local, IP address: 192.168.0.101

Ora vediamo come montare la directory remota /home/backup di s2 nella directory locale di s1 /backup. Tutto questo verrà fatto con l’utente root, anche se con piccole modifiche sarà possibile farlo gestire anche da un utente senza privilegi di root.

Iniziamo:
Innanzitutto bisogna installare sshfs nel Sistema Locale (s1):

apt-get install sshfs

Aggiungiamo l’utente root al gruppo fuse:

adduser root fuse

Creiamo la cartella /backup per montare il file system remoto:

mkdir /backup
chown root /backup

Montiamo il FileSystem remoto /home/backup nella cartella /backup:

sshfs -o idmap=user root@192.168.0.101:/home/backup /backup

Nota: il codice -o idmap=user fa si che nel caso i sistemi abbiamo un differente user ID non ci siano problemi di permessi.

Dopo aver eseguito il precedente comando, verrà richiesta la password dell’utente root su s2 ed eventualmente di accettarne la chiave pubblica.

Digitanto ora “mount” si potrà verificare che la cartella remota sia stata montata:

mount
...
...
/dev/sda1 on /boot type ext2 (rw)
root@192.168.0.101:/home/backup on /backup type fuse.sshfs (rw,nosuid,nodev,max_read=65536)

Ora, per smontare la cartella, basterà eseguire:

fusermount -u /backup

Montaggio automatico all’avvio

Nel caso sia necessario montare il FileSystem remoto all’avvio, bisognerà caricare la chiave pubblica di s1 su s2 in modo che non venga più richiesta la password durante la connessione ssh.

Se non avete mai creato una chiave pubblica/privata su s1, basterà digitare su s1:

ssh-keygen

e premere invio quando richiesto. Questo creerà la chiave pubblica in /root/.ssh/id_rsa.pub

Per copiare la chiave pubblica in s2, bisognerà digitare:

ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@192.168.0.101

Per controllare che funzioni tutto correttamente, basterà effettuare un ssh verso s2 e verificare che non venga richiesta la password:

ssh root@192.168.0.101

Nota: solo come promemoria, ricordo che la chiave pubblica, con il comando ssh-copy-id viene copiata in $HOME/.ssh/authorized_keys di s2.

Benissimo, ci siamo quasi. Ora aggiungiamo al file /etc/rc.local le istruzioni per il montaggio del File System remoto, che verrà automaticamente effettuato al riavvio del sistema. Bisognerà inserire nel file /etc/rc.local, prima di un eventuale exit, la riga:

/usr/bin/sshfs -o idmap=user root@192.168.0.101:/home/backup /backup

Ora basterà riavviare e verificare che il FileSystem sia stato correttamente montato.

enjoy!

Verificare se il modulo gzip_static su nginx funziona

Siete curiosi di sapere se il modulo gzip_static di nginx funziona?
Innanzitutto bisogna installare strace che facciamo con il classico:

apt-get install strace

Ora bisogna recuperare il PID di uno dei worker process di nginx:

# ps auxw |grep nginx
root      8580  0.0  0.0   5000   756 ?        Ss   May05   0:00 nginx: master process /usr/sbin/nginx
www-data  8581  0.0  0.0   5220  1568 ?        S    May05   0:09 nginx: worker process
www-data  8582  0.0  0.0   5168  1448 ?        S    May05   0:04 nginx: worker process

I due worker process attivi hanno PID 8581 e 8582.
A questo punto “agganciamoci” ad uno dei processi, filtrando per gz e vediamo che succede:

#strace -p 8582 2>&1 | grep gz

Se l’output è qualcosa del tipo:

open("/var/www/css/style.css.gz", O_RDONLY|O_NONBLOCK) = 438
open("/var/www/js/utils.js.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)

significa che il modulo funziona regolarmente.
enjoy

Sottrarre del tempo ad un campo TIME di MySQL

Ipotizziamo di avere un campo chiamato ora di tipo TIME di un database MySQL che si chiama annunci che contiene orari del tipo “13:40:00″ e che tale orario debba essere automaticamente decrementato di due ore per tutti i record. Ecco una query per poterlo fare:

UPDATE annunci SET ora=TIMEDIFF( ora, "02:00:00" )

enjoy

Installare OpenNebula 3.1.0 su Debian Squeeze amd64

Nel repository squeeze-backports è presente il pacchetto OpenNebula 2.0.1 che possiamo installare con il classico apt-get. Se però volessimo installare l’ultima versione di OpenNebula su Debian squeeze a 64 bit, dovremo seguiere una differente procedura.

Procurarsi il pacchetto OpenNebula 3.1.0:

wget http://dev.opennebula.org/packages/opennebula-3.1.0/Debian-6.0.2/opennebula_3.1.0-1_amd64.deb

Installare auto-apt (presente nel ramo contrib di apt) per risolvere automaticamente le dipendenze:

apt-get install auto-apt

Installare OpenNebula:

auto-apt run dpkg -i opennebula_3.1.0-1_amd64.deb

enjoy!

Apache: redirect da http ad https

Abbiamo un nome a dominio www.pippo.it e vogliamo che qualsiasi pagina di questo dominio venga richiamata, si venga rediretti verso l’omonimo dominio con protocollo https. In pratica richiamando qualcosa del tipo:

http://www.pippo.it/index.html

in automatico il visitatore deve essere rediretto verso:

https://www.pippo.it/index.html

Bene, avremo sicuramente due file di configurazione di apache, uno che gestisce il dominio in https ed uno per il dominio in http. Apriamo il file di configurazione del dominio http dove troviamo qualcosa del tipo:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName  www.pippo.it
  ServerAlias pippo.it

  DocumentRoot /var/www/pippo
... ...
</VirtualHost>

ed aggiungiamo:

RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 2

Ora facciamo rileggere la configurazione ad apache:

/etc/init.d/apache2 reload

ed il gioco è fatto.

enjoy!

Debian: montare un FileSystem CIFS o SMBFS

Per poter montare un filesystem cifs o smbfs bisogna innanzitutto installare il pacchetto smbfs. Si può fare con il classico:

apt-get install smbfs

Va poi creata la cartella su cui montare la risorsa esterna, ad esempio:

mkdir  /mnt/ntserver

A questo punto, ipotizziamo di voler montare la condivisione agents dal server con IP 10.10.10.10, dove la risorsa è condivisa dall’utente guest. Dovremo eseguire:

mount -t cifs -o username=guest //10.10.10.10/agents /mnt/ntserver --verbose

nel caso sia necessaria una password, verrà richiesta durante il mount, oppure si potrà indicare direttamente con:

mount -t cifs -o username=guest,password=xxxxx //10.10.10.10/agents /mnt/ntserver --verbose

Per vedere se tutto ha funzionato, potremo eseguire:

mount

e controllare se la risorsa sia stata montata o meno.

enjoy

Debian: Symantec BackupExec 12 per 64 bit

L’installazione dell’agent per BackupExec 12 su Debian è abbastanza semplice.

Una cosa importante se volete installarlo su un sistema a 64 bit, è installare il pacchetto ia32-libs che consente di far girare software a 32bit su macchine a 64bit.
La procedura, con il classico apt-get, è:

apt-get install ia32-libs

In alcuni casi ho avuto problemi con la libreria libext2fs.so, In questo caso, bisogna installare il pacchetto e2fslibs-dev:

apt-get install e2fslibs-dev

e poi seguire la procedura:

# cd /
# find . -name libext2fs.so
./opt/VRTSralus/VRTSvxms/lib/map/libext2fs.so
./opt/VRTSralus/bin/VRTSvxms/lib/map/libext2fs.so
./usr/lib/libext2fs.so
# mv ./opt/VRTSralus/VRTSvxms/lib/map/libext2fs.so ./opt/VRTSralus/VRTSvxms/lib/map/libext2fs.so.old
# /etc/init.d/VRTSralus.init stop
Stopping Symantec Backup Exec Remote Agent
Stopping Symantec Backup Exec Remote Agent:                              [  OK  ]
# mv ./opt/VRTSralus/bin/VRTSvxms/lib/map/libext2fs.so ./opt/VRTSralus/bin/VRTSvxms/lib/map/libext2fs.so.old
# cp ./usr/lib/libext2fs.so ./opt/VRTSralus/VRTSvxms/lib/map/libext2fs.so
# cp ./usr/lib/libext2fs.so ./opt/VRTSralus/bin/VRTSvxms/lib/map/libext2fs.so
# /etc/init.d/VRTSralus.init start
Starting Symantec Backup Exec Remote Agent ......
Starting Symantec Backup Exec Remote Agent:                              [  OK  ]

enjoy

Page optimized by WP Minify WordPress Plugin