Linux : Différence entre versions
De TARENTINO
Aller à la navigationAller à la recherche (→Résumé) |
|||
| Ligne 618 : | Ligne 618 : | ||
<div style="width:75%; height:600px; overflow:auto; border:solid 1px black;"> | <div style="width:75%; height:600px; overflow:auto; border:solid 1px black;"> | ||
<syntaxhighlight lang="shell" line='line'> | <syntaxhighlight lang="shell" line='line'> | ||
| − | #!/bin/bash | + | #!/usr/bin/env bash |
| − | + | set -euo pipefail | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | readonly STORE_DIR="$HOME/.wmcpt" | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | usage() { | |
| − | + | cat <<'EOF' | |
| − | + | Usage: | |
| − | + | cryptmot 0 <nom_cryptage> [cle] | |
| − | + | cryptmot 1 <nom_cryptage> [mot] [cle] | |
| − | + | cryptmot 2 | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | Modes: | |
| − | + | 0 Décrypte et affiche le contenu dans la variable CRYPT | |
| − | + | 1 Crypte le mot saisi | |
| − | + | 2 Liste les noms des cryptages | |
| − | + | EOF | |
| − | + | } | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | need_bin() { | |
| − | + | command -v "$1" >/dev/null 2>&1 || { | |
| − | + | echo "Erreur: commande introuvable: $1" >&2 | |
| − | + | exit 1 | |
| − | + | } | |
| − | + | } | |
| − | echo | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | read_secret() { | |
| − | + | local prompt="$1" | |
| − | + | local var | |
| − | + | printf '%s' "$prompt" >&2 | |
| − | + | read -r -s var | |
| − | + | printf '\n' >&2 | |
| − | + | printf '%s' "$var" | |
| − | + | } | |
| − | + | ||
| − | + | ensure_env() { | |
| − | + | need_bin mcrypt | |
| − | + | need_bin mdecrypt | |
| − | + | ||
| − | + | mkdir -p "$STORE_DIR" | |
| − | + | } | |
| − | + | ||
| − | + | decrypt_mode() { | |
| − | + | local name="$1" | |
| − | + | local key="${2:-}" | |
| − | + | local file="$STORE_DIR/$name" | |
| + | |||
| + | [[ -f "$file" ]] || { | ||
| + | echo "Erreur: cryptage introuvable: $name" >&2 | ||
| + | exit 1 | ||
| + | } | ||
| + | |||
| + | if [[ -z "$key" ]]; then | ||
| + | key="$(read_secret "Entrer la clé de décryptage (masquée) : ")" | ||
| + | fi | ||
| + | |||
| + | CRYPT="$(mdecrypt -q -k "$key" < "$file")" | ||
| + | export CRYPT | ||
| + | printf '%s\n' "$CRYPT" | ||
| + | } | ||
| + | |||
| + | crypt_mode() { | ||
| + | local name="$1" | ||
| + | local mot="${2:-}" | ||
| + | local key="${3:-}" | ||
| + | local tmpfile | ||
| + | |||
| + | if [[ -z "$mot" ]]; then | ||
| + | mot="$(read_secret "Entrer le mot à crypter (masqué) : ")" | ||
| + | fi | ||
| + | |||
| + | if [[ -z "$key" ]]; then | ||
| + | key="$(read_secret "Entrer la clé de cryptage (masquée) : ")" | ||
| + | fi | ||
| + | |||
| + | tmpfile="$(mktemp)" | ||
| + | trap 'rm -f "$tmpfile"' EXIT | ||
| + | |||
| + | printf '%s' "$mot" > "$tmpfile" | ||
| + | mcrypt -q -k "$key" < "$tmpfile" > "$STORE_DIR/$name" | ||
| + | } | ||
| + | |||
| + | list_mode() { | ||
| + | ls -1 "$STORE_DIR" | ||
| + | } | ||
| + | |||
| + | main() { | ||
| + | local mode="${1:-}" | ||
| + | local name="${2:-}" | ||
| + | |||
| + | ensure_env | ||
| + | |||
| + | case "$mode" in | ||
| + | 0) | ||
| + | [[ -n "$name" ]] || { usage; exit 1; } | ||
| + | decrypt_mode "$name" "${3:-}" | ||
| + | ;; | ||
| + | 1) | ||
| + | [[ -n "$name" ]] || { usage; exit 1; } | ||
| + | crypt_mode "$name" "${3:-}" "${4:-}" | ||
| + | ;; | ||
| + | 2) | ||
| + | list_mode | ||
| + | ;; | ||
| + | *) | ||
| + | usage | ||
| + | exit 1 | ||
| + | ;; | ||
| + | esac | ||
| + | } | ||
| + | |||
| + | main "$@" | ||
exit 0 | exit 0 | ||
# | # | ||
Version du 30 juin 2026 à 11:35
Array6/08/2026
Pour les débutants
Pour les experts
Linux
Serveurs
Ansible
- >>> Etude <<<
Dev
AWK
- AWK - Exemples pratiques
- Afficher du champs 6 au dernier champs une ligne (l'espace est la séparation par défaut)
- awk '{ for(i=6 ; i <= NF ; i++) { printf "%s ",$i } printf "\n"}' liste.txt
- Découper un fichier contenant des entêtes commençant par DDF en autant de fichiers fic"x".txt
- awk 'BEGIN{c=0} /^DDF/{c++} {print > "fic"c".txt"}' fichierddf
- Crée un fichier fic_final.txt en commençant au troisième DDF
- awk 'BEGIN{c=0} /^DDF/{ddf++} {if (ddf>=3) print > "fic_final.txt"}' fichierddf
- Idem mais Découper un fichier à partir de ligne vide en autant de fichiers fic"x".txt
- awk 'BEGIN{c=0} NF{print > "config"c".txt"} !NF{c++}' fichierblanc
- Comment banaliser le caractère ’ (simple quote) dans la phrase : Aller à l’école
- awk ’BEGINprint "Aller à L’"’"’école"’ Aller à L’école
- awk ’BEGINprint "Aller à L’\’’école"’ Aller à L’école
- awk "BEGINprint \"Aller à L’école\"" Aller à L’école
- awk ’BEGINprint "Aller à L\047école"’ Aller à L’école
- Récupérer les trois derniers caractères d’une variable
- echo "TESTIDF.DPT075" | awk ’{print substr($0,length($0)-2)}’
- => 075
- echo "TESTIDF.DPT075" | awk ’{print substr($0,length($0)-2)}’
- Rajoute des espaces à droite de coucou pour une longueur totale de 190 caractères
- echo "coucou" | awk '{printf "%-190s\n",$0}'
- Rajoute des espaces à gauche de coucou pour une longueur totale de 190 caractères
- echo "coucou" | awk ’{printf "%190s\n",$0}’
- Pour vérifier
- echo "coucou" | awk '{printf "%-190s\n",$0}' | awk ’print length()’
- ==> 190
- echo "coucou" | awk '{printf "%-190s\n",$0}' | awk ’print length()’
- Pour vérifier
- awk -F " :" ’ $2 = "" ; print $0 ’ /etc/passwd imprime chaque ligne du fichier /etc/passwd après avoir effacé le deuxième champ
- awk ’END print NR’ fichier imprime le nombre total de lignes du fichiers
- awk ’print $NF’ fichier imprime le dernier champs de chaque ligne
- who | awk ’print $1,$5’ imprime le login et le temps de connexion.
- awk ’length($0)>75 print’ fichier imprime les lignes de plus de 75 caractères. (print équivaur à print $0)
- echo "coucou" | awk ’{printf "%190s\n",$0}’
- precede chaque ligne par son numéro pour ce fichier (alignement à gauche).
- awk ’print FNR "\t" $0’ files*
- precede chaque ligne par son numéro Pour l’ensemble des fichiers, avec une tabulation.
- awk ’print NR "\t" $0’ files*
- énumère chaque ligne d’un fichier (le nombre est à gauche, aligné à droite)
- awk ’printf("%5d : %s\n", NR,$0)’
- énumère chaque ligne du fichier, mais ecrit seulement les nombres si la ligne n’est pas vide
- awk ’NF$0=++a " :" $0 ;1’
- awk ’print (NF ? ++a " :" :"") $0’
- compte les lignes (comme "wc -l")
- awk ’ENDprint NR’
- écrit la somme des champs de chaque ligne
- awk ’s=0 ; for (i=1 ; i<=NF ; i++) s=s+$i ; print s’
- ajoute tous les champs de toutes les lignes et affiche la somme
- awk ’for (i=1 ; i<=NF ; i++) s=s+$i ; ENDprint s’
- affiche chaque ligne après avoir remplacé chaque champ par sa valeur absolue
- awk ’for (i=1 ; i<=NF ; i++) if ($i < 0) $i = -$i ; print ’
- awk ’for (i=1 ; i<=NF ; i++) $i = ($i < 0) ? -$i : $i ; print ’
- affiche le nombre total de champs ("mots") de toutes les lignes
- awk ’ total = total + NF ; END print total’ fichier
- affiche le nombre total de lignes qui contiennent "Beth"
- awk ’/Beth/n++ ; END print n+0’ fichier
- affiche le premier champ le plus grand et la ligne qui le contient
- awk ’$1 > max max=$1 ; maxline=$0 ; END print max, maxline’
- affiche le nombre de champs de chaque ligne, suivi par la ligne
- awk ’ print NF " :" $0 ’
- affiche le dernier champ de chaque ligne
- awk ’ print $NF ’
- affiche le dernier champ de la dernière ligne
- awk ’ field = $NF ; END print field ’
- affiche toutes les lignes de plus de quatre champs
- awk ’NF > 4’
- affiche toutes les lignes dans lesquelles la valeur du dernier champ est supèrieure à 4
- awk ’$NF > 4’
- crée une chaine d’une certaine longueur (c’est-à-dire avec 513 espaces)
- awk ’BEGINwhile (a++<513) s=s " " ; print s’
- insére une chaine d’une certaine longueur à une certaine position de caractère
- Exemple : insére 49 espaces après la colonne 6 de chaque ligne en entrèe.
- gawk —re-interval ’BEGINwhile(a++<49)s=s " " ;sub(/^.6/,"&" s) ;1’
- Exemple : insére 49 espaces après la colonne 6 de chaque ligne en entrèe.
- crée un tableau nommé month, indexé par des numéros afin que month[1]
- soit ’Jan’, month[2] ’Feb’, month[3] ’Mar’ et ainsi de suite.
- split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec", month, " ")
- crée un tableau appelé "mdigit", indexé par des chaines, afin que
- mdigit["Jan"] soit 1, mdigit["Feb"] 2, etc. Necessite un tableau "month"
- for (i=1 ; i<=12 ; i++) mdigit[month[i]] = i
- Dans un environnement UNIX, convertit des lignes DOS (CR/LF) en format Unix
- awk ’sub(/\r$/,"") ;1’ # suppose que chaque ligne finit par Ctrl-M
- Dans un environnement UNIX convertit des lignes Unix (LF) en format DOS
- awk ’sub(/$/,"\r") ;1’
- Dans un environnement DOS convertit des lignes Unix (LF) en format DOS
- awk 1
- Dans un environnement DOS convertit des lignes DOS (CR/LF) en format Unix
- Ne peut être fait avec les versions DOS de awk, autres que gawk :
- gawk -v BINMODE="w" ’1’ infile >outfile
- supprimer les espaces principaux (espaces, tabulations) au début de chaque ligne
- awk ’sub(/^[ \t]+/, "") ;1’
- supprime les espaces finaux (espaces, tabulations) de la fin de chaque ligne
- awk ’sub(/[ \t]+$/, "") ;1’
- supprime les espaces au début et à la fin de chaque lignes
- awk ’gsub(/^[ \t]+|[ \t]+$/,"") ;1’
- awk ’$1=$1 ;1’ # supprime également des espaces supplémentaires entre les champs
- insére cinq espaces vides au début de chaque ligne (fait une page de décalage)
- awk ’sub(/^/, " ") ;1’
- aligne le texte à droite avec une largeur de 79-colonnes
- awk ’printf "%79s\n", $0’ fichier*
- centre le texte avec une largeur de 79-caractères
- awk ’l=length() ;s=int((79-l)/2) ; printf "%"(s+l)"s\n",$0’ fichier*
- remplace (trouve et remplace) "foo" par "bar" dans chaque ligne
- awk ’sub(/foo/,"bar") ; 1’ # remplace seulement la première occurence
- gawk ’$0=gensub(/foo/,"bar",4) ; 1’ # remplace seulement la quatrième occurence
- awk ’gsub(/foo/,"bar") ; 1’ # remplace toutes les occurences de la ligne
- remplace "foo" par "bar" seulement pour les lignes qui contiennent "baz"
- awk ’/baz/gsub(/foo/, "bar") ; 1’
- remplace "foo" par "bar" sauf pour les lignes qui contiennent "baz"
- awk ’ !/baz/gsub(/foo/, "bar") ; 1’
- modifie "scarlet" ou "ruby" ou "puce" en "red"
- awk ’gsub(/scarlet|ruby|puce/, "red") ; 1’
- inverser l’ordre des lignes (comme avec "tac")
- awk ’a[i++]=$0 END for (j=i-1 ; j>=0 ;) print a[j—] ’ fichier*
- si une ligne se finit par un backslash, ajoutez la ligne suivante à celui-ci (cela échoue si il y a plusieurs lignes
- finissant par un backslash…)
- awk ’/\\$/ sub(/\\$/,"") ; getline t ; print $0 t ; next ; 1’ fichier*
- affiche et trie les noms de login de tous les utilisateurs
- awk -F " :" ’print $1 | "sort" ’ /etc/passwd
- affiche les deux premiers champs, en ordre inverse de chaque ligne
- awk ’print $2, $1’ file
- échange les deux premiers champs de chaque ligne
- awk ’temp = $1 ; $1 = $2 ; $2 = temp’ fichier
- affiche chaque ligne, en supprimant le second champ de cette ligne
- awk ’ $2 = "" ; print ’
- affiche dans l’ordre inverse les champs de chaque ligne
- awk ’for (i=NF ; i>0 ; i—) printf("%s ",$i) ;print ""’ file
- concatene toutes les 5 lignes en entrée, en employant un séparateur virgule
- entre les champs
- awk ’ORS=NR%5 ?"," :"\n"’ file
- affiche les 10 premières lignes du fichier (émule le comportement de la commande "head")
- awk ’NR < 11’
- affiche la première ligne du fichier (émule "head -1")
- awk ’NR>1exit ;1’
- affiche les deux dernières lignes d’un fichier (émule "tail -2")
- awk ’y=x "\n" $0 ; x=$0 ;ENDprint y’
- affiche la dernière ligne d’un fichier (émule "tail -1")
- awk ’ENDprint’
- affiche seulement les lignes qui correspondent à une expression régulière (émule "grep")
- awk ’/regex/’
- affiche seulement les lignes qui ne correspondent pas à une expression régulière (émule "grep -v")
- awk ’ !/regex/’
- affiche toutes les lignes où le champ #5 est égal à "abc123"
- awk ’$5 == "abc123"’
- affiche seulement les lignes où le champ #5 n’est pas égal à "abc123"
- cela affichera aussi les lignes qui ont moins de 5 champs.
- awk ’$5 != "abc123"’
- awk ’ !($5 == "abc123")’
- correspondance avec un champ à l’aide d’une expression régulière
- awk ’$7 /^[a-f]/’ # affiche la ligne si le champ #7 correspond à l’expression régulière
- awk ’$7 ! /^[a-f]/’ # affiche la ligne si le champ #7 ne correspond pas à l’expression régulière
- affiche la ligne immédiatement avant une expression, mais pas la ligne contenant l’expression
- awk ’/regex/print x ;x=$0’
- awk ’/regex/print (NR==1 ? "match on line 1" : x) ;x=$0’
- affiche la ligne immédiatement après l’expression, mais pas la ligne contenant l’expression
- awk ’/regex/getline ;print’
- fait une recherche avec grep pour AAA et BBB et CCC (dans n’importe quel ordre sur la même ligne)
- awk ’/AAA/ && /BBB/ && /CCC/’
- fait une recherche avecc grep pour AAA et BBB et CCC (dans cet ordre)
- awk ’/AAA.*BBB.*CCC/’
- affiche seulement des lignes de 65 caractères ou plus
- awk ’length > 64’
- affiche seulement des lignes de moins de 65 caractères
- awk ’length < 64’
- affiche la partie du fichier depuis l’expression régulière jusqu’à la fin du fichier
- awk ’/regex/,0’
- awk ’/regex/,EOF’
- affiche la partie du fichier basée sur les numéros de ligne (lignes 8-12, inclus)
- awk ’NR==8,NR==12’
- affiche la ligne numéro 52
- awk ’NR==52’
- awk ’NR==52 print ;exit’ # plus efficace avec de gros fichiers
- affiche une partie d’un fichier entre deux expressions régulières (inclus)
- awk ’/Iowa/,/Montana/’ # sensible à la casse
- supprimer toutes les lignes vides d’un fichier (même chose que "grep ’.’ ")
- awk NF
- awk ’/./’
- supprime des doublons et des lignes consécutives (émule "uniq")
- awk ’a ! $0 ; a=$0’
- supprime les doublons et les lignes non-consécutives
- awk ’ !a[$0]++’ # script plus concis
- awk ’ !($0 in a)a[$0] ;print’ # script plus efficace
- Afficher du champs 6 au dernier champs une ligne (l'espace est la séparation par défaut)
Scripts
- Une partie Opensource des scripts est ici, le reste est à venir....
- Bash Bonnes écritures
Installation
1 #!/usr/bin/env bash
2 set -euo pipefail
3
4 readonly STORE_DIR="$HOME/.wmcpt"
5
6 usage() {
7 cat <<'EOF'
8 Usage:
9 cryptmot 0 <nom_cryptage> [cle]
10 cryptmot 1 <nom_cryptage> [mot] [cle]
11 cryptmot 2
12
13 Modes:
14 0 Décrypte et affiche le contenu dans la variable CRYPT
15 1 Crypte le mot saisi
16 2 Liste les noms des cryptages
17 EOF
18 }
19
20 need_bin() {
21 command -v "$1" >/dev/null 2>&1 || {
22 echo "Erreur: commande introuvable: $1" >&2
23 exit 1
24 }
25 }
26
27 read_secret() {
28 local prompt="$1"
29 local var
30 printf '%s' "$prompt" >&2
31 read -r -s var
32 printf '\n' >&2
33 printf '%s' "$var"
34 }
35
36 ensure_env() {
37 need_bin mcrypt
38 need_bin mdecrypt
39
40 mkdir -p "$STORE_DIR"
41 }
42
43 decrypt_mode() {
44 local name="$1"
45 local key="${2:-}"
46 local file="$STORE_DIR/$name"
47
48 [[ -f "$file" ]] || {
49 echo "Erreur: cryptage introuvable: $name" >&2
50 exit 1
51 }
52
53 if [[ -z "$key" ]]; then
54 key="$(read_secret "Entrer la clé de décryptage (masquée) : ")"
55 fi
56
57 CRYPT="$(mdecrypt -q -k "$key" < "$file")"
58 export CRYPT
59 printf '%s\n' "$CRYPT"
60 }
61
62 crypt_mode() {
63 local name="$1"
64 local mot="${2:-}"
65 local key="${3:-}"
66 local tmpfile
67
68 if [[ -z "$mot" ]]; then
69 mot="$(read_secret "Entrer le mot à crypter (masqué) : ")"
70 fi
71
72 if [[ -z "$key" ]]; then
73 key="$(read_secret "Entrer la clé de cryptage (masquée) : ")"
74 fi
75
76 tmpfile="$(mktemp)"
77 trap 'rm -f "$tmpfile"' EXIT
78
79 printf '%s' "$mot" > "$tmpfile"
80 mcrypt -q -k "$key" < "$tmpfile" > "$STORE_DIR/$name"
81 }
82
83 list_mode() {
84 ls -1 "$STORE_DIR"
85 }
86
87 main() {
88 local mode="${1:-}"
89 local name="${2:-}"
90
91 ensure_env
92
93 case "$mode" in
94 0)
95 [[ -n "$name" ]] || { usage; exit 1; }
96 decrypt_mode "$name" "${3:-}"
97 ;;
98 1)
99 [[ -n "$name" ]] || { usage; exit 1; }
100 crypt_mode "$name" "${3:-}" "${4:-}"
101 ;;
102 2)
103 list_mode
104 ;;
105 *)
106 usage
107 exit 1
108 ;;
109 esac
110 }
111
112 main "$@"
113 exit 0
114 #
115 #FLASH
116 # URLs
117 #
118 # SAUVEGARDES
119 #
120 #
121 #
122 # UTILISATEUR
123 #
124 #
125 #
126 # DESINSTALLATIONS
127 #
128 # Dans le cas où le Pc n est pas un portable, désactivation de la gestion des touches bleus.
129 #
130 #sudo update-rc.d -f hotkey-setup remove
131 #
132 #Batterie
133 #
134 #sudo update-rc.d -f laptop-mode remove
135 #
136 #Gestion du Raid
137 #
138 #sudo update-rc.d -f mdadm remove
139 #sudo update-rc.d -f mdadm-raid remove
140 #
141 #Modem
142 #
143 #sudo update-rc.d -f dns-clean remove
144 #
145 # Redémarrage des services
146 #
147 #sudo systemctl restart sshd.service
148 #
149 # COMPLEMENTS
150 #
151 #Avec une clé SSH, effectuer en plus...
152 #
153 #Générer une clé
154 # ssh-keygen -t rsa
155 #Copier le fichier id_rsa.pub sur l'hôte distant et l'ajouter à ~/.ssh/authorized_keys
156 # ssh-copy-id identifiant@hôte
157 #
158 #sed -i 's/geteuid/getppid/' /usr/bin/vlc
159 #
160 #sudo apt-get update
161 #sudo apt-get upgrade
162 #sudo apt-get install libimobiledevice-utils
163 #idevicepair unpair
164 #idevicepair pair
165 #idevicepair validate
166 #
167 # Fond d'ecran en terminal:
168 #http://www.billyboylindien.com/ubuntu/ubuntu-devilspie.html
169 #https://www.torproject.org/fr/download/
170 #
171 # APT
172 #
Modification de sources.list en fonction de la version de ubuntu
- Comme ça me gavait de chercher à corriger mon fichier sources.list à cause des erreurs occasionnées lors de la modification de celui ci et après un apt-get update, j'ai voulu génerer un script qui allait mettre le bon fichier à la bonne version.
- apt_fix (Il faut avoir installé le package lynx au préalable)
1 #!/bin/bash
2 #
3 # Variables
4 #
5 DATE_NOW=`date +"%Y%m%d_%H%M%S"`
6 ref="https://fr.wikipedia.org/wiki/Liste_des_versions_d%27Ubuntu"
7 r="/cmd/tmp/versions_ubuntu.txt"
8 #
9 # Téléchargement de la liste des versions
10 #
11 cd /tmp
12 lynx -dump https://fr.wikipedia.org/wiki/Liste_des_versions_d%27Ubuntu | grep -v "png\|jpg\|wikipedia.org\|\[\|\!\|Meta\|software\|2004" | grep "(" | grep Ubuntu > "$r"
13 #
14 # Enregistrement du nouveau fichier en fonction de la version actuelle installée
15 #
16 v=$(cat /etc/issue | cut -d' ' -f2 | cut -d'.' -f1,2)
17 nv=$(cat "$r" | grep "$v" | cut -d'(' -f2 | cut -d' ' -f1)
18 nv=$(echo "${nv}" | tr '[:upper:]' '[:lower:]')
19 cp /etc/apt/sources.list /etc/apt/sources.list.${DATE_NOW}
20 sudo tee /etc/apt/sources.list <<EOF
21 #------------------------------------------------------------------------------#
22 # OFFICIAL UBUNTU REPOS #
23 #------------------------------------------------------------------------------#
24
25 ###### Ubuntu Main Repos
26 deb http://fr.archive.ubuntu.com/ubuntu/ xxxxxxxx main restricted universe multiverse
27
28 ###### Ubuntu Update Repos
29 deb http://fr.archive.ubuntu.com/ubuntu/ xxxxxxxx-security main restricted universe multiverse
30 deb http://fr.archive.ubuntu.com/ubuntu/ xxxxxxxx-updates main restricted universe multiverse
31 deb http://fr.archive.ubuntu.com/ubuntu/ xxxxxxxx-backports main restricted universe multiverse
32
33 ###### Ubuntu Partner Repo
34 deb http://archive.canonical.com/ubuntu xxxxxxxx partner
35 EOF
36 echo "-------------------------> ("$nv")"
37 cat /etc/apt/sources.list | sed -re 's/xxxxxxxx/'${nv}'/g' > /tmp/sources.list
38 mv /tmp/sources.list /etc/apt
39 cat /etc/apt/sources.list
- Fait dans l'urgence puisque j'en ai besoin pour ansible, il y a sûrement des trucs à corriger, modifier, améliorer, mais ce script est une base qui fonctionne.
- Il fait une sauvegarde systématique de l'ancien sources.list en le renommant à la date du jour dans /etc/apt .
Mémoriser et utiliser les mots de passe de connexion ssh
- Il est quelques fois ennuyeux de chercher les mots de passe et d'avoir à les entrer à chaque connexion.
- Ce script permet pour chaque user de les mémoriser dans un fichier de façon cryptée afin de pouvoir les exploiter en ligne de commande via la variable $crypt
- Les mots de passe ainsi mémorisés n’apparaîtront pas dans le "history"
- Même si un pirate prend possession d'un compte en local, il ne pourra jamais voir ces mots de passe
- La sécurité est sur plusieurs niveaux:
- machine utilisée
- user
- session utilisée
- clé
- nom du mot de passe
- Pour qu'un pirate exploite le mot de passe, il lui faudra pour cela avoir le même ordinateur avec le même compte que celui qui a enregistré le mot de passe, connaître la clé et le nom du mot codé et le faire sur la même session que celle utilisée pour le mot de passe.....
Prérequis (non obligatoire mais conseillé)
- Installer le package sshpass
Code
1 #!/bin/bash
2 # **** 0 Decrypt ****
3 # cryptmot 0 nom_de_cryptage <clé de decryptage>
4 # => va demander une clé si pas de clé entrée
5 # => donne variable crypt
6 # **** 1 Crypt ****
7 # cryptmot 1 nom_de_cryptage <mot a crypter>
8 # => va demander une clé
9 # => voir pour mettre en cache
10 # **** 2 List ****
11 # cryptmot 2
12 # => va afficher la liste de tous les cryptages effectués
13 # => affichage simplement des noms de cryptage
14 #
15 # La clé est simplement le mot de passe de l'utilisateur
16 # Lors de la saisie du mot de passe, l'affichage ne se fait pas
17 #
18 p=$1
19 DATE_NOW=`date +"%Y%m%d_%H%M%S"`
20 export crypt=''
21 ############################################
22 # On regarde si les paquets sont installés #
23 ############################################
24 p="mcrypt"
25 if [[ -z $(which "$p") ]]; then
26 retour=$(apt-cache policy "$p" | grep -s "Installé\|Installed")
27 if [[ "$retour" == '' ]]; then
28 echo "On installe...."
29 sudo aptitude install "$p" -y
30 fi
31 fi
32 ##################################################
33 # On vérifie si le répertoire de cryptage est là #
34 ##################################################
35 r="$HOME/.wmcpt"
36 if [[ ! -d "$r" ]]; then
37 echo "On créé le répertoire...."
38 mkdir "$r"
39 fi
40 #########
41 # START #
42 #########
43 if [[ "$1" != '2' ]]; then
44 if [[ "$1" == '' ]]; then
45 exit 1
46 fi
47 if [[ "$1" != '0' ]] && [[ "$1" != '1' ]]; then
48 exit 1
49 fi
50 if [[ "$1" == '1' ]] && [[ "$2" == '' ]]; then
51 exit 1
52 fi
53 if [[ "$1" == '0' ]] && [[ "$2" == '' ]]; then
54 exit 1
55 fi
56 else
57 ####################################
58 # 2 Affichage des noms de cryptage #
59 ####################################
60 ls ~/.wmcpt
61 exit 0
62 fi
63 #############
64 # 0 Decrypt #
65 #############
66 # cryptmot 0 nom_du_cryptage <clé de decryptage>
67 if [[ "$1" == '0' ]]; then
68 if [[ "$3" == '' ]]; then # on demande la clé de décryptage
69 echo "Entrer la clé de decryptage (ne s'affichera pas)"
70 stty -echo
71 read cle
72 stty echo
73 else
74 cle=$3
75 fi
76 export crypt=$(cat ${r}/"$2" | mdecrypt -q -k ${cle})
77 fi
78 ###########
79 # 1 Crypt #
80 ###########
81 # cryptmot 1 nom_du_cryptage <mot_a_crypter> <clé de decryptage>
82 if [[ "$1" == '1' ]]; then
83 FC="/tmp/${DATE_NOW}.tmp"
84 if [[ "$3" == '' ]]; then # on demande le mot à crypter
85 echo "Entrer le mot à crypter (ne s'affichera pas)"
86 stty -echo
87 read mot
88 stty echo
89 else
90 mot=$3
91 fi
92 echo $mot > $FC
93 if [[ "$4" == '' ]]; then # on demande la clé de décryptage
94 echo "Entrer la clé de cryptage (ne s'affichera pas)"
95 stty -echo
96 read cle
97 stty echo
98 else
99 cle=$3
100 fi
101 cat "$FC" | mcrypt -q -k ${cle} > ${r}/"$2"
102 rm -f "$FC"
103 fi
Fonctionnement
- Dans un premier temps, il faut mémoriser les mots de passe à utiliser dans un fichier, tout sera crypté.
- Chaque mot de passe sera enregistré avec un nom et une clé qui diffère selon les utilisateurs.
Synoptique
Système d'exploitation
Linux
Distribution
- Qu'est ce qu'une distribution ?
Presentation
ISO
- Tu connais les fichiers ISO ?
- C’est le format magique qui permet de créer une copie numérique parfaite d’un CD ou DVD.
- Que ce soit pour installer Windows, tester une distribution Linux, sauvegarder un jeu ou protéger un film, l’ISO garde non seulement les fichiers, mais aussi la structure du disque. 🔥
👉 Résultat : tu peux le graver sur un CD, un DVD ou même une clé USB, et ton PC pourra démarrer directement dessus comme si c’était l’original.
- En gros, c’est l’outil ultime pour éviter les erreurs de copie et garder une sauvegarde nickel.
- Un fichier ISO est aussi un fichier qui contient les données d'un système à installer.
- On doit le graver sur un support comme une clef ou un CD ou DVD avant de le faire démarrer sur un ordinateur pour installer ce système.
Distributions
Centos
- CentOS est la plus stable des distributions présentées. Cette stabilité s'explique par un développement particulièrement long de chaque version. Ce cycle permet entre autres une meilleure correction des bugs et des failles de sécurité.
Alma
- AlmaLinux est une distribution Linux d'entreprise Open Source, détenue et gouvernée par la communauté, libre à tout jamais, axée sur la stabilité à long terme et fournissant une plateforme de production robuste. AlmaLinux OS est compatible avec RHEL®.
Debian
- C'est une distribution Linux, composée presque exclusivement de logiciels libres (en effet, la plupart des microcodes — notamment ceux des fondeurs — et des firmwares, ainsi que la partie non-free des dépôts, ne sont pas libres).
Autre
ISO
- Tu connais les fichiers ISO ?
- C’est le format magique qui permet de créer une copie numérique parfaite d’un CD ou DVD.
- Que ce soit pour installer Windows, tester une distribution Linux, sauvegarder un jeu ou protéger un film, l’ISO garde non seulement les fichiers, mais aussi la structure du disque. 🔥
👉 Résultat : tu peux le graver sur un CD, un DVD ou même une clé USB, et ton PC pourra démarrer directement dessus comme si c’était l’original.
- En gros, c’est l’outil ultime pour éviter les erreurs de copie et garder une sauvegarde nickel.
- Un fichier ISO est aussi un fichier qui contient les données d'un système à installer.
- On doit le graver sur un support comme une clef ou un CD ou DVD avant de le faire démarrer sur un ordinateur pour installer ce système.
Cours
