18
0
Fork 0

Syntaxe "bash" pour les scripts (pas les commandes)

This commit is contained in:
Jérémy Lecour 2016-12-29 15:26:14 +01:00 committed by Jérémy Lecour
parent 77bcb957ae
commit 1e0bdd119c
14 changed files with 148 additions and 144 deletions

View File

@ -192,7 +192,7 @@ Attention, il ne faut jamais forcer les droits récursivement sur toute l'arbore
## SSL ## SSL
Apache peut gérer des connexions sécurisées via HTTPS. Apache peut gérer des connexions sécurisées via HTTPS.
~~~ ~~~
# a2enmod ssl # a2enmod ssl
@ -351,7 +351,7 @@ La configuration est quasi-identique au type Basic :
~~~{.apache} ~~~{.apache}
AuthType Digest AuthType Digest
AuthName "Restricted" AuthName "Restricted"
AuthUserFile /foo/.htpasswd AuthUserFile /foo/.htpasswd
Require valid-user Require valid-user
~~~ ~~~
@ -383,7 +383,7 @@ Voici quelques motifs classiques de redirection vers un nouveau domaine (HTTP 30
- `RedirectPermanent / http://new.example.com` - `RedirectPermanent / http://new.example.com`
- `RedirectMatch ^/(.*)$ http://new.example.com/$1` - `RedirectMatch ^/(.*)$ http://new.example.com/$1`
- `RewriteRule ^/(.*) http://new.example.com/$1 [L,R=permanent]` - `RewriteRule ^/(.*) http://new.example.com/$1 [L,R=permanent]`
Pour supprimer un Query String avec une Rewrite Rule : <https://www.philipphoffmann.de/blog/2012/08/16/how-to-discard-the-query-string-in-a-rewriterule-apache-mod_rewrite/> Pour supprimer un Query String avec une Rewrite Rule : <https://www.philipphoffmann.de/blog/2012/08/16/how-to-discard-the-query-string-in-a-rewriterule-apache-mod_rewrite/>
@ -490,11 +490,11 @@ file = /var/log/apache2/error.log
L'indispensable **apachetop** permet de surveiller en direct l'activité d'Apache via un fichier d'access_log (format *combined*) : L'indispensable **apachetop** permet de surveiller en direct l'activité d'Apache via un fichier d'access_log (format *combined*) :
~~~{.bash} ~~~
$ apachetop -f access.log -T 3600 -q $ apachetop -f access.log -T 3600 -q
~~~ ~~~
On peut alors visualiser les URLs les plus sollicitées (querystrings inclus grâce à l'option *-q*), et switcher à l'aide de la touche **d** pour voir les adresses IP source ; à l'aide de la touche **n** pour voir la répartition en codes HTTP 2xx/3xx/4xx/5xx. On peut alors visualiser les URLs les plus sollicitées (querystrings inclus grâce à l'option *-q*), et switcher à l'aide de la touche **d** pour voir les adresses IP source ; à l'aide de la touche **n** pour voir la répartition en codes HTTP 2xx/3xx/4xx/5xx.
Voici l'ensemble des commandes disponibles : Voici l'ensemble des commandes disponibles :
@ -578,7 +578,7 @@ Ajouter `Indexes` dans `AllowOverride`.
### Autorisation Options via .htaccess ? ### Autorisation Options via .htaccess ?
Si l'on modifie l'option `php_admin_value memory_limit` : un _reload_/_graceful_ suffit pour prendre en compte la modification. Si l'on modifie l'option `php_admin_value memory_limit` : un _reload_/_graceful_ suffit pour prendre en compte la modification.
Exemple pour le AllowOverride : Exemple pour le AllowOverride :
@ -590,7 +590,7 @@ AllowOverride Options=All,MultiViews Indexes AuthConfig Limit FileInfo
Quand on utilise l'authentification LDAP avec un serveur en local, il faut démarrer **slapd** avant de démarrer Apache, sinon celui-ci se plaint qu'il ne peut pas contacter le serveur LDAP, et bloque l'accès aux pages … (erreur 500). Quand on utilise l'authentification LDAP avec un serveur en local, il faut démarrer **slapd** avant de démarrer Apache, sinon celui-ci se plaint qu'il ne peut pas contacter le serveur LDAP, et bloque l'accès aux pages … (erreur 500).
Pour cela, dans le script d'init d'apache2 ajouter slapd dans la directive `Required-Start:` Pour cela, dans le script d'init d'apache2 ajouter slapd dans la directive `Required-Start:`
~~~ ~~~
# Required-Start: $local_fs $remote_fs $network $syslog $named slapd # Required-Start: $local_fs $remote_fs $network $syslog $named slapd

View File

@ -260,7 +260,7 @@ On peut ainsi créer régulièrement des snapshots pour les sauvegardes.
Pour créer un snapshot toutes les heures, et en conserver 24 en permanence (notion de snapshots "roulants") : Pour créer un snapshot toutes les heures, et en conserver 24 en permanence (notion de snapshots "roulants") :
~~~{.bash} ~~~
$ date=$(date +%H) $ date=$(date +%H)
$ curl -s -X DELETE "127.0.0.1:9200/_snapshot/foo/h${date}" | grep -v acknowledged..true $ curl -s -X DELETE "127.0.0.1:9200/_snapshot/foo/h${date}" | grep -v acknowledged..true
$ curl -s -X PUT "127.0.0.1:9200/_snapshot/foo/h${date}?wait_for_completion=true" -o /tmp/es_snapshot_h${date}.log $ curl -s -X PUT "127.0.0.1:9200/_snapshot/foo/h${date}?wait_for_completion=true" -o /tmp/es_snapshot_h${date}.log
@ -351,7 +351,7 @@ Nous allons utiliser une base de données d'exemple pour faire des tests.
Télécharger, <https://github.com/andrewvc/ee-datasets/archive/master.zip>, décompresser l'archive et exécuter le programme Java qui va injecter la BDD "movie_db" dans votre cluster ES. Télécharger, <https://github.com/andrewvc/ee-datasets/archive/master.zip>, décompresser l'archive et exécuter le programme Java qui va injecter la BDD "movie_db" dans votre cluster ES.
~~~{.bash} ~~~
$ java -jar elastic-loader.jar http://localhost:9200 datasets/movie_db.eloader $ java -jar elastic-loader.jar http://localhost:9200 datasets/movie_db.eloader
~~~ ~~~
@ -359,7 +359,7 @@ La BDD movie_db contient quelques noms de films, avec leurs informations associ
Pour consulter tout son contenu : Pour consulter tout son contenu :
~~~{.bash} ~~~
$ curl http://localhost:9200/movie_db/_search?pretty=true $ curl http://localhost:9200/movie_db/_search?pretty=true
~~~ ~~~
@ -369,7 +369,7 @@ $ curl http://localhost:9200/movie_db/_search?pretty=true
Créer un index (équivalent d'une base de données) nommé *planet* : Créer un index (équivalent d'une base de données) nommé *planet* :
~~~{.bash} ~~~
$ curl -X PUT localhost:9200/planet $ curl -X PUT localhost:9200/planet
{"acknowledged":true,"shards_acknowledged":true} {"acknowledged":true,"shards_acknowledged":true}
~~~ ~~~
@ -395,14 +395,14 @@ $ curl -X PUT localhost:9200/planet/hacker/_mapping -d '
Créer un document de type hacker avec l'ID 1 : Créer un document de type hacker avec l'ID 1 :
~~~{.bash} ~~~
$ curl -X PUT localhost:9200/planet/hacker/1 -d '{"handle": "jean-michel", "age": 18}' $ curl -X PUT localhost:9200/planet/hacker/1 -d '{"handle": "jean-michel", "age": 18}'
{"_index":"planet","_type":"hacker","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"created":true {"_index":"planet","_type":"hacker","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"created":true
~~~ ~~~
Voir son contenu : Voir son contenu :
~~~{.bash} ~~~
$ curl localhost:9200/planet/hacker/1?pretty=true $ curl localhost:9200/planet/hacker/1?pretty=true
{ {
"_index" : "planet", "_index" : "planet",
@ -419,14 +419,14 @@ $ curl localhost:9200/planet/hacker/1?pretty=true
Mise à jour du champ âge : Mise à jour du champ âge :
~~~{.bash} ~~~
$ curl -X POST localhost:9200/planet/hacker/1/_update -d '{"doc": {"age": 19}}' $ curl -X POST localhost:9200/planet/hacker/1/_update -d '{"doc": {"age": 19}}'
{"_index":"planet","_type":"hacker","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0}} {"_index":"planet","_type":"hacker","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0}}
~~~ ~~~
Suppression du document : Suppression du document :
~~~{.bash} ~~~
$ curl -X DELETE localhost:9200/planet/hacker/1 $ curl -X DELETE localhost:9200/planet/hacker/1
{"found":true,"_index":"planet","_type":"hacker","_id":"1","_version":3,"result":"deleted","_shards":{"total":2,"successful":1,"failed":0}} {"found":true,"_index":"planet","_type":"hacker","_id":"1","_version":3,"result":"deleted","_shards":{"total":2,"successful":1,"failed":0}}
~~~ ~~~
@ -564,7 +564,7 @@ La solution la plus propre est d'utiliser [Curator](https://www.elastic.co/guide
Voici un exemple qui pour les index nommés `logstash-*`, ne va conserver que les 20 derniers. Voici un exemple qui pour les index nommés `logstash-*`, ne va conserver que les 20 derniers.
~~~{.bash} ~~~{.bash}
#!/bin/bash #!/bin/bash
indices=$(curl http://127.0.0.1:9200/_cat/indices/logstash-*?h=i | sort | head -n -20) indices=$(curl http://127.0.0.1:9200/_cat/indices/logstash-*?h=i | sort | head -n -20)

View File

@ -38,7 +38,7 @@ Pour chaque commande, une page de manuel *git-<commande>* est disponible. Par ex
### Créer un dépôt ### Créer un dépôt
~~~{.bash} ~~~
$ mkdir foo $ mkdir foo
$ cd foo $ cd foo
$ git init $ git init
@ -48,7 +48,7 @@ $ git init
Plusieurs méthodes d'accès pour récupérer un dépôt : ssh://, http(s)://, git://, file:// etc. Plusieurs méthodes d'accès pour récupérer un dépôt : ssh://, http(s)://, git://, file:// etc.
~~~{.bash} ~~~
$ git clone ssh://git.example.com/path/projet.git $ git clone ssh://git.example.com/path/projet.git
$ git clone https://git.example.com/path/projet $ git clone https://git.example.com/path/projet
$ git clone git://git.example.com/path/projet.git $ git clone git://git.example.com/path/projet.git
@ -59,7 +59,7 @@ $ git clone file:///path/projet
Ajouter un nouveau fichier : Ajouter un nouveau fichier :
~~~{.bash} ~~~
$ touch main.c $ touch main.c
$ git add main.c $ git add main.c
$ git commit -v $ git commit -v
@ -67,7 +67,7 @@ $ git commit -v
Modification d'un fichier existant : Modification d'un fichier existant :
~~~{.bash} ~~~
$ vi main.c $ vi main.c
$ git add main.c $ git add main.c
$ git commit -v $ git commit -v
@ -78,14 +78,14 @@ $ git commit -v
Voir l'état du dépôt local (fichiers non commités, etc.) : Voir l'état du dépôt local (fichiers non commités, etc.) :
~~~{.bash} ~~~
$ git status $ git status
$ git status -s -b $ git status -s -b
~~~ ~~~
Voir les derniers commits du dépôt local : Voir les derniers commits du dépôt local :
~~~{.bash} ~~~
$ git log $ git log
~~~ ~~~
@ -95,7 +95,7 @@ Si l'on a cloné un dépôt existant, un lien est automatiquement créé entre l
Pour récupérer en local les derniers changements du dépôt distant : Pour récupérer en local les derniers changements du dépôt distant :
~~~{.bash} ~~~
$ git pull --rebase origin $ git pull --rebase origin
~~~ ~~~
@ -103,7 +103,7 @@ $ git pull --rebase origin
Pour envoyer ses modifications locales vers le dépôt référencé comme distant : Pour envoyer ses modifications locales vers le dépôt référencé comme distant :
~~~{.bash} ~~~
$ git push origin $ git push origin
~~~ ~~~
@ -115,40 +115,40 @@ garder en tête que c'est une convention, rien n'oblige à en avoir une.
Lister les branches existantes et connaître sa branche courante : Lister les branches existantes et connaître sa branche courante :
~~~{.bash} ~~~
$ git branch -a $ git branch -a
~~~ ~~~
Passer d'une branche à une autre dans son dépôt local : Passer d'une branche à une autre dans son dépôt local :
~~~{.bash} ~~~
$ git checkout myfeature $ git checkout myfeature
$ git checkout master $ git checkout master
~~~ ~~~
Créer une branche *myfeature* à partir de la branche *master* : Créer une branche *myfeature* à partir de la branche *master* :
~~~{.bash} ~~~
$ git checkout master $ git checkout master
$ git branch myfeature master $ git branch myfeature master
~~~ ~~~
Travailler sur la branche *myfeature* puis [merger](#git-merge) son travail dans la branche *master* : Travailler sur la branche *myfeature* puis [merger](#git-merge) son travail dans la branche *master* :
~~~{.bash} ~~~
$ git checkout master $ git checkout master
$ git merge --no-ff myfeature $ git merge --no-ff myfeature
~~~ ~~~
Pousser une branche locale vers le dépôt référencé comme distant : Pousser une branche locale vers le dépôt référencé comme distant :
~~~{.bash} ~~~
$ git push origin myfeature $ git push origin myfeature
~~~ ~~~
Supprimer une branche locale et distante : Supprimer une branche locale et distante :
~~~{.bash} ~~~
$ git branch -d myfeature $ git branch -d myfeature
$ git push origin :myfeature $ git push origin :myfeature
~~~ ~~~
@ -159,7 +159,7 @@ $ git push origin :myfeature
Affichage de l'historique de différentes façons : Affichage de l'historique de différentes façons :
~~~{.bash} ~~~
$ git log $ git log
$ git log -p $ git log -p
$ git log --stat $ git log --stat
@ -178,26 +178,26 @@ On peut notamment combiner toutes ces options dans un alias à mettre dans `.git
On peut aussi utiliser *whatchanged* qui va lister tout ce qui a changé : On peut aussi utiliser *whatchanged* qui va lister tout ce qui a changé :
~~~{.bash} ~~~
$ git whatchanged $ git whatchanged
$ git whatchanged -p $ git whatchanged -p
~~~ ~~~
Voir l'avant-dernier commit : Voir l'avant-dernier commit :
~~~{.bash} ~~~
$ git show HEAD~1 $ git show HEAD~1
~~~ ~~~
Voir le fichier *foo/bar* tel qu'il était dans l'avant-dernier commit : Voir le fichier *foo/bar* tel qu'il était dans l'avant-dernier commit :
~~~{.bash} ~~~
$ git show HEAD~1:foo/bar $ git show HEAD~1:foo/bar
~~~ ~~~
Pour voir ce qu'il s'est passé entre deux commits : Pour voir ce qu'il s'est passé entre deux commits :
~~~{.bash} ~~~
$ git show HEAD~8..HEAD $ git show HEAD~8..HEAD
$ git show -p HEAD~8..HEAD $ git show -p HEAD~8..HEAD
~~~ ~~~
@ -216,13 +216,13 @@ $ gitk --all
Modifier son dernier message de commit : Modifier son dernier message de commit :
~~~{.bash} ~~~
$ git commit --amend $ git commit --amend
~~~ ~~~
Modifier son dernier commit : Modifier son dernier commit :
~~~{.bash} ~~~
$ vi main.c $ vi main.c
$ git add main.c $ git add main.c
$ git commit --amend $ git commit --amend
@ -230,7 +230,7 @@ $ git commit --amend
Modifier son avant-dernier commit : Modifier son avant-dernier commit :
~~~{.bash} ~~~
$ git rebase -i HEAD^^ $ git rebase -i HEAD^^
… remplacer « pick » par « edit » pour le commit à modifier … remplacer « pick » par « edit » pour le commit à modifier
$ vi main.c $ vi main.c
@ -247,7 +247,7 @@ $ git rebase --continue
Récupérer un commit d'une autre branche dans master : Récupérer un commit d'une autre branche dans master :
~~~{.bash} ~~~
$ git checkout master $ git checkout master
$ git cherry-pick <SHA1 du commit> $ git cherry-pick <SHA1 du commit>
~~~ ~~~
@ -274,14 +274,14 @@ foo/bar*
Cela permet d'avoir un buffer pour mettre « en pause » des modifications non commitées : Cela permet d'avoir un buffer pour mettre « en pause » des modifications non commitées :
~~~{.bash} ~~~
…hack…hack… …hack…hack…
$ git stash save $ git stash save
~~~ ~~~
On peut lister ce buffer : On peut lister ce buffer :
~~~{.bash} ~~~
$ git stash list $ git stash list
stash@{0}: WIP on dev: fb1fa70… m stash@{0}: WIP on dev: fb1fa70… m
stash@{1}: WIP on dev: fb1fa70… m stash@{1}: WIP on dev: fb1fa70… m
@ -289,13 +289,13 @@ stash@{1}: WIP on dev: fb1fa70… m
Et ré-appliquer la dernière modification stockée : Et ré-appliquer la dernière modification stockée :
~~~{.bash} ~~~
$ git stash pop $ git stash pop
~~~ ~~~
Pour purger le buffer sans l'appliquer : Pour purger le buffer sans l'appliquer :
~~~{.bash} ~~~
$ git stash clear $ git stash clear
~~~ ~~~
@ -305,19 +305,19 @@ $ git stash clear
Voir les modifications locales non commitées et non indexés : Voir les modifications locales non commitées et non indexés :
~~~{.bash} ~~~
$ git diff $ git diff
~~~ ~~~
Voir les modifications locales *suivies* (ajoutées avec *git add*) : Voir les modifications locales *suivies* (ajoutées avec *git add*) :
~~~{.bash} ~~~
$ git diff --cached $ git diff --cached
~~~ ~~~
Voir les modifications entre deux commits, ou entre deux branches : Voir les modifications entre deux commits, ou entre deux branches :
~~~{.bash} ~~~
$ git diff HEAD^ HEAD $ git diff HEAD^ HEAD
$ git diff HEAD~8 HEAD^^ $ git diff HEAD~8 HEAD^^
$ git diff myfeature master $ git diff myfeature master
@ -327,13 +327,13 @@ $ git diff myfeature master
Voir les modifications entre deux commits, mais uniquement pour un fichier *foo* : Voir les modifications entre deux commits, mais uniquement pour un fichier *foo* :
~~~{.bash} ~~~
$ git diff HEAD~8..HEAD^^ -- foo $ git diff HEAD~8..HEAD^^ -- foo
~~~ ~~~
Avoir un diff inversé (pratique pour faire préparer un revert partiel par exemple) : Avoir un diff inversé (pratique pour faire préparer un revert partiel par exemple) :
~~~{.bash} ~~~
$ git diff -R $ git diff -R
~~~ ~~~
@ -353,25 +353,25 @@ Dans certains cas il est pratique de faire un simple `git fetch`, notamment si l
Pousser toutes ses branches d'un coup (ce qui est déconseillé en général) : Pousser toutes ses branches d'un coup (ce qui est déconseillé en général) :
~~~{.bash} ~~~
$ git push --all origin $ git push --all origin
~~~ ~~~
Si l'on a une branche locale nommée *foo* et que l'on veut la pousser dans la branche nommée *bar* du dépôt distant : Si l'on a une branche locale nommée *foo* et que l'on veut la pousser dans la branche nommée *bar* du dépôt distant :
~~~{.bash} ~~~
$ git push origin foo:bar $ git push origin foo:bar
~~~ ~~~
/!\\ Attention, il ne faut jamais modifier un historique qui a été pushé vers un dépôt partagé. Néanmoins dans certaines situations exceptionnelles (un mot de passe ou un email qui aurait été mis par erreur) on peut être amené à faire un `push --force` : /!\\ Attention, il ne faut jamais modifier un historique qui a été pushé vers un dépôt partagé. Néanmoins dans certaines situations exceptionnelles (un mot de passe ou un email qui aurait été mis par erreur) on peut être amené à faire un `push --force` :
~~~{.bash} ~~~
$ git push -f origin $ git push -f origin
~~~ ~~~
Il faudra ensuite que chaque utilisateur du dépôt soit prévenu et accepte d'écraser leur dépôt local (en faisant ou vérifiant les modifications d'historiques) : Il faudra ensuite que chaque utilisateur du dépôt soit prévenu et accepte d'écraser leur dépôt local (en faisant ou vérifiant les modifications d'historiques) :
~~~{.bash} ~~~
$ git fetch $ git fetch
$ git reset origin $ git reset origin
~~~ ~~~
@ -382,25 +382,25 @@ $ git reset origin
Pour avoir le dépôt tel qu'il était à un commit : Pour avoir le dépôt tel qu'il était à un commit :
~~~{.bash} ~~~
$ git checkout <SHA1 du commit> $ git checkout <SHA1 du commit>
~~~ ~~~
Pour se remettre sur la version courante : Pour se remettre sur la version courante :
~~~{.bash} ~~~
$ git checkout master $ git checkout master
~~~ ~~~
Pour créer une branche et switcher directement dans cette nouvelle branche, on utilise l'option `-b` : Pour créer une branche et switcher directement dans cette nouvelle branche, on utilise l'option `-b` :
~~~{.bash} ~~~
$ git checkout -b myfeature $ git checkout -b myfeature
~~~ ~~~
Pour annuler toutes les modifications d'un fichier foo/ non indexé : Pour annuler toutes les modifications d'un fichier foo/ non indexé :
~~~{.bash} ~~~
$ git checkout foo/ $ git checkout foo/
~~~ ~~~
@ -411,19 +411,19 @@ $ git checkout foo/
Une branche est en fait la création une déviation, un commit qui a deux *enfants*. Une branche est en fait la création une déviation, un commit qui a deux *enfants*.
On peut ainsi créer une branche à partir de n'importe quel commit : On peut ainsi créer une branche à partir de n'importe quel commit :
~~~{.bash} ~~~
$ git branch newbranch e150b8517a694a2d4816cff95ef612086d644f67 $ git branch newbranch e150b8517a694a2d4816cff95ef612086d644f67
~~~ ~~~
Pour supprimer la branche *foo* sur un dépôt distant non cloné : Pour supprimer la branche *foo* sur un dépôt distant non cloné :
~~~{.bash} ~~~
$ git push ssh://git.example.com/projet.git :foo $ git push ssh://git.example.com/projet.git :foo
~~~ ~~~
Pour récupérer une nouvelle branche depuis le dépôt référencé comme distant : Pour récupérer une nouvelle branche depuis le dépôt référencé comme distant :
~~~{.bash} ~~~
$ git remote update $ git remote update
~~~ ~~~
@ -436,7 +436,7 @@ $ git remote update
Pour supprimer toutes les modifications non commitées et les fichiers/répertoires non indexés : Pour supprimer toutes les modifications non commitées et les fichiers/répertoires non indexés :
~~~{.bash} ~~~
$ git reset --hard $ git reset --hard
$ git clean -f -d $ git clean -f -d
~~~ ~~~
@ -446,7 +446,7 @@ Ou même sur une branche distante comme *origin/master* par exemple (ce qui est
Pour désindexer des modifications d'un fichier : Pour désindexer des modifications d'un fichier :
~~~{.bash} ~~~
$ git reset HEAD <fichier> $ git reset HEAD <fichier>
~~~ ~~~
@ -456,13 +456,13 @@ $ git reset HEAD <fichier>
Pour ajouter tout un répertoire et son contenu : Pour ajouter tout un répertoire et son contenu :
~~~{.bash} ~~~
$ git add foo/ $ git add foo/
~~~ ~~~
Pour choisir ce que l'on veut ajouter pour le prochain commit : Pour choisir ce que l'on veut ajouter pour le prochain commit :
~~~{.bash} ~~~
$ git add -p $ git add -p
~~~ ~~~
@ -485,7 +485,7 @@ Quand un merge n'est pas simple, Git peut adopter plusieurs stratégies (resolve
On peut utiliser une option pour exclure l'application de certain fichier du diff : On peut utiliser une option pour exclure l'application de certain fichier du diff :
~~~{.bash} ~~~
$ git apply --exclude=debian/changelog /tmp/foo.diff $ git apply --exclude=debian/changelog /tmp/foo.diff
~~~ ~~~
@ -495,7 +495,7 @@ $ git apply --exclude=debian/changelog /tmp/foo.diff
Pour voir qui a modifié les lignes d'un fichier *foo/bar* : Pour voir qui a modifié les lignes d'un fichier *foo/bar* :
~~~{.bash} ~~~
$ git blame foo/bar $ git blame foo/bar
~~~ ~~~
@ -508,13 +508,13 @@ On peut éditer ce fichier ou utiliser des commandes pour le faire.
Pour ajouter un dépôt distant : Pour ajouter un dépôt distant :
~~~{.bash} ~~~
$ git remote add origin2 ssh://git.example.com/path/projet.git $ git remote add origin2 ssh://git.example.com/path/projet.git
~~~ ~~~
Pour lister les dépôts distants configurés : Pour lister les dépôts distants configurés :
~~~{.bash} ~~~
$ git remote $ git remote
~~~ ~~~
@ -522,13 +522,13 @@ $ git remote
Pour transmettre ses 3 derniers commits, on peut générer 3 patches qui contiendront les diffs ainsi que les messages de commit : Pour transmettre ses 3 derniers commits, on peut générer 3 patches qui contiendront les diffs ainsi que les messages de commit :
~~~{.bash} ~~~
$ git format-patch -3 $ git format-patch -3
~~~ ~~~
Si l'on a ces 3 patches, on peut les appliquer sur son dépôt local ainsi : Si l'on a ces 3 patches, on peut les appliquer sur son dépôt local ainsi :
~~~{.bash} ~~~
$ git am 000*.patch $ git am 000*.patch
~~~ ~~~
@ -545,7 +545,7 @@ Un dépôt classique possède un répertoire `.git/` qui contient toutes les don
Quand on crée un dépôt ayant vocation à servir de dépôt central, il est préférable de ne pas avoir de *working copy* : il s'agira alors d'un **bare repository** que l'on peut initier avec la commande : Quand on crée un dépôt ayant vocation à servir de dépôt central, il est préférable de ne pas avoir de *working copy* : il s'agira alors d'un **bare repository** que l'on peut initier avec la commande :
~~~{.bash} ~~~
$ mkdir foo $ mkdir foo
$ cd foo $ cd foo
$ git init --bare $ git init --bare
@ -616,7 +616,7 @@ done
On lance ensuite la commande suivante : On lance ensuite la commande suivante :
~~~{.bash} ~~~
$ git svn --authors-file=path/to/authors_file clone svn+ssh://svn.example.com/path/to/repo $ git svn --authors-file=path/to/authors_file clone svn+ssh://svn.example.com/path/to/repo
~~~ ~~~
@ -624,7 +624,7 @@ $ git svn --authors-file=path/to/authors_file clone svn+ssh://svn.example.com/pa
Lancer la commande suivante : Lancer la commande suivante :
~~~{.bash} ~~~
$ git cvsimport -C repo_git -r cvs -k -vA path/to/authors_file -d user@hostname:/path/to/cvsroot repo $ git cvsimport -C repo_git -r cvs -k -vA path/to/authors_file -d user@hostname:/path/to/cvsroot repo
~~~ ~~~
@ -632,7 +632,7 @@ $ git cvsimport -C repo_git -r cvs -k -vA path/to/authors_file -d user@hostname:
Lancer la commande suivante : Lancer la commande suivante :
~~~{.bash} ~~~
$ git-archimport -v foo@arch.example.com--branch $ git-archimport -v foo@arch.example.com--branch
~~~ ~~~
@ -651,13 +651,13 @@ done
Puis exécuter la commande suivante dans votre dépôt : Puis exécuter la commande suivante dans votre dépôt :
~~~{.bash} ~~~
$ git filter-branch --tree-filter /tmp/recode-all-files HEAD $ git filter-branch --tree-filter /tmp/recode-all-files HEAD
~~~ ~~~
Exécuter ensuite la commande suivante pour convertir les messages de commit : Exécuter ensuite la commande suivante pour convertir les messages de commit :
~~~{.bash} ~~~
$ git filter-branch --msg-filter 'iconv -f iso-8859-1 -t utf-8' -- --all $ git filter-branch --msg-filter 'iconv -f iso-8859-1 -t utf-8' -- --all
~~~ ~~~
@ -702,7 +702,7 @@ Il faut ajouter dans la config du repository « distant » :
Il suffit de supprimer tous les fichiers sauf le `.git`, par exemple : Il suffit de supprimer tous les fichiers sauf le `.git`, par exemple :
~~~{.bash} ~~~
$ rm -rf * $ rm -rf *
~~~ ~~~
@ -725,7 +725,7 @@ $ git hooks.mailinglist git@example.com
Pour recevoir les patches : Pour recevoir les patches :
~~~{.bash} ~~~
$ git config hooks.showrev "git show -C %s; echo $ git config hooks.showrev "git show -C %s; echo
~~~ ~~~
@ -733,7 +733,7 @@ $ git config hooks.showrev "git show -C %s; echo
(à éviter autant que possible bien sûr) (à éviter autant que possible bien sûr)
~~~{.bash} ~~~
$ git config --global http.sslverify "false" $ git config --global http.sslverify "false"
~~~ ~~~
@ -743,7 +743,7 @@ Quand on supprime des commits, ils ne sont pas vraiment supprimés du dépôt.
Cela offre l'avantage de pouvoir les retrouver en cas de besoin. Cela offre l'avantage de pouvoir les retrouver en cas de besoin.
Si l'on veut gagner de la place, on peut aussi faire un nettoyage : Si l'on veut gagner de la place, on peut aussi faire un nettoyage :
~~~{.bash} ~~~
$ git repack $ git repack
$ git gc $ git gc
~~~ ~~~
@ -753,7 +753,7 @@ $ git gc
Il se peut qu'on change de forge (passage de gitolite à gitlab par Il se peut qu'on change de forge (passage de gitolite à gitlab par
exemple) et il faut alors migrer les dépots. Un moyen de faire : exemple) et il faut alors migrer les dépots. Un moyen de faire :
~~~{.bash} ~~~
$ for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do rbranch=$(echo $branch | tr '/' ' ' | awk '{print $3}') ; git checkout -b $rbranch $branch ; done $ for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do rbranch=$(echo $branch | tr '/' ' ' | awk '{print $3}') ; git checkout -b $rbranch $branch ; done
$ git remote add gitlab gitlab@gitlab.example.com:group/repo.git && git push gitlab --all && git remote remove origin && git remote rename gitlab origin && git push --set-upstream origin master $ git remote add gitlab gitlab@gitlab.example.com:group/repo.git && git push gitlab --all && git remote remove origin && git remote rename gitlab origin && git push --set-upstream origin master
~~~ ~~~

View File

@ -129,11 +129,11 @@ Voir [TipsCurl]()
Utilisation : Utilisation :
~~~{.bash} ~~~
$ ab -n 1000 -c 100 -l http://127.0.0.1/helloworld.txt $ ab -n 1000 -c 100 -l http://127.0.0.1/helloworld.txt
~~~ ~~~
* `-n` : nombre de requêtes * `-n` : nombre de requêtes
* `-c` : nombre de requêtes effectuées en simultané * `-c` : nombre de requêtes effectuées en simultané
* `-l` : option importante qui tolère la variation de la réponse du serveur (si non, les requêtes seront notées en *Failed requests*) * `-l` : option importante qui tolère la variation de la réponse du serveur (si non, les requêtes seront notées en *Failed requests*)
* `-k` : active le HTTP KeepAlive * `-k` : active le HTTP KeepAlive

View File

@ -22,7 +22,7 @@ Vous pouvez créer un fichier .kdb protégé par qui va stocker vos mots de pass
Vous pourrez ainsi ultérieurement l'utiliser via : Vous pourrez ainsi ultérieurement l'utiliser via :
~~~{.bash} ~~~
$ keepass db.kdb $ keepass db.kdb
~~~ ~~~
@ -51,11 +51,11 @@ kpcli:/Internet> show 0
Path: /Internet Path: /Internet
Title: foo Title: foo
Uname: foo Uname: foo
Pass: Pass:
URL: https://secure.example.com/ URL: https://secure.example.com/
Notes: Notes:
kpcli:/Internet> exit kpcli:/Internet> exit
~~~ ~~~
Note : le champ "Pass" est invisible mais l'on peut le copier/coller avec la souris. Note : le champ "Pass" est invisible mais l'on peut le copier/coller avec la souris.

View File

@ -25,20 +25,20 @@ OpenSSL 1.0.2h 3 May 2016
Pour générer une clé privée non chiffrée (private.key) et sa demande de certificat associé (demande.csr) à transmettre à une autorité de certification : Pour générer une clé privée non chiffrée (private.key) et sa demande de certificat associé (demande.csr) à transmettre à une autorité de certification :
~~~{.bash} ~~~
$ openssl req -newkey rsa:2048 -sha256 -nodes -keyout private.key -out demande.csr $ openssl req -newkey rsa:2048 -sha256 -nodes -keyout private.key -out demande.csr
~~~ ~~~
À des fins pédagogiques, on peut découper la cette génération en 2 étapes, à savoir la génération de la clé privée et la demande de certificat : À des fins pédagogiques, on peut découper la cette génération en 2 étapes, à savoir la génération de la clé privée et la demande de certificat :
~~~{.bash} ~~~
$ openssl genrsa -out private.key 2048 $ openssl genrsa -out private.key 2048
$ openssl req -new -sha256 -key private.key -out demande.csr $ openssl req -new -sha256 -key private.key -out demande.csr
~~~ ~~~
Pour générer une demande de certificat à partir d'un certificat existant (certificat.crt) : Pour générer une demande de certificat à partir d'un certificat existant (certificat.crt) :
~~~{.bash} ~~~
$ openssl x509 -x509toreq -sha256 -in certificat.crt -out demande.csr -signkey private.key $ openssl x509 -x509toreq -sha256 -in certificat.crt -out demande.csr -signkey private.key
~~~ ~~~
@ -47,7 +47,7 @@ $ openssl x509 -x509toreq -sha256 -in certificat.crt -out demande.csr -signkey p
1. Prérequis : avoir généré une clé et une demande de certificat (voir ci dessus) 1. Prérequis : avoir généré une clé et une demande de certificat (voir ci dessus)
2. Génération du certificat avec expiration dans 1000 jours : 2. Génération du certificat avec expiration dans 1000 jours :
~~~{.bash} ~~~
$ openssl x509 -req -sha256 -days 1000 -in demande.csr -signkey private.key -out certificat.crt $ openssl x509 -req -sha256 -days 1000 -in demande.csr -signkey private.key -out certificat.crt
~~~ ~~~
@ -68,13 +68,13 @@ Modifier une copie du fichier `/etc/ssl/openssl.cnf` avant de générer le certi
Puis générer la clé privée et le certificat associé (avec expiration dans 1000 jours) : Puis générer la clé privée et le certificat associé (avec expiration dans 1000 jours) :
~~~{.bash} ~~~
$ openssl req -newkey rsa:2048 -nodes -x509 -sha256 -days 1000 -config openssl.cnf -extensions v3_req -keyout private.key -out certificat.crt $ openssl req -newkey rsa:2048 -nodes -x509 -sha256 -days 1000 -config openssl.cnf -extensions v3_req -keyout private.key -out certificat.crt
~~~ ~~~
Si l'on veut plutôt une demande de certificat (pour transmettre à une autorité de certification) : Si l'on veut plutôt une demande de certificat (pour transmettre à une autorité de certification) :
~~~{.bash} ~~~
$ openssl req -newkey rsa:2048 -nodes -sha256 -days 1000 -config openssl.cnf -extensions v3_req -keyout private.key -out demande.csr $ openssl req -newkey rsa:2048 -nodes -sha256 -days 1000 -config openssl.cnf -extensions v3_req -keyout private.key -out demande.csr
~~~ ~~~
@ -82,7 +82,7 @@ $ openssl req -newkey rsa:2048 -nodes -sha256 -days 1000 -config openssl.cnf -ex
Si une clé privée a été chiffrée (private.pem), on peut générer une version non chiffrée (private.key) ainsi : Si une clé privée a été chiffrée (private.pem), on peut générer une version non chiffrée (private.key) ainsi :
~~~{.bash} ~~~
$ openssl rsa -in private.pem -out private.key $ openssl rsa -in private.pem -out private.key
$ rm private.pem $ rm private.pem
~~~ ~~~
@ -100,7 +100,7 @@ Verifying - Enter PEM pass phrase:
Il suffit de répéter les 2 étapes ci-dessus : Il suffit de répéter les 2 étapes ci-dessus :
~~~{.bash} ~~~
$ openssl rsa -in private.pem -out private.key $ openssl rsa -in private.pem -out private.key
$ openssl rsa -in private.key -des3 -out private-new.pem $ openssl rsa -in private.key -des3 -out private-new.pem
$ rm private.pem private.key $ rm private.pem private.key
@ -113,13 +113,13 @@ Voir <http://security.ncsa.illinois.edu/research/grid-howtos/usefulopenssl.html>
Notamment pour PKCS 12 (ou PFX) vers PEM : Notamment pour PKCS 12 (ou PFX) vers PEM :
~~~{.bash} ~~~
$ openssl pkcs12 -in private.pfx -out private.pem $ openssl pkcs12 -in private.pfx -out private.pem
~~~ ~~~
S'il s'agit de la clé : S'il s'agit de la clé :
~~~{.bash} ~~~
$ openssl pkcs12 -in private.pfx -nocerts -out private.pem $ openssl pkcs12 -in private.pfx -nocerts -out private.pem
~~~ ~~~
@ -133,25 +133,25 @@ Voir <http://trac.evolix.net/infogerance/wiki/HowtoLetsEncrypt>
Pour voir le contenu d'un certificat (certificat.crt) : Pour voir le contenu d'un certificat (certificat.crt) :
~~~{.bash} ~~~
$ openssl x509 -text -in certificat.crt $ openssl x509 -text -in certificat.crt
~~~ ~~~
Pour voir le contenu d'un certificat d'un service réseau : Pour voir le contenu d'un certificat d'un service réseau :
~~~{.bash} ~~~
$ openssl s_client -connect ssl.example.com:443 $ openssl s_client -connect ssl.example.com:443
~~~ ~~~
Pour voir le contenu d'une demande de certificat (demande.csr) : Pour voir le contenu d'une demande de certificat (demande.csr) :
~~~{.bash} ~~~
$ openssl req -text -in demande.csr $ openssl req -text -in demande.csr
~~~ ~~~
Pour lire le format PFX : Pour lire le format PFX :
~~~{.bash} ~~~
$ openssl pkcs12 -info -in certificat.pfx $ openssl pkcs12 -info -in certificat.pfx
~~~ ~~~
@ -159,7 +159,7 @@ $ openssl pkcs12 -info -in certificat.pfx
Pour s'assurer qu'un certificat est bien issu d'un clé privée, ou d'une demande de certificat (.csr), on peut vérifier la correspondance grâce au *modulus* que l'on peut extraire et comparer : Pour s'assurer qu'un certificat est bien issu d'un clé privée, ou d'une demande de certificat (.csr), on peut vérifier la correspondance grâce au *modulus* que l'on peut extraire et comparer :
~~~{.bash} ~~~
$ openssl x509 -noout -modulus -in certificat.crt | openssl md5 $ openssl x509 -noout -modulus -in certificat.crt | openssl md5
$ openssl rsa -noout -modulus -in private.key | openssl md5 $ openssl rsa -noout -modulus -in private.key | openssl md5
$ openssl req -noout -modulus -in demande.csr | openssl md5 $ openssl req -noout -modulus -in demande.csr | openssl md5
@ -169,7 +169,7 @@ Si toutes les empreintes MD5 sont identiques, on est sûr que c'est issu de la c
Pour vérifier en une seule commande : Pour vérifier en une seule commande :
~~~{.bash} ~~~
$ diff <(openssl rsa -in private.key -modulus | grep Modulus) <(openssl x509 -in certificate.crt -modulus | grep Modulus) $ diff <(openssl rsa -in private.key -modulus | grep Modulus) <(openssl x509 -in certificate.crt -modulus | grep Modulus)
~~~ ~~~
@ -184,7 +184,7 @@ http://ocsp.example.com
Puis, interroger le serveur OCSP obtenu (ici http://ocsp.example.com) avec la chaîne de certification (chainfile.pem) et le certificat (certificat.crt) à vérifier : Puis, interroger le serveur OCSP obtenu (ici http://ocsp.example.com) avec la chaîne de certification (chainfile.pem) et le certificat (certificat.crt) à vérifier :
~~~{.bash} ~~~
$ openssl ocsp -issuer chainfile.pem -cert certificat.crt -text -url http://ocsp.example.com $ openssl ocsp -issuer chainfile.pem -cert certificat.crt -text -url http://ocsp.example.com
~~~ ~~~
@ -203,25 +203,25 @@ Revocation Time: Nov 2 09:30:00 2014 GMT
Pour vérifier un fichier de certificat en ligne de commande : Pour vérifier un fichier de certificat en ligne de commande :
~~~{.bash} ~~~
$ openssl verify -CApath /etc/ssl/certs certificat.crt $ openssl verify -CApath /etc/ssl/certs certificat.crt
~~~ ~~~
Pour vérifier la conformité d'un certificat d'un service réseau en ligne de commande : Pour vérifier la conformité d'un certificat d'un service réseau en ligne de commande :
~~~{.bash} ~~~
$ openssl s_client -CApath /etc/ssl/certs -connect ssl.example.com:443 $ openssl s_client -CApath /etc/ssl/certs -connect ssl.example.com:443
~~~ ~~~
Pour un service réseau en STARTTLS (exemple avec SMTP, valable aussi pour POP3/IMAP/FTP) : Pour un service réseau en STARTTLS (exemple avec SMTP, valable aussi pour POP3/IMAP/FTP) :
~~~{.bash} ~~~
$ openssl s_client -CApath /etc/ssl/certs -connect mail.site.com:25 -crlf -starttls smtp $ openssl s_client -CApath /etc/ssl/certs -connect mail.site.com:25 -crlf -starttls smtp
~~~ ~~~
Pour un service en HTTPS avec l'option SNI qui permet d'envoyer un nom de domaine au sein du protocole SSL/TLS (supporté par 99.9% des navigateurs récents) : Pour un service en HTTPS avec l'option SNI qui permet d'envoyer un nom de domaine au sein du protocole SSL/TLS (supporté par 99.9% des navigateurs récents) :
~~~{.bash} ~~~
$ openssl s_client -CApath /etc/ssl/certs -servername ssl.example.com -connect 192.0.2.42:443 $ openssl s_client -CApath /etc/ssl/certs -servername ssl.example.com -connect 192.0.2.42:443
~~~ ~~~
@ -309,18 +309,18 @@ La faille POODLE (adding Oracle On Downgraded Legacy Encryption) est une vulnér
* Désactiver SSL 3.0 pour Nginx 1.2 : `ssl_protocols TLSv1 TLSv1.1 TLSv1.2;` * Désactiver SSL 3.0 pour Nginx 1.2 : `ssl_protocols TLSv1 TLSv1.1 TLSv1.2;`
* Désactiver SSL 3.0 pour Postfix : `smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3 smtp_tls_mandatory_protocols=!SSLv2,!SSLv3 smtpd_tls_protocols=!SSLv2,!SSLv3 smtp_tls_protocols=!SSLv2,!SSLv3` * Désactiver SSL 3.0 pour Postfix : `smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3 smtp_tls_mandatory_protocols=!SSLv2,!SSLv3 smtpd_tls_protocols=!SSLv2,!SSLv3 smtp_tls_protocols=!SSLv2,!SSLv3`
#### Faille FREAK #### Faille FREAK
La faille FREAK (Factoring RSA Export Keys) est une vulnérabilité dans OpenSSL permettant une attaque *man-in-the-middle* pour renégocier La faille FREAK (Factoring RSA Export Keys) est une vulnérabilité dans OpenSSL permettant une attaque *man-in-the-middle* pour renégocier
un chiffrement faible. Cela se base sur des chiffrements « EXPORT » introduits dans les années 2000 par les USA pour pouvoir déchiffrement les communications. Voir <http://blog.cryptographyengineering.com/2015/03/attack-of-week-freak-or-factoring-nsa.html>, <https://freakattack.com/#sysadmin> et <https://www.smacktls.com/>. un chiffrement faible. Cela se base sur des chiffrements « EXPORT » introduits dans les années 2000 par les USA pour pouvoir déchiffrement les communications. Voir <http://blog.cryptographyengineering.com/2015/03/attack-of-week-freak-or-factoring-nsa.html>, <https://freakattack.com/#sysadmin> et <https://www.smacktls.com/>.
On peut tester si un serveur accepte les chiffrements EXPORT avec la commande suivante : On peut tester si un serveur accepte les chiffrements EXPORT avec la commande suivante :
~~~{.bash} ~~~
$ openssl s_client -connect example.com:443 -cipher EXPORT $ openssl s_client -connect example.com:443 -cipher EXPORT
~~~ ~~~
Si on obtient *error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:749* c'est que le serveur n'accepte pas les chiffrements EXPORT. Si on obtient *error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:749* c'est que le serveur n'accepte pas les chiffrements EXPORT.
Debian [a corrigé cette faille en janvier2015](https://security-tracker.debian.org/tracker/CVE-2015-0204), ce qui est surtout important pour les clients (navigateurs, etc.). On peut vérifier que sa machine ne tolère pas de chiffrements « EXPORT » via la commande `openssl ciphers | tr -s ':' '\n' | sort | grep EXP`. Sous Debian, par défaut Apache et Nginx n'ont pas été impactés car leur liste de chiffrement n'incluait pas EXPORT. Debian [a corrigé cette faille en janvier2015](https://security-tracker.debian.org/tracker/CVE-2015-0204), ce qui est surtout important pour les clients (navigateurs, etc.). On peut vérifier que sa machine ne tolère pas de chiffrements « EXPORT » via la commande `openssl ciphers | tr -s ':' '\n' | sort | grep EXP`. Sous Debian, par défaut Apache et Nginx n'ont pas été impactés car leur liste de chiffrement n'incluait pas EXPORT.
@ -378,7 +378,7 @@ ssl_dhparam /etc/ssl/dhparam.pem;
Note : il faut générer ses propres paramètres Diffie-Hellman ; pour des paramètres de 2048 bits (attention, c'est un peu long), on fera: Note : il faut générer ses propres paramètres Diffie-Hellman ; pour des paramètres de 2048 bits (attention, c'est un peu long), on fera:
~~~{.bash} ~~~
$ openssl dhparam -out /etc/ssl/dhparam.pem 2048 $ openssl dhparam -out /etc/ssl/dhparam.pem 2048
~~~ ~~~

View File

@ -10,7 +10,7 @@ Il permet ainsi de lancer facilement des process dans un terminal et de les lais
## Installation ## Installation
~~~{.bash} ~~~
# apt install screen # apt install screen
~~~ ~~~
@ -28,19 +28,19 @@ There are screens on:
Pour lancer un nouveau screen (l'option *-S foo* est facultative, elle permet juste de nommer son screen) : Pour lancer un nouveau screen (l'option *-S foo* est facultative, elle permet juste de nommer son screen) :
~~~{.bash} ~~~
$ screen -S foo $ screen -S foo
~~~ ~~~
Pour se rattacher à un screen existant avec le numéro 30742 (voir screen -ls) : Pour se rattacher à un screen existant avec le numéro 30742 (voir screen -ls) :
~~~{.bash} ~~~
$ screen -rd 30742 $ screen -rd 30742
~~~ ~~~
Pour se rattacher à un screen existant et utilisé en partage (permettant de voir à plusieurs un terminal) : Pour se rattacher à un screen existant et utilisé en partage (permettant de voir à plusieurs un terminal) :
~~~{.bash} ~~~
$ screen -x 30742 $ screen -x 30742
~~~ ~~~
@ -54,11 +54,11 @@ Ctrl+a+a : faire un Ctrl+a
<Ctrl>+a+q : defreezer le screen courant (utile quand on freeze par erreur...) <Ctrl>+a+q : defreezer le screen courant (utile quand on freeze par erreur...)
~~~ ~~~
## Utilisation avancée ## Utilisation avancée
Supprimer les screen "morts" : Supprimer les screen "morts" :
~~~{.bash} ~~~
$ screen -wipe $ screen -wipe
~~~ ~~~
@ -91,7 +91,7 @@ Gestion des copier/coller :
## screen avec port série ## screen avec port série
~~~{.bash} ~~~
$ screen /dev/ttyS0 38400 $ screen /dev/ttyS0 38400
~~~ ~~~

View File

@ -3,11 +3,11 @@ title: Howto Tmux
categories: sysadmin categories: sysadmin
... ...
Tout comme screen, Tmux permet de gérer des terminaux lancés en arrière plan. Il s'agit d'une alternative enrichie qui prend notamment en charge des splits plus complexes. Tout comme screen, Tmux permet de gérer des terminaux lancés en arrière plan. Il s'agit d'une alternative enrichie qui prend notamment en charge des splits plus complexes.
Il diffère de screen avec le concept de fenêtres et "panes". Un "pane" tmux est une fenêtre dans la terminologie de screen. Une fenêtre tmux est un agencement d'un ou plusieurs "pane(s)" (par exemple, deux fenêtres côte à côte). Il diffère de screen avec le concept de fenêtres et "panes". Un "pane" tmux est une fenêtre dans la terminologie de screen. Une fenêtre tmux est un agencement d'un ou plusieurs "pane(s)" (par exemple, deux fenêtres côte à côte).
D'autres points de comparaison : D'autres points de comparaison :
- les fenêtres sont des entités indépendantes qui peuvent être attachées simultanément à plusieurs sessions et peuvent être déplacées librement entre les sessions d'un même serveur tmux - les fenêtres sont des entités indépendantes qui peuvent être attachées simultanément à plusieurs sessions et peuvent être déplacées librement entre les sessions d'un même serveur tmux
- plusieurs buffers - plusieurs buffers
@ -18,7 +18,7 @@ D'autres points de comparaison :
## Installation ## Installation
~~~{.bash} ~~~
# apt install tmux # apt install tmux
~~~ ~~~
@ -34,25 +34,25 @@ travail: 1 windows (created Fri Oct 21 16:05:10 2016) [315x78]
Pour lancer une nouvelle session : Pour lancer une nouvelle session :
~~~{.bash} ~~~
$ tmux $ tmux
~~~ ~~~
Pour lancer une nouvelle session sous le nom test: Pour lancer une nouvelle session sous le nom test:
~~~{.bash} ~~~
$ tmux new -s test $ tmux new -s test
~~~ ~~~
Pour lancer une nouvelle session avec mutt par exemple : Pour lancer une nouvelle session avec mutt par exemple :
~~~{.bash} ~~~
$ tmux new mutt $ tmux new mutt
~~~ ~~~
Pour se rattacher à la session tmux 1 (voir tmux ls) : Pour se rattacher à la session tmux 1 (voir tmux ls) :
~~~{.bash} ~~~
$ tmux attach -t 1 $ tmux attach -t 1
~~~ ~~~
@ -67,7 +67,7 @@ Une fois attaché à une session tmux, voici la liste des commandes de base util
<Ctrl>+b+w : lister les fenêtres disponibles <Ctrl>+b+w : lister les fenêtres disponibles
~~~ ~~~
## Utilisation avancée ## Utilisation avancée
### panneaux ### panneaux

View File

@ -73,7 +73,7 @@ STDOUT.write(output)
Copiez simplement ce script là où vous le souhaitez, rendez-le exécutable puis : Copiez simplement ce script là où vous le souhaitez, rendez-le exécutable puis :
~~~{.bash} ~~~
$ cat Page.trac | trac2md $ cat Page.trac | trac2md
~~~ ~~~

View File

@ -290,7 +290,7 @@ if (req.url ~ "^/regex$")
if (req.backend.healthy) if (req.backend.healthy)
# Présence de l'entête Accept-Encoding # Présence de l'entête Accept-Encoding
if (req.http.Accept-Encoding) if (req.http.Accept-Encoding)
# Condition sur la requête faite # Condition sur la requête faite
if (req.method != "GET" && req.method != "HEAD") if (req.method != "GET" && req.method != "HEAD")
# Présence de l'entête X-Forwarded-For # Présence de l'entête X-Forwarded-For
if (req.http.x-forwarded-for) if (req.http.x-forwarded-for)
@ -432,7 +432,7 @@ varnish> ban req.http.host ~ .
On peut aussi purger avec une requête HTTP **PURGE** : On peut aussi purger avec une requête HTTP **PURGE** :
~~~{.bash} ~~~
$ curl -X PURGE http://www.example.org/foo.txt $ curl -X PURGE http://www.example.org/foo.txt
~~~ ~~~
@ -516,7 +516,7 @@ sub vcl_recv {
} }
~~~ ~~~
Pour finir, quelques informations sur le load-balancing avec Varnish Pour finir, quelques informations sur le load-balancing avec Varnish
* Gestion d'un poids pour chaque backend ? Oui, depuis Varnish 2.1.4 on peut préciser des poids pour chaque backend. * Gestion d'un poids pour chaque backend ? Oui, depuis Varnish 2.1.4 on peut préciser des poids pour chaque backend.
* Gestion du maximum de connexions pour un backend ? via le paramètre *.max_connections* * Gestion du maximum de connexions pour un backend ? via le paramètre *.max_connections*
@ -547,7 +547,7 @@ Note : le *saint mode* (qui permet de laisser tranquille pendant un temps défin
### Nagios ### Nagios
On peut se servir du retour de la commande *varnishadm* pour s'assurer du bon état de santé du démon. Ce plugin Nagios utilise ce principe : <http://exchange.nagios.org/directory/Plugins/Websites%2C-Forms-and-Transactions/check_varnish_health/details>. On peut se servir du retour de la commande *varnishadm* pour s'assurer du bon état de santé du démon. Ce plugin Nagios utilise ce principe : <http://exchange.nagios.org/directory/Plugins/Websites%2C-Forms-and-Transactions/check_varnish_health/details>.
### Munin ### Munin
@ -568,7 +568,7 @@ On peut se servir du retour de la commande *varnishadm* pour s'assurer du bon é
### Exemple pour Wordpress ### Exemple pour Wordpress
Voici un exemple de règles pour un site utilisant WordPress : Voici un exemple de règles pour un site utilisant WordPress :
~~~ ~~~
backend default { backend default {
@ -735,5 +735,4 @@ Un reload ne suffit parfois pas, un restart sera nécessaire dans certains cas.
### Temps d'attente du client HTTP ? ### Temps d'attente du client HTTP ?
Quand un client HTTP interroge Varnish, il va le mettre en attente afin d'interroger le serveur HTTP final (si l'objet n'est pas caché). Pendant que le serveur HTTP final renvoie l'objet demandé à Varnish, le client HTTP est toujours mis en attente, le contenu lui sera renvoyé seulement une fois l'objet reçu à 100% par Varnish. Cela peut poser différents problèmes : dans le cas d'une grosse vidéo le démarrage sera lent, si le timeout du client HTTP est bas il peut fermer la connexion trop tôt, etc. Pour contourner ce problème, on peut utiliser le return *(pipe)*. Quand un client HTTP interroge Varnish, il va le mettre en attente afin d'interroger le serveur HTTP final (si l'objet n'est pas caché). Pendant que le serveur HTTP final renvoie l'objet demandé à Varnish, le client HTTP est toujours mis en attente, le contenu lui sera renvoyé seulement une fois l'objet reçu à 100% par Varnish. Cela peut poser différents problèmes : dans le cas d'une grosse vidéo le démarrage sera lent, si le timeout du client HTTP est bas il peut fermer la connexion trop tôt, etc. Pour contourner ce problème, on peut utiliser le return *(pipe)*.

View File

@ -31,13 +31,13 @@ Ctrl+v NNN où NNN est le numéro ASCII du caractère
Exécuter automatiquement des commandes : Exécuter automatiquement des commandes :
~~~{.bash} ~~~
$ vim ":retab" "+wq" $ vim ":retab" "+wq"
~~~ ~~~
Écrire des commandes dans un script puis les rejouer : Écrire des commandes dans un script puis les rejouer :
~~~{.bash} ~~~
$ vim -s script.txt FICHIER $ vim -s script.txt FICHIER
$ vim -w script.txt FICHIER2 $ vim -w script.txt FICHIER2
~~~ ~~~

View File

@ -27,6 +27,6 @@ Il faut indiquer le paramètre `date.timezone = "Europe/Paris"` dans les fichier
Pour tester la configuration PHP, des tests peuvent être lancés ainsi : Pour tester la configuration PHP, des tests peuvent être lancés ainsi :
~~~{.bash} ~~~
$ php bin/symfony_requirements $ php bin/symfony_requirements
~~~ ~~~

View File

@ -22,7 +22,7 @@ Voir [Help#markdown]()
Commandes Shell (sans output) : Commandes Shell (sans output) :
~~~{.bash} ~~~
$ apt-cache search foo $ apt-cache search foo
# apt install foo # apt install foo
~~~ ~~~
@ -40,6 +40,11 @@ Fichiers avec coloration syntaxique si disponible (voir ci-dessous) :
ServerName www.example.com ServerName www.example.com
~~~~ ~~~~
~~~{.bash}
#!/bin/bash
echo toto
~~~~
Liens externes : Liens externes :
<http://www.example.com/> <http://www.example.com/>
@ -65,7 +70,7 @@ Pour afficher le "symbole" `/!\`, il est important d'échaper le dernier caract
Une commande lancée en root sera précédée de **#** ; en utilisateur elle sera précédée de **$**. Une commande lancée en root sera précédée de **#** ; en utilisateur elle sera précédée de **$**.
Dans la mesure du possible, le maximum de commande devra être lancée en tant qu'utilisateur. Dans la mesure du possible, le maximum de commande devra être lancée en tant qu'utilisateur.
~~~{.bash} ~~~
$ apt-cache search foo $ apt-cache search foo
# apt install foo # apt install foo
~~~ ~~~

View File

@ -28,6 +28,6 @@ Note : browser-plugin-freshplayer-pepperflash est dans jessie-backports
## Gestionnaire de profils ## Gestionnaire de profils
~~~{.bash} ~~~
$ firefox --ProfileManager $ firefox --ProfileManager
~~~ ~~~