- Détails
- Écrit par : steneor
- Catégorie : Divers RPI
- Temps de lecture : 3 mins
- Affichages : 903
#!/bin/bash
# Ce script lit les temp?ratures de capteurs ds18b20 connecter sur le bus 1 wire
# puis il sauvegarde les temp?ratures dans une base mysql
#
function string_to_int (){
LANG=C
d=${1##*.}
if [[ ${#1} -eq ${#d} ]]; then
d=0
fi
e=${1%.*}
e=${e//,/}
printf %.0f "$e.$d" 2>/dev/null
}
_TIMESTAMP=$( date +%s )
_DATE=$( date +%Y-%m-%d)
_HEURE=$(date +%H:%M:%S)
temperature=3.14
#echo $_TIMESTAMP
#echo $_DATE
#echo $_HEURE
index=0
# r?cup?re tous les devices qui appartiennent ? la famille '28'
FILES=`ls /sys/bus/w1/devices/w1_bus_master1/ | grep '^28'`
# iteration sur tous les devices
for file in $FILES
do
# r?cup?re les deux ligne de la r?ponse du device
#cat /sys/bus/w1/devices/w1_bus_master1/$file/w1_slave
GETDATA=`cat /sys/bus/w1/devices/w1_bus_master1/$file/w1_slave`
GETDATA1=`echo "$GETDATA" | grep crc`
GETDATA2=`echo "$GETDATA" | grep t=`
#echo $GETDATA1
#echo $GETDATA2
# get temperature
TEMP=`echo $GETDATA2 | sed -n 's/.*t=//;p'`
#
# test if crc is 'YES' and temperature is not -62 or +85
if [ `echo $GETDATA1 | sed 's/^.*\(...\)$/\1/'` == "YES" -a $TEMP != "-62" -a $TEMP != "85000" ]
then
# crc is 'YES' and temperature is not -62 or +85 - so save result
_mavar=0
#echo `date +"%Y-%m-%d %H:%M:%S "; echo $GETDATA2 | sed -n 's/.*t=//;p'`
else
# there was an error (crc not 'yes' or invalid temperature)
# try again after waiting 1 second
sleep 1
# get the 2 lines of the response from the device again
GETDATA=`cat /sys/bus/w1/devices/w1_bus_master1/$file/w1_slave`
GETDATA1=`echo "$GETDATA" | grep crc`
GETDATA2=`echo "$GETDATA" | grep t=`
# get the temperature from the new response
TEMP=`echo $GETDATA2 | sed -n 's/.*t=//;p'`
if [ `echo $GETDATA1 | sed 's/^.*\(...\)$/\1/'` == "YES" -a $TEMP != "-62" -a $TEMP != "85000" ]
then
# save result if crc is 'YES' and temperature is not -62 or +85 - if not, just miss it and move on
#echo `date +"%d-%m-%Y %H:%M:%S "; echo $GETDATA2 | sed -n 's/.*t=//;p'`
_mavar=0
fi
fi
tempe=`echo $GETDATA2 | sed -n 's/.*t=//;p'`
temperature=$(string_to_int $tempe)
temperature=`cat /sys/bus/w1/devices/$file/w1_slave | sed -n 's/^.*\(t=[^ ]*\).*/\1/p' | sed 's/t=//' | awk '{x=$1}END{printf("%.1f" , x/1000)}'`
tableau[index]=$temperature
#echo ${tableau[$index]}
index=$(($index + 1))
done
#echo $_TIMESTAMP $_DATE $_HEURE ${tableau[0]} ${tableau[1]}
mysql -uutilisateur -ppassword base<< EOF
insert into temperatures (timestamp,rec_date,rec_time,s1,s2) values ('$_TIMESTAMP','$_DATE','$_HEURE','${tableau[0]}','${tableau[1]}');
EOF
exit 0
- Détails
- Écrit par : steneor
- Catégorie : Divers RPI
- Temps de lecture : 2 mins
- Affichages : 967
# A>Sur le serveur A qui contient la base domotique
#A> se placer dans tmp (les fichiers de ce répertoire sont supprimés ? chaque démarrage)
cd /tmp
#A>il faut faire un dump :
mysqldump -uroot -ppassword domotique > dump.sql
# A>compresser le dump (option pour réduire le temps de transfert):
bzip2 dump.sql
#B> se rendre sur le nouveau serveur B
#B> se placer dans tmp
cd /tmp
#B> copier le fichiers dump.sql.bz (en utilisant un user qui a le droit de se connecter sur A)
scp user
#B>décompresser le dump :
bunzip2 dump.sql.bz2
#B> créer la base de donnée
mysqladmin -uroot -ppassword create domotique
#B> charger le dump dans la base domotique de mysql :
mysql -uroot -ppassword domotique < dump.sql
# B>supprimer le dump qui n'est plus nécessaire :
rm dump.sql
Sur le serveur A aussi supprimer aussi le dump
Pour supprimer une bd : mysqladmin -uroot -ppassword drop domotique
- Détails
- Écrit par : steneor
- Catégorie : Divers RPI
- Temps de lecture : 1 min
- Affichages : 671
#!/bin/bash
#on verifie si un fichier lock existe deja
if [ -e /var/lock/monfichier.lock ]
then
echo lancement_impossible
#on cree le LOCK, lance le programme voulu, puis supprime le LOCK
else
touch /var/lock/monfichier.lock
/var/www/ .../monprog
rm /var/lock/monfichier.lock
fi
Un autre exemple
https://gist.github.com/mharizanov/5325450
- Détails
- Écrit par : steneor
- Catégorie : Divers RPI
- Temps de lecture : 2 mins
- Affichages : 8025
Le Raspberry Pi peut profiter pleinement du disque dur de la Freebox V6.
Pour commencer cr?er un dossier freebox dans la racine par exemple:
> su (pour passer en root (mot de passe root)
> mkdir
/media/Freebox/
Il faut ensuite ?diter le fichier ftsab afin de d?clarer le disque dur:
>
nano
/etc/fstab
Puis ajouter la ligne suivante
//mafreebox
.freebox.fr
/Disque
\040dur
/media/Freebox
cifs _netdev,rw,
users
,iocharset=utf8,uid=1000,sec=none,file_mode=0777,dir_mode=0777 0 0
Il faut ? pr?sent ?diter le fichier /root/.smbcredentials
>
nano
/root/
.smbcredentials
et y ajouter les lignes suivantes
username=
password=
Il faut les laisser vides telles quelles.
Enfin, il faut "monter" le disque dur en tapant:
> mount
/media/Freebox
Vous avez ? pr?sent acc?s ? l'int?gralit? du disque dur de votre Freebox!
Vous pouvez vous deconnecter du compte root (control D).
V?rifier que l'utilisateur a bien acc?s au r?pertoire /media/Freebox/ .
Exemple d'utilisation ? partir de l'ext?rieur.
Copie d'un r?pertoire films (sur le disque de la freebox), avec ?ventuellement ses sous-r?pertoires, vers le r?pertoire courant du serveur d?di? sur le web:
> sshpass -p 'password' scp -r login
pour un montage provisoire en ligne de commande
mount -t cifs //mafreebox.freebox.fr/Disque\ dur/Vid?os /mnt/freebox/ -o user=freebox,password=password,uid=1000,gid=1000,rw
- Détails
- Écrit par : steneor
- Catégorie : Divers RPI
- Temps de lecture : 1 min
- Affichages : 1093
Pr?sentation
Installation des serveurs LAMP, phpmyadmin
http://www.tropfacile.net/doku.php/raspberry-pi/comment-installer-un-serveur-web-lamp
Proc?dure
apt-get install libmysqlclient-dev mysql-client
apt-get install mysql-server
apt-get install apache2 php5 phpmyadmin
Personnalisation pour t?l?info
Installation de la librairie libmysqlclient-dev n?cessaire pour t?l?info ...
apt-get install libmysqlclient-dev
V?rifier qu'il n'y a pas d?erreur en compilant teleinfo.c
D?sactiver l'entr?e TTY via la voie s?rie utilis?e par t?l?info. Editer le fichier /etc/inittab et commenter la ligne suivante (derni?re ligne de inittab)
#Spawn a getty on Raspberry Pi serial line
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 <-- celle la
Ajouter dans /etc/rc.local
# Mail pour avertir que le serveur d?marre
mail -s demarrage_serveur_ubuntu_chez_machin
EOF
# init de la voie s?rie pour le RPI utilis?e par t?l?info
stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts
#
# init voie serie 0 (com1) 1200 bauds utilis?e par t?l?info
#/bin/stty -F /dev/ttyS0 1200 sane evenp parenb cs7 -crtscts
#
# init voie serie 1 (com2) 1200
#/bin/stty -F /dev/ttyS1 1200 sane evenp parenb cs7 -crtscts
#
#init enable wahe on lan
ethtool -s eth0 wol g
#init gpio
/var/www/onoff/lib/bash/init_gpio.sh
# Laisser en derni?re ligne exit 0
exit 0
Installation de wiringpi
sudo apt-get install git-core
sudo apt-get update
sudo apt-get upgrade
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
Installation de samba
apt-get install samba samba-common-bin
ajouter a la fin de /etc/samba/smb.conf
[root]
writeable = yes
path = /
comment = root RPi 192.168.0.45
public = yes
security = share
create mode = 777
allow hosts = 192.168.0.
directory mode = 777
Installation de la commande mail et de ssmtp
apt-get install mailutils mpack
apt-get install ssmtp
nano /etc/ssmtp/ssmtp.conf le fichier doit contenir les ligne suivantes:
root=Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
mailhub=smtp.free.fr
hostname=rpi41
FromLineOverride=YES
(Comme mon FAI est free je n'est pas besoin d'identifiant ni de mot de passe)
Je test immediatement si cela fonctionne:
echo "Contenu du mail" | mail -s "Titre du mail" trucCette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
Installation de fail2ban logwatch
apt-get install fail2ban logwatch
nano /etc/fail2ban/jail.conf modifier les lignes suivantes:
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8 192.168.0.* 151.xx.xx.xx #les ipqui ne seront jamais bannies
bantime = 360000 # bannir pendant 100 heures
nano /usr/share/logwatch/default.conf/logwatch.conf modifier les lignes suivantes:
Output = mail
Je test immediatement si cela fonctionne:
logwatch le mail configurer dans ssmtp.conf doit recevoir un rapport
Installation de webmin
Editer le fichier /etc/apt/sources.list et ajouter les deux lignes suivantes
deb http://download.webmin.com/download/repository sarge contrib
You should also fetch and install my GPG key with which the repository is signed, with the commands :
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
cd /root wget http://www.webmin.com/jcameron-key.asc apt-key add jcameron-key.asc
You will now be able to install with the commands :
apt-get update
All dependencies should be resolved automatically
apt-get install webmin
S?curit?
Si votre serveur RPI est accessible depuis le web , alors:
- suprrimez l'utilisateur pi (car le nom est connu comme ?tant par d?faut)
- creer un nouveau utilisateur (qui vous servira ? vous connecter)
- Interdire la connexion root via ssh (toutes les tentatives d'intrusion se font par l?, il vous faudrat alors vous connecter
avec l'utilisateur pr?c?demment cr?er puis faire un su)
- Modifier le port de connexion ? sshdeluser --remove-all-files
pi // suppression du compte pi ainsi que les fichiers lui appartenant
adduser nouveau_utilisateur // ajout du nouveau compte
nano /etc/ssh/sshd_config //editer le fichier
port 22 -> devient port 15722 // (modification du numero de port , choisir un nombre 1024 > x > 65535 et vous en souvenir
PermitRootLogin no // (interdire le login de root