Faire son serveur dhcp avec translation d’adresse sous Debian

Cet article va vous présenter comment créer une passerelle dhcp avec une machine sous Debian.

Avant de commencer il vous faut au minimum deux cartes réseaux.

schéma explicatif :
routage
Mais le dhcp c’est quoi ?

Pour la description complète et générale je vous renvoi sur Wikipedia.

Dans un premier temps on ce munira de café et en deuxième on démarre le serveur après lui avoir installé une Debian

Configuration de eth0

Avec une box qui fait dhcp

L’ip de eth0 sera donc complètement automatique, vous n’aurez rien à configurer sur le serveur lui même, par contre la subtilité et d’aller configurer votre box pour réserver une adresse ip au serveur en fonction de l’adresse mac d’ eth0 comme ça votre serveur aura toujours la même ip.

Selon les box, cette fonction s’appelle dhcp statique, ip réservées, baux permanents, …

Pour savoir l’adresse MAC de votre carte tapez sur le serveur la commande :

ifconfig eth0 |grep HWaddr

la combinaison devra ressembler à cette forme FF:FF:FF:FF:FF:FF

Une fois que vous avez tout configurer votre box, pour ceci rechercher dans votre interface routeur/options réseau etc…

Avec une box qui ne fait pas dhcp

L’ip de eth0 sera donc à configurer.
rien de plus simple en fait
Vous ouvrez le fichier de configuration de vos cartes réseau :

vim /etc/network/interfaces

vous devriez avoir un fichier qui ressemble à :

# 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

# The primary network interface

auto eth0

#on défini le comportement de la carte reseau static ou dhcp

iface eth0 inet static

#on spécifie sont adresse ip

address 192.168.0.1

netmask 255.255.255.0

broadcast 192.168.0.255

#les ip des serveurs dns de votre FAI

dns-nameservers 212.27.40.240 212.27.40.241

#l'ip de votre box ou modem enfin, de la passerelle pour rejoindre le réseau internet

gateway 192.168.0.254

Si vous avez des lignes qui parlent d’autres connections du type wlan ou eth1, eth2 etc… supprimez les, nous les reconfigureront après.

Configurons la carte réseau eth1 qui sera la carte “serveur”

Pour cela il suffit d’aller faire un saut dans /etc/network

vim /etc/network/interfaces

nous allons donc configurer l’eth1 en 192.168.1.1 statique.

auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
broadcast 192.168.1.255
dns-nameservers 212.27.40.240 212.27.40.241
gateway 192.168.0.254

L’adresse c’est l’adresse que l’on veut pour la carte
le dns-nameservers c’est les dns de mon FAI gain en rapidité de surfing
La gateway c’est notre box.

Configurons la translation d’adresse

Tout d’abord nous allons modifier deux lignes dans le fichier /etc/sysctl.conf

vim /etc/sysctl.conf

Les deux lignes à modifier sont :

net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.default.forwarding=1

Une fois fait, un point très important est de rentrer la commande :

sysctl net.ipv4.ip_forward=1

Cette commande active le forward au niveau noyau de votre système c’est ce que j’ai lu sur un forum alors… mais la commande de toute manière ne vous fera pas crasher le système au contraire.

Maintenant nous allons créer un script “ip_forward” (que vous pouvez nommer comme bon vous semble mais sans . dans le nom), qui activera la translation à chaque démarrage de votre machine.

vim /etc/init.d/ip_forward

Dans ce script on va insérer tout ce qui est nécessaire :

#!/bin/bash

### BEGIN INIT INFO
# Provides:           ip_forward
# Required-Start:     $network $remote_fs $syslog
# Required-Stop:      $network $remote_fs $syslog
# Default-Start:      2 3 4 5
# Default-Stop:       0 1 6
# Short-Description:  activation du forward des paquets
# Description:        activation du forward des paquets
### END INIT INFO

# Mise en place de la translation d'adresse (NAT)

start()
{
echo "Activation du protocole NAT"
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo "termine avec succes"

}

stop()
{
echo "Desactivation du protocol NAT"
echo 0 > /proc/sys/net/ipv4/ip_forward
echo "termine avec succes"

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop && start
;;

*)

echo "Usage: $0 {start|stop|restart}"

exit 1
esac

exit 0

Une fois ceci fait il vous suffit de le rendre exécutable :

chmod +x /etc/init.d/ip_forward

Et de l’ajouter au démarrage avec :

avant debian lenny :

update-rc.d ip_forward start 99 2 . stop 00 2 0 1 6 .

après debian lenny :

insserv /etc/init.d/ip_forward

Installation et Configuration du serveur DHCP

Nous allons installer ce petit serveur qui va nous permettre de donner une adresse à chaque machine qui voudra se connecter, nous verrons aussi comment faire des réservations d’ip.
Pour l’installer facile :

aptitude update && aptitude safe-upgrade
aptitude install dhcp3-server

à la fin de l’installation il va vous dire Failed ce qui est tout à fait normal le serveur ne sait pas quelle interface réseau interroger/gérer etc…
Nous allons donc procéder à sa configuration.

Premièrement on va lui indiquer quelle interface réseau il doit écouter.
Ceci ce configure dans /etc/default/dhcp3-server pour moi c’est eth1 qui sera ma carte à écouter.
Donc dans le fichier je lui dit :

vim /etc/default/dhcp3-server
INTERFACES="eth1"

Ensuite ouvrez le fichier /etc/dhcp3/dhcpd.conf :

serveur#:vim /etc/dhcp3/dhcpd.conf

et modifiez les lignes suivantes :
dans cette ligne vous mettez ce que vous voulez moi j’ai appelé mon réseau passerelle mais pourquoi pas beurresalé ou autre 😀

option domain-name "Passerelle";

Attention ici mettez les DNS de votre FAI pour gagner de la rapidité pour le surfing 😛
Ceci sont de free et google après vous pouvez en mettre d’autres

option-domain-name-servers 212.27.40.240, 212.27.40.241, 8.8.8.8, 8.8.4.4;

Pour que votre configuration serve à quelque chose 😛
Décommenter la ligne :

authoritative;

Après il vous suffit d’insérer après ces lignes :

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

Ceci :

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.2 192.168.1.100;
option routers 192.168.1.1;
}

Le subnet sera le réseau que vous allez administrer avec votre serveur dhcp.
Le range est la plage d’adresse à modifier selon vos envies.
L’option routeur comme adresse de routage. (je sais pas si c’est bien dit mais c’est compréhensible non ?)

Ce que nous venons de configurer interdit les adresses ip fixes.

Nous allons réserver deux IP pour le ToToNe-PC et l’Adeline-PC en fonction des adresses mac pour effectuer ceci rien de plus simple :
Ajouter /etc/dhcpd.conf

host ToToNe-PC {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address 192.168.1.13;
}

host Adeline-PC {
hardware ethernet 08:23:07:56:a9:d2;
fixed-address 192.168.1.15;
}

Une fois ceci fait on sauvegarde.

et on relance le serveur dhcp.

/etc/init.d/dhcp3-server restart

Pensez à jeter un coup d’oeil dans /var/lib/dhcp3/dhclient.leases pour savoir qui est connecté.

Le mieux une fois que tout est fait est un redémarrage de la machine mais ce n’est pas du tout obligatoire.

reboot

Les sources qui on aidées à la rédaction de cet article :

giroll.org

Wikipédia

Fail2ban est simplement un petit logiciel de surveillance, il se permet de vérifier, qui essaye de se connecter en lisant tout simplement les fichiers .log

Il est extrêmement puissant et simpliste en même temps.

Il banni temporairement l’IP de la personne ou du robot qui a raté son mot de passe.

Paniquez pas, tout est configurable.

Nous allons le voir maintenant.

Bon déjà on l’installe

aptitude update && aptitude fail2ban

On va aller le configurer :

vim /etc/fail2ban/fail2ban.conf

Donc on peut voir dans le fichier le chemin de ses log à fail2ban

logtarget = /var/log/fail2ban.log

Les services à surveiller sont stockés dans jail.conf.

Il est vivement recommandé d’effectuer une copie nommée jail.local qui sera une copie du fichier par défaut installé par fail2ban.

Il suffit donc de faire :

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

et aprés d’ouvrir le bon et de garder l’original sous le coude au cas ou.

vim /etc/fail2ban/jail.conf

Les paramètres en bref :

Liste des adresses IP ignorés par fail2ban (votre ip est simulée par la 111.222.33.44)

ignoreip = 127.0.0.1 111.222.33.44

Le Temps de ban en secondes moi j’ai mis 10h pour être tranquille

ignoreip = 127.0.0.1 111.222.33.44

Nombre d’essais avant bannissement

maxretry = 3

Adresse e-mail destinataire des notifications

destmail tonadresse@email.com 

/!\ trés important pensez à modifier le port ssh si vous l’avez modifié

enabled = true
port = 5896

Une fois que vous êtes arrivés ici votre fail2ban est sécurisé pensez à le redémarrer :

/etc/init.d/fail2ban restart

Par soucis de sécurité je n’autorise les compilateurs que pour root.

Pensez à vous loguer root avant de lancer les commandes

compilateurs de C, C++, Objective-C, Fortran, Java, et Ada

chmod o-x /usr/bin/gcc-4.3

Créateur de scripts d’install etc…

chmod o-x /usr/bin/make
chmod o-x /usr/bin/dpkg

Les utilitaires de mises à jours etc…

chmod o-x /usr/bin/apt-get
chmod o-x /usr/bin/aptitude

Bonjour à tous
Comment sécuriser un minimum le ssh de son serveur.

C’est assez simple on va voir de suite comment procéder et quelle logique est à suivre.

Tout d’abord nous allons éditer le fichier :

/etc/ssh/sshd_config

soit avec vim, vi ou autre éditeur de texte personnellement j’utilise vim.

vim /etc/ssh/sshd_config

dans ce fichier pensez à modifier simplement ces valeurs

Port 5896

Nous changeons le port par défaut (22) pour éviter les attaques des robots brute-forceur qui connaissent bien l’association du port 22 avec les services ssh

PermitRootLogin no

Empêchons le root de se connecter directement une simple mesure de sécurité, vous pouvez tout de même vous loguer en root mais il faudra au préalable passer par votre utilisateur et après taper “su” et votre mot de passe root et vous serez donc root, activé normalement par défaut depuis les dernières versions de ssh.

Une fois ces modifications effectuées et enregistrées il vous suffira simplement de redémarrer le service ssh :

service ssh restart

Et voila le travail, pensez à changer le port ssh de votre client “putty” ou autre pour pouvoir vous connecter.

Commandes MySQL

La bible Mysql

Les commandes les plus utilisées

création de base de données :

CREATE DATABASE XXXXXX;

utilisation de la base :

USE XXXXX;

Création de table :

CREATE TABLE animal (nom VARCHAR(20), maitre VARCHAR(20), espece VARCHAR(20), sexe CHAR(1), naissance DATE, mort DATE);


Insertion :

INSERT INTO animal VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);

Ajout droit ou revoke :

GRANT SELECT, INSERT, DELETE ON nombasededonnée.* TO 'username'@'localhost';
REVOKE INSERT, CREATE, DELETE ON nombasededonnée TO nomuser

Creer un utilisateur + droit :

CREATE USER 'userlambda'@'localhost' IDENTIFIED BY 'xxxxxxxxx';
GRANT SELECT, INSERT, DELETE ON nombasededonée.* TO 'userlambda'@'localhost';

Ajouter une colonne dans une table :

ALTER table NomTable add NomColonne char(1);

Changer le type de données pour “Addr” à char(30), il suffit de saisir :

ALTER table customer modify Addr char(30)

Droits des Utilisateurs

Droits des utilisateurs MySQL

Lien mémo :

Vous avez peur des viles pirates, ils vous ont déjà fait des misères.

Le pire dans tout ça, c’est que la majorité des pirates sont des lamers il faut être franc.

Ce sont juste des personnes utilisant des programmes développés par de vrais codeurs.

Il faut quand même s’en protéger.

Par exemple vous pouvez effectuer un ”df -h” de temps à autre pour savoir l’espace disque utilisé, si il n’y a pas de folies ou autre.

Enfin la marche à suivre après une installation de votre dédié est simple.

En premier il vous faut sécuriser votre ssh

En deuxième n’autoriser les compilateur et installeur que pour le root

en troisième installer et configurer fail2ban

en quatrième installer et configurer rkhunter

en dernier installer et configurer iptables un des firewalls disponible sur linux

Script de gestion automatique de la carte K8055 en bash

Encore une fois je n’ai pas la prétention d’être un dieu en programmation mais j’essaye toujours de livrer du code fonctionnel il est toujours essayé chez moi sur 2 ou 3 machines (virtuelle ou non).

Je vous fait profiter de mon automate en bash seulement pour le moment il s’étoffera surement d’une version en interaction avec une base de donnée mysql et une interface web, c’est actuellement en cour de développement.

Le script gère à l’heure actuelle les cycle horaire 09h00 – 22h00 modifiable à votre guise, les températures et le taux d’humidité.
Tout est géré automatiquement aucun bug pour ma part en 3 semaines de test en conditions réelle (les habitants du terrarium n’étant pas là avant minimum 2 semaines).

Je vous fait donc profiter de mon script copiez-le ou vous désirez et modifiez les champs nécessaires.
N’oubliez pas de faire un chmod u+x sur votre fichier.
Personnellement je lui ai assigné une exécution toute les 5 minutes.

Faites un crontab -e et assignez le script toute les 5 minutes exemple pour moi :

# m h dom mon dow command
*/5 * * * * /home/totone/automate.sh

Code de l’automate

#!/bin/bash
##############################################
# Script d'automatisation par Antonin Bollin #
# http://www.totone.fr #
# Script en Version 1.1 #
##############################################

# Utilisateur lancant le script
user=totone

# Fichier automate
automate="/home/totone/automate"

# Emplacement du fichier de log
logr="/home/totone/"

# Nom du fichier de log
logf="log-automate.log"

# Répertoire d'Archive des logs
olog="/home/totone/old-log/"

# Emplacement du fichier verrou
# Ce fichier verrou est déstiné à protéger l'execution du script.

verrou="/home/totone/mesure-en-cours"

# Vérification de l'existence de l'utilisateur à qui on demande d'éxécuter le script.

egrep "^$user" /etc/passwd >/dev/null
if [ $? -eq 0 ]; then
echo "L'utilisateur $user existe la sauvegarde va donc continuer"
else
echo "L'utilisateur $user n'existe pas merci d'utiliser un utilisateur existant ou de le créer." >> $logr/$logf
exit 0
fi

# Incrémentation en mémoire de l'UID de l'utilisateur de la sauvegarde.

us=$(id -u $user)

# Vérification que c'est bien l'utilisateur demandé qui lance le script

if [ "$(id -u $(whoami))" == "$us" ]; then
echo "C'est OK vous êtes bien $user"
else
echo "Désolé seulement l'utilisateur $user peut éxécuter ce Script" >> $logr/$logf
exit 0
fi

# mise en mémoire des valeurs de l'automate à l'instant t=0
k8055 > $automate

# Mise en mémoire des valeurs de l'automate
auto=$(cat $automate)

# Les valeurs renvoyés par la K8055 sont de type 65;0;172;152;0;0
# Les valeurs qui nous interressent sont donc 172 pour l'entrée analogique 1 et 152 pour l'entrée analogique 2

# Mise en mémoire de la température
temp=$(echo $auto | cut -d ';' -f 3)

# Mise en mémoire de l'humidité
hygro=$(echo $auto | cut -d ';' -f 4)

# Mise en mémoire des valeurs de températures et d'humidité dont nous avons besoin
# Température nocturne ~24°C => 121/255
tn=121
tn2=24
# Humidité Nocturne ~95% => 222/255
hn=222
hn2=95
# Température dans la journée ~33°C => 167/255
tj=167
tj2=33
# Humidité dans la journée ~80% => 187/255
hj=187
hj2=80

# Définition de l'heure qu'il est afin de savoir ce qu'on allume ou éteint
heure=$(date +%H)
# a partir de quelle heure on est le jour
heurej=9
# a partir de quelle heure on est la nuit
heuren=22

# Indexation des logs tout les soirs à 00h00
# Comme ça nous avons un fichier de log par jour
if [ $(date +%H%M) == 0000 ]; then
if [ -d $olog ]; then
echo "Le dossier existe on ne le crée donc pas"
else
mkdir $olog
fi

cp $logr/$logf $olog/$logf && mv $olog/$logf $olog/log-du-$(date +%A --date '1 day ago')-$(date +%d --date '1 day ago')-$(date +%B)-$(date +%Y).txt
rm $logr/$logf
fi
# Attendons 5s la fin de la copie/suppression/renommage par sécurité.
sleep 5

# Inscription dans le fichier de log
echo "" >> $logr/$logf
echo "=============================================================================================================================" >> $logr/$logf
echo "Execution du script le $(date +%A) $(date +%d) $(date +%B) $(date +%Y) à $(date +%H)h et $(date +%M)min" >> $logr/$logf

# Test si le fichier verrou est là sinon on le crée

if [ -f $verrou ]; then
echo "Impossible de mesurer quoi que ce soit une mesure est déjà en cours" >> $logr/$logf
exit 0
else
echo "Une mesure est en cours" > $verrou
echo "Si ce fichier existe c'est qu'une mesure est en cours" >> $verrou
echo "Ce fichier sera automatiquement détruit à la fin de la mesure" >> $verrou
fi

# Attente de 3s avant de continuer histoire que le fichier soit bien crée etc... en cas de surchage de la machine ou autre ...
sleep 3

# Annonce de la température
echo "Température actuelle de $temp sur 255 donc $(( $(($tj2 *$temp)) /$tj)) °C " >> $logr/$logf

# Annonce du taux d'humidité
echo "Humidité actuelle de $hygro sur 255 donc $(( $(($hj2 *$hygro)) /$hj)) % " >> $logr/$logf

# Adressage des composants :
# Port n°1 = Lampe chauffante = valeur 1
# Port n°2 = Néons UV = valeur 2
# Port n°3 = Hygrométre = valeur 4
# Port n°4 = Pompe = valeur 8
# Port n°5 = Plancher Chauffant = valeur 16

# Nous sommes la nuit on traite le cas particulier 22h 23h
# Si l'heure est strictement supérieur à 21h alors on execute cette partie.

if [ $heure -gt $(($heuren -1)) ] ; then
echo "Nous sommes la nuit avant minuit puisqu'il est $(date +%H)h et $(date +%M)min" >> $logr/$logf

# Si il fait moins de 24°C (121/255) et qu'il y à moins de 95% (222/255) d'humidité on chauffe et humidifie

if [ $temp -le $tn -a $hygro -le $hn ]; then
echo "Il fait froid et sec la nuit avant minuit alors on chauffe et humidifie" >> $logr/$logf
k8055 -d:20
fi

if [ $temp -gt $tn -a $hygro -gt $hn ]; then
echo "Il fait chaud et humide la nuit donc on éteint tout" >> $logr/$logf
k8055 -d:0
fi

if [ $temp -le $tn -a $hygro -gt $hn ]; then
echo "il fait froid et humide avant minuit donc on chauffe seulement" >> $logr/$logf
k8055 -d:16
fi

if [ $temp -gt $tn -a $hygro -le $hn ]; then
echo "Il fait chaud mais sec avant minuit donc on humidifie seulement" >> $logr/$logf
k8055 -d:4
fi
fi

# Nous sommes la nuit entre 00h00 et 09h00
# Si l'heure est supérieur ou égal à minuit mais si et seulement si elle est strictement inférieur à 09h00 alors on execute

if [ $heure -ge 00 -a $heure -lt $heurej ]; then
echo "Nous sommes la nuit avant 09h00 puisqu'il est $(date +%H)h et $(date +%M)min" >> $logr/$logf

# Si il fait moins de 24 (121/255) et qu'il y à moins de 95% (222/255) d'humidité on chauffe et humidifie

if [ $temp -le $tn -a $hygro -le $hn ]; then
echo "Il fait froid et sec la nuit avant minuit alors on chauffe et humidifie" >> $logr/$logf
k8055 -d:20
fi

if [ $temp -gt $tn -a $hygro -gt $hn ]; then
echo "Il fait chaud et humide la nuit donc on éteint tout" >> $logr/$logf
k8055 -d:0
fi

if [ $temp -le $tn -a $hygro -gt $hn ]; then
echo "il fait froid et humide avant minuit donc on chauffe seulement" >> $logr/$logf
k8055 -d:16
fi

if [ $temp -gt $tn -a $hygro -le $hn ]; then
echo "Il fait chaud mais sec avant minuit donc on humidifie seulement" >> $logr/$logf
k8055 -d:4
fi
fi

# Nous sommes le jour donc il est 09h00 ou plus mais moins de 22h00
# Si l'heure est supérieur ou égal à 09h00 et si et seulement si elle est supérieur à minuit et si et seulement si elle est strictement inférieur à 22h00 alors on est en journée.
# Nous incrémenterons tout les allumage des sorties : pompe+néons+lampe chauffante
# Ce qui nous fait ajouter :
# Pompe = 8
# Néons UV = 2
# Lampe Chauffante = 1

if [ $heure -ge $heurej -a $heure -gt 00 -a $heure -lt $heuren ]; then
echo "Nous sommes le jour après 09h00 puisqu'il est $(date +%H)h et $(date +%M)min" >> $logr/$logf

# Si il fait moins de 33 (167/255) et qu'il y à moins de 80% (187/255) d'humidité on chauffe et humidifie

if [ $temp -le $tj -a $hygro -le $hj ]; then
echo "Il fait froid et sec alors on chauffe et humidifie puisqu'on est le jour on ajoute la pompe les néons et la lampe chauffante" >> $logr/$logf
k8055 -d:31
fi

if [ $temp -gt $tj -a $hygro -gt $hj ]; then
echo "Il fait chaud et humide donc on éteint tout sauf la pompe et les néons " >> $logr/$logf
k8055 -d:10
fi

if [ $temp -le $tj -a $hygro -gt $hj ]; then
echo "il fait froid et humide donc on chauffe avec la lampe chauffante et le tapis on laisse bien sur les néons allumés" >> $logr/$logf
k8055 -d:27
fi

if [ $temp -gt $tj -a $hygro -le $hj ]; then
echo "Il fait chaud mais sec donc on humidifie seulement et on laisse allumé la pompe et les néons." >> $logr/$logf
k8055 -d:14
fi
fi

echo "=============================================================================================================================" >> $logr/$logf

# Attente de 5s avant de supprimer et de terminer le script
sleep 5

# Suppression du fichier verrou
rm $verrou

# Suppresion du fichier automate
rm $automate

# Sortie Du script
exit 0

Script d’installation automatique de la carte K8055

Bonjour

Après plusieurs installations à distances sur différentes machines de personnes ne s’en sortant malheureusement pas avec l’installation de la carte Velleman K8055 j’ai décidé de scripter un peu la chose.

Je n’ai toujours pas la prétention d’être un dieu en anglais ni en programmation donc si voyez des choses à corriger n’hésitez pas à me le mentionner je tacherais de le modifier.

Ce script n’est malheureusement valable que pour Ubuntu et Debian mais si toutefois vous connaissez la marche à suivre pour l’installer sur une autre distribution je me ferais un joie de l’ajouter.

Vous trouverez ce script en bas de cette page.

Gérer votre carte simplement via la console avec comme commande un

K8055 *******

Les sorties digitales sont comptées en binaire, c’est à dire que :

la sortie 1 = 1
la sortie 2 = 2
la sortie 3 = 4
la sortie 4 = 8
la sortie 5 = 16
la sortie 6 = 32
la sortie 7 = 64
la sortie 8 = 128

Il vous suffit donc de faire des additions pour activer les sorties.
exemple si nous voulons allumer les sorties 5 – 3 – et 8
il nous suffit de faire 16 + 4 + 128 = 148
pour test faisons donc un :

k8055 -d:148

Et voila vous avez allumé les sorties digitales 3 – 5 et 8

Les éteindre n’est pas nécessaire si par exemple nous voulons simplement allumé les sorties 3 et 5
il nous suffit de faire 4 + 16 = 20

k8055 -d:10

et comme ça hop vous avez éteint la sortie 8 sans couper les autres elles on reçues l’ordre de passer à 1 mais comme elles le sont déjà pas de soucis …

Pour ce qui est de la lecture des entrées analogiques c’est assez aisé aussi il faut pensez à retirer les cavaliers sk2 sk3 pour des mesures c’est un peu mieux sinon vous envoyez du +5V directement en entrée donc mesure OK mais fausses…

faite un

k8055

cette commande vous retournera un

63;0;122;105;0;0

Le 122 est égal à la valeur de l’entrée analogique 1 graduée de 0 à 255 et la deuxième est la valeur de l’entrée analogique 2 graduée de 0 à 255 aussi.

Après faites vous plaisir plusieurs langages peuvent lire ces valeurs, pour moi il sera en bash.
Mon automate est fonctionnel à l’heure actuelle, un simple script bash est exécuté toute les 5 minutes il sera embelli et agrémenté d’une interface web sous peu si le temps me le permet.

Merci d’avance pour vos retour, négatifs comme positifs.

#!/bin/bash
############################
# Script by Antonin Bollin #
#   http://www.totone.fr   #
#       Version 1.0        #
############################

# Liste des paquets à installer :
# List of packages to install :

# Paquets pour Ubuntu :
# Packages for Ubuntu :
paquetsu="make build-essential gcc libwxgtk2.8-dev libwxgtk2.8-0 libcurl4-gnutls-dev libusb-0.1-4 libusb-1.0-0 libusb-1.0-0-dev libusb-dev libusb++-0.1-4c2 swig swig-doc swig-examples libqwt5-qt4 libqwt5-qt4-dev libqwt5-doc libqwt-dev python-qwt5-qt3 python-qwt5-qt4 python-qwt5-doc python-dev wx2.8-i18n wx2.8-headers wx2.8-examples wx2.8-doc python-numeric python-numeric-ext python-numeric-tutorial"

# Paquets pour Debian :
# Packages For Debian :
paquetsd="make build-essential gcc libwxgtk2.8-dev libwxgtk2.8-0 libcurl4-gnutls-dev libusb-0.1-4 libusb-1.0-0 libusb-1.0-0-dev libhid0 libusb-dev libusb++-0.1-4c2 swig swig-doc swig-examples libqwt5-qt4 libqwt5-qt4-dev libqwt5-doc libqwt-dev python-qwt5-qt3 python-qwt5-qt4 python-qwt5-doc python-dev wx2.8-i18n wx2.8-headers wx2.8-examples wx2.8-doc python-numeric python-numeric-ext python-numeric-tutorial"

# Ubuntu Install
egrep "Ubuntu" /proc/version >/dev/null
		if [ $? -eq 0 ]; then

			echo "Nous sommes en présence d'Ubuntu nous allons donc procéder à l'installation adéquate"
			echo "We are on an Ubuntu Distribution so we will proceed with the proper installation"
			sleep 5

			sudo aptitude autoclean -y && sudo aptitude update && sudo aptitude install $paquetsu -y
			
			echo "Nous créons l'arborescence necessaire à la racine du répertoire utilisateur"
			echo "We create the arborescent in you'r user Home Dir"
			sleep 5
			mkdir /home/$(whoami)/K8055 && mkdir /home/$(whoami)/K8055/libk8055 && mkdir /home/$(whoami)/K8055/k8055gui
			
			echo "Nous téléchargeons les binaires nécessaire au fonctionnement de la carte K8055"	
			echo "We downloading binairies necessary for K8055 card"
			sleep 5
			cd /home/$(whoami)/K8055/libk8055 
			wget http://prdownloads.sourceforge.net/libk8055/libk8055.0.4.tar.gz
			tar -xzvf libk8055.0.4.tar.gz && rm libk8055.0.4.tar.gz
			
			echo "Nous téléchargeons les binaires nécessaire au fonctionnement de l'interface graphique pour la carte K8055"
			echo "We downloading the graphic binary for K8055 card"
			sleep 5
			cd /home/$(whoami)/K8055/k8055gui
			wget http://sites.google.com/site/vellemank8055/k8055gui_v0.1.tar.gz 
			tar -xvzf k8055gui_v0.1.tar.gz && rm k8055gui_v0.1.tar.gz

			echo "Nous compilons les binaires téléchargées à l'étape précédente"
			echo "We compile the binaries previously downloaded"
			sleep 5
			cd /home/$(whoami)/K8055/libk8055/src 
			sleep 3
			make 
			sleep 3
			sudo make install
			sleep 3
			cd /home/$(whoami)/K8055/k8055gui/src 
			make		
			sleep 3
			
			sudo chmod -R 0755 /home/$(whoami)/K8055

			echo "Nous ajoutons la carte K8055 au système"
			echo "We add the K8055 on the system"
			sleep 5
			cd /home/$(whoami)/K8055/libk8055/src
			sudo cp k8055 /bin/k8055
			
			echo "Nous autorisons l'utilisateur lanceur de ce script et lui seul à utiliser la carte k8055"
			echo "We allow the user to launch this script and only use the K8055 card"
			sleep 5
			cd /home/$(whoami)/K8055/libk8055/src
			sed -e 's/root/'$(whoami)'/g' /home/$(whoami)/K8055/libk8055/src/velleman.rules > /home/$(whoami)/K8055/libk8055/src/velleman.rules2
			sudo cp /home/$(whoami)/K8055/libk8055/src/velleman.rules2 /etc/udev/rules.d/velleman.rules

			echo "Nous lançons l'interface graphique vous n'aurez qu'a créer un lanceur ou un raccourci sur votre bureau"
			echo "We launch the GUI you will have to create a launcher or a shortcut on your desktop"
			sleep 5
			echo "le script ce trouve dans /home/$(whoami)/K8055/k8055gui/src et ce nomme k8055gui"
			echo "The script are on /home/$(whoami)/K8055/k8055gui/src and it appoints k8055gui"
			sleep 5
			echo "Des érreurs de lancements peuvent apparaitre je vous laisse googliser l'incident car trop aléatoire en fonction des paquets présent sur la machine"
			echo "Errors can appear launches I'll let you googled the incident as too random based on the packets on the machine"
			sleep 5
			cd /home/$(whoami)/K8055/k8055gui/src
			./k8055gui
		fi


# Debian Install
egrep "Debian" /proc/version >/dev/null
		if [ $? -eq 0 ]; then
			
			if [ $(id -u) -eq 0 ]; then

				echo "Nous sommes en présence de Debian GNU Linux nous allons donc procéder à l'installation adéquate"
				echo "We are in the presence of Debian GNU Linux, so we will proceed with the proper installation"
				sleep 5
				
				read -p "Quel utilisateur utilisera l'automate / Which user will use the controller : " user
					
					egrep "^$user" /etc/passwd >/dev/null	
						if [ $? -eq 0 ]; then
							echo "$user existe nous allons donc continuer"
							echo "$user exist there we will continue"
						else
							echo "$user n'existe pas merci d'utiliser un utilisateur existant ou de le créer"
							echo "$user no thank you to use an existing user or create"
							exit 0
						fi	

				aptitude autoclean -y && aptitude update && aptitude install $paquetsd -y
				
				echo "Nous créons l'arborescence necessaire à la racine de /home"
				echo "We create the arborescent in you'r user Home Dir"
				sleep 5
				mkdir /home/K8055 && mkdir /home/K8055/libk8055 && mkdir /home/K8055/k8055gui
				
				echo "Nous téléchargeons les binaires nécessaire au fonctionnement de la carte K8055"
				echo "We downloading binairies necessary for the K8055 card"
				sleep 5
				cd /home/K8055/libk8055 
				wget http://prdownloads.sourceforge.net/libk8055/libk8055.0.4.tar.gz
				tar -xzvf libk8055.0.4.tar.gz && rm libk8055.0.4.tar.gz
				
				echo "Nous téléchargeons les binaires nécessaire au fonctionnement de l'interface graphique pour la carte K8055"
				echo "We downloading the graphic binary for K8055 card"
				sleep 5
				cd /home/K8055/k8055gui
				wget http://sites.google.com/site/vellemank8055/k8055gui_v0.1.tar.gz 
				tar -xvzf k8055gui_v0.1.tar.gz && rm k8055gui_v0.1.tar.gz
	
				echo "Nous compilons les binaires téléchargées à l'étape précédente"
				echo "We compile the binaries previously downloaded"
				sleep 5
				cd /home/K8055/libk8055/src 
				sleep 3
				make 
				sleep 3
				make install
				sleep 3
				cd /home/K8055/k8055gui/src 
				make		
				sleep 3
				
				chmod -R 0755 /home/K8055
	
				echo "Nous ajoutons la carte K8055 au système"
				echo "We add the K8055 on the system"
				sleep 5
				cd /home/K8055/libk8055/src
				cp k8055 /bin/k8055
				
				echo "Nous autorisons l'utilisateur donné au début de ce script et lui seul à utiliser la carte k8055"
				echo "We allow the user given at the beginning of this script and only use the K8055 card"
				sleep 5
				cd /home/K8055/libk8055/src
				sed -e 's/root/'$user'/g' /home/K8055/libk8055/src/velleman.rules > /home/K8055/libk8055/src/velleman.rules2
				cp /home/K8055/libk8055/src/velleman.rules2 /etc/udev/rules.d/velleman.rules
	
				echo "Nous lançons l'interface graphique vous n'aurez qu'a créer un lanceur ou un raccourci sur votre bureau"
				echo "We launch the GUI you will have to create a launcher or a shortcut on your desktop"
				sleep 3
				echo "le script ce trouve dans cd /home/K8055/k8055gui/src et ce nomme k8055gui"
				echo "The script are on /home/$(whoami)/K8055/k8055gui/src and it appoints k8055gui"
				sleep 3
				echo "Des érreurs de lancements peuvent apparaitre je vous laisse google-iser l'incident car trop aléatoire en fonction des paquets présent sur la machine"
				echo "Errors can appear launches I'll let you googled the incident as too random based on the packets on the machine"
				sleep 5
				cd /home/K8055/k8055gui/src
				./k8055gui
			else
			echo "Désolé seulement root peut éxécuter cette installation"
			echo "Sorry only root can be use this script"
			exit 0
			fi		
		fi

sleep 3
echo "voici le manuel de la k8055, lisible à la demande par un simple : man k8055 ou sur http://libk8055.sourceforge.net "
echo "This is the K8055 manual you see with a man K8055 and you going on : http://libk8055.sourceforge.net "
sleep 3
echo " Amusez vous bien :-)"
echo " Enjoy and Have fun"
sleep 3
echo "The provided command line program offers some options. You can use this program for script languages or just for controlling stuff by hand.

Syntax : k8055 [-p:(number)] [-d:(value)] [-a1:(value)] [-a2:(value)] [-num:(number) [-delay:(number)]] [-dbt1:(value)] [-dbt2:(value)] [-reset1] [-reset2] [-debug]

    * -p:(number) Set board address (0-3)
    * -d:(value) Set digital output value (8 bits in decimal)
    * -a1:(value) Set analog output 1 value (0-255)
    * -a2:(value) Set analog output 2 value (0-255)
    * -num:(number) Set number of measurements
    * -delay:(number) Set delay between two measurements (in msec)
    * -dpt1:(value) Set debounce time for counter 1 (0-7450 in msec)
    * -dpt2:(value) Set debounce time for counter 2 (0-7450 in msec)
    * -reset1 Reset counter 1
    * -reset2 Reset counter 2
    * -debug Activate debug mode

Exemple : k8055 -p:1 -d:147 -a1:25 -a2:203

Output : (timestamp);(digital);(analog 1);(analog 2);(counter 1);(counter 2)
Note : timestamp is the number of msec when data is read since program start
Exemple : 499;16;128;230;9;8

    * 499 : Measurement done 499 msec after program start
    * 16 : Digital input value is 10000 (I5=1, all other are 0)
    * 128 : Analog 1 input value is 128
    * 230 : Analog 2 input value is 230
    * 9 : Counter 1 value is 9
    * 8 : Counter 2 value is 8"
	
exit 0