Mode
Slides
Presentation
Remote control
Send
Listen
Press F11 to switch to fullscreen.
C: Cours 11
1
Organisation
2
Evaluation
3
AirVeraCity
4
HTTP
5
HTTP
6
HTTPS
7
cURL
8
HTTP server
9
SSH
10
Clés
11
Clés SSH
12
SSH
13
Autre protocoles
14
Cron
15
Shell script
16
Shell script
17
Publier les résultats
18
Semaine 11
Chaine de traitement
automatique, serveurs
SSIE Programmation en C, Thomas Lochmatter, 2019
1
Organisation Projet 11 Cours Projet 12 Cours Projet 13 Evaluation du projet 14 Rendre jusqu'à dimanche soir15 minutes par groupe + 5 minutes entre les groupesLundi de 16:00 à 20:00Mardi de 18:00 à 20:00Mercredi de 13:00 à 20:00
2
Evaluation du projet
"Vous avez été mandaté par une entreprise de proposer une solution pour  .
Si votre solution est convaincante, l'entreprise va l'acheter et la mettre en place."
3
AirVeraCity — Mesures de la qualité de l'air Mini-PC Serveur Raspberry PI 3B+ 4G CapteurO3 CapteurNOx GNSS(aka GPS) I2C UART(RS-232) HuaweiE8372 USB HTTPS Admin μC μC SSH Utilisateur HTTPS https://airveracity.com/nodes/ Mail/SMS à l'adminen cas de problèmes Envoi automatiqueà une entreprise Lausanne César-Roux
4

HTTP

Request (navigateur → serveur)
GET /simplon/ HTTP/1.1
Host: enacit1vm11.epfl.ch
User-Agent: Mozilla/5.0 ... Firefox/68.0
Response (serveur → navigateur)
HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Tue, 26 Nov 2019 19:36:51 GMT
Last-Modified: Tue, 26 Nov 2019 19:33:02 GMT
Content-Type: text/html

<!DOCTYPE html>
...
5
GET /simplon/
Demander un document (HTML, image, ...)
PUT /simplon/1574799243.jpg
Envoyer (sauvegarder) un document
POST /simplon/take-picture
Envoyer une commande,
ou une information à traiter
DELETE /simplon/1574799243.jpg
Effacer un document
200 OK
400 Bad Request
401 Unauthorized
404 Not Found
500 Internal Server Error
503 Service Unavailable
6

HTTPS

Navigateur Serveurepfl.ch TLS Je suis le serveur epfl.chSigné: COMODO
HTTPS sur Wikipedia
7

cURL

	# Télécharger 1570862041.jpg (GET)
	$$ curl 'http://enacit1vm11.epfl.ch/simplon/1570862041.jpg' -o image.jpg

	# Afficher l'en-tête de la réponse
	$$ curl -D - ...

	# Envoyer une image avec PUT
	$$ curl -X PUT --data-binary @image.jpg ...

	# Ajouter une en-tête
	$$ curl -H 'User-Agent: ...' ...
8

Serveur HTTP

nginx ./serveur-projet /mon-projet/* /* /autre-projet/* ... Fichiers de/home/students/http GET /mon-projet/*.jpg GET /mon-projet/list?ciel=bleu POST /mon-projet/*.jpg ... ... ...
Nginx sur Wikipedia, Apache HTTP Server sur Wikipedia
9

SSH

	# Se loguer sur un serveur (ou un autre ordinateur)
	$$[lochmatt@pc13:~$] ssh student@enacit1vm11.epfl.ch

	# Les commandes suivantes sont exécutées sur le serveur
	$$[student@enacit1vm11:~$] ...
	$$[student@enacit1vm11:~$] ...
	$$[student@enacit1vm11:~$] ...
	$$[student@enacit1vm11:~$] ...
	$$[student@enacit1vm11:~$] exit

	# De retour sur l'ordinateur local
	$$[lochmatt@pc13:~$]
Secure Shell sur Wikipedia
10
Clés publique et privé Clé privé Clé publique Signer un document Vérifier la signature Décrypter le document Encrypter un document Pour signer et encrypter des documents Reste chez moi Publique Key pair
11
SSH — Clés et authentification Serveur deThomas Laptop deThomas généré avec ssh-keygen Crypté avec 3065f36dSigné: Serveur de Thomas Crypté avec 3065f36dSigné: Laptop de Thomas ~/.ssh/authorized_keys id_rsa.pub de Thomas id_rsa.pub de ... ~/.ssh/id_rsa ~/.ssh/id_rsa.pub /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key.pub 3065f36d
12

SSH

	# Exécuter une commande sur le serveur
	$$ ssh student@enacit1vm11.epfl.ch './projet'

	# ... et sauvegarder le résultat sur l'ordinateur local
	$$ ssh student@enacit1vm11.epfl.ch './projet' > resultats.txt

	# Copier des fichiers/répertoires sur le serveur
	$$ rsync -av images student@enacit1vm11.epfl.ch:~/thomas/

	# Copier des fichiers/répertoires du serveur
	$$ rsync -av student@enacit1vm11.epfl.ch:~/thomas/images .
Secure Shell sur Wikipedia
13

Autres protocoles de communication

FTP (à éviter)

Mail (SMTP, POP, IMAP)

WebRTC (audio, video)

RTP/RTSP (audio, video)

IRC (messages)

XMPP (messages)

MQTT

SIP (appels, à éviter)

...

Protocoles propriétaires
ou très spécifiques

14

Cron, crontab

$$ crontab -e
# m    h  dom mon dow  command
33     *   *   *   *   cd /home/student/dl-scripts && ./download-furka
33     *   *   *   *   cd /home/student/dl-scripts && ./download-simplon
04     *   *   *   *   cd /home/student/dl-scripts && ./download-oberhofen
00-10 12   *   *   *   cd /home/student/dl-scripts && ./download-oberhofen
m minute 0-59
h heures 0-23
dom day of month, jour du mois 1-31
mon mois 1-12, ou jan, feb, ...
dow day of week, jour de la semaine 0-6, ou sun, mon, tue, wed, thu, fri, sat
Cron sur Wikipedia
15

Shell script

#! /bin/bash

# Télécharger l'image l'image actuelle
curl 'https://images.webcamgalore.com/29838-current-webcam-Furka-Pass.jpg' -o image.jpg

# Traiter
./projet image.jpg > resultat.csv

# Créer le diagramme
gnuplot << EOM
set terminal svg size 800,300 fname 'Helvetica' fsize 10
set encoding utf8
set output 'diagramme.svg'
plot './resultat.csv' using 1 with lines
EOM

...
16

Exécuter un script

	# Marquer le script exécutable
	$$ chmod 755 mon-script

	# Mode rwx = lire, écrire, exécuter
	$$ ls -l mon-script
	-rwxr-xr-x 1 thomas thomas 594 Nov 27 10:52 mon-script

	# Exécuter le script
	$$ ./mon-script
17
./projet SVG PNG, PDF ou (E)PS HTML (La)Tex CSV Diagramme SVG, PNG ou (E)PS gnuplot inkscape MIME sendmail Envoi par e-mail PDF pdflatex lp Imprimer Inclure dansun documentHTML ou PDF Publier sous forme de site web Inclure dans un e-mail Transmettre sur un autre serveur rsync Allumer / éteindre la lumière (lampes IKEA) coap-client
18