Linux



Prendre en compte le fichier .bash_aliases
nano ~/.bashrc

# Décommenter:
if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi
Forme d'un alias
# Il ne peut y avoir d'espace entre le nom de l'alias, le signe "=" et le reste

alias nom_de_votre_alias='commande de votre alias'
Prendre en compte les Modifications
source ~/.bashrc
Cumuler deux alias et en utiliser un troisième
alias agu='sudo apt-get update'
alias agg='sudo apt-get upgrade'
alias agd='sudo apt-get dist-upgrade'
alias maj='agu && agg && agd'
Donner ponctuellement et rapidement les privilèges requis pour la commande précédemment entrée et ayant généré un message d'erreur de privilèges d'exécution.
sudo !!
Alias avec paramètre
alias ins='sudo apt install'

# Dans le terminal:
ins nom_programme
Lister les alias
alias
Ajouter un alias provisoirement
alias agc='commande de votre alias'

# Dans le terminal:
agc
Retirer un alias provisoirement
unalias mon_alias
Connaitre la version de l'OS

lsb_release -a
Connaitre son IP

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 44:8a:5b:6d:87:6d brd ff:ff:ff:ff:ff:ff
inet 192.168.1.83/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
valid_lft 83201sec preferred_lft 83201sec
inet6 fe80::468a:5bff:fe6d:876d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wlp5s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether da:6d:79:d1:18:93 brd ff:ff:ff:ff:ff:ff
Upgrade to Debian Version 10 Buster

Backup /etc/apt/sources.list
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
Edit /etc/apt/sources.list
sudo nano /etc/apt/sources.list
Change all the references in this file from Stretch to Buster
deb http://deb.debian.org/debian debian buster main
deb http://deb.debian.org/debian buster-updates main
deb http://deb.debian.org/debian buster/updates main
Update the local package lists
sudo apt-get update
Run updates on the software packages to prepare for the operating system upgrade
sudo apt-get upgrade
Run the distribution upgrade
sudo apt-get dist-upgrade
Verify Debian 10 Update
hostnamectl
# The Operating System field should display Debian GNU/Linux 10 (buster)
Upgrade to Ubuntu Version 19.04

Upgrade
sudo apt update
sudo apt dist-upgrade
sudo do-release-upgrade
Vérifier la version Ubuntu installée
lsb_release -a
Analyse de l'espace disque dur

df
df -h
# Filesystem            Size  Used Avail Use% Mounted on
# C:/Program Files/Git  232G  206G   27G  89% /
# B:                     11T  5,2T  5,8T  48% /b
# D:                    1,9T  205G  1,7T  11% /d
# J:                    4,6T  2,7T  1,9T  60% /j
# L:                     22T   16T  6,5T  71% /l
# N:                    3,7T  318G  3,3T   9% /n
# Y:                     22T   16T  6,5T  71% /y
# Z:                     22T   16T  6,5T  71% /z

# Sys. de fichiers – Fournit le nom du système de fichiers.
# Taille : vous donne la taille totale du système de fichiers.
# Utilisé : Indique la quantité d’espace disque déjà utilisé dans le système de fichiers.
# Disponible : Indique la quantité d’espace disponible dans le système de fichiers.
# Uti% : Indique la quantité d’espace disque déjà utilisé en pourcentage.
# Monté sur : Indique le point de montage de ce système de fichiers.
Otions supplémentaires de df
df -h  # La sortie sera affichée dans un format plus humain/lisible. En utilisant cette commande, l’espace disque sera affiché en Go (s’il est inférieur à 1 Go, il sera affiché en Mo ou même en o).
df -m  # Est utilisée pour afficher des informations sur l’utilisation du système de fichiers en Mo.
df -k  # Est utilisée pour afficher des informations sur l’utilisation du système de fichiers en Ko .
df -T  # Cette option affiche le type de système de fichiers (une nouvelle colonne apparaît).
df -ht /home  # Cette option vous permet d’afficher des informations sur un système de fichiers spécifique (en format lisible).
df –-help  # Affiche toutes les autres commandes utiles que vous pouvez utiliser et fournit plus d’informations à leur sujet.
du
du /home/user/Desktop/  # Cette option permet de voir dans le bureau de l’utilisateur et elle fournira récursivement des informations concernant l’utilisation du disque des dossiers et des fichiers qui sont sur notre Bureau (ce qui signifie que tous les sous-dossiers sont également inclus).
du -h /home/user/Desktop/  # Tout comme avec df , l’option -h affiche les informations dans un format plus lisible par l’Homme .
du -sh /home/user/Desktop/  # L’option -s nous donnera la taille totale d’un dossier spécifié (dans ce cas, il montrera la taille totale du dossier Desktop).
du -m /home/user/Desktop/  # Tout comme avec df , cela nous fournira des informations en Mégaoctets (nous pouvons utiliser -k pour voir les informations en Kilooctets) .
du -h –time /home/user/Desktop/  # Cela nous donnera des informations basées sur la dernière date de modification des fichiers et dossiers affichés.
du -–help  # Affiche toutes les autres commandes utiles que vous pouvez utiliser et fournit plus d’informations à leur sujet.
Rassemble la liste des fichiers et dossiers du bureau, puis trie la liste de fichiers et de dossiers du plus grand au plus petit
du -h /home/user/Desktop/ | sort -rndu -h /home/user/Desktop/ | sort -rn
Filtrer les gros fichiers
du -h /home/user/Desktop | grep '^\s*[0-9\.]\+G' du -h /home/user/Desktop | grep '^\s*[0-9\.]\+G'
Exclure certains types de fichiers
# Exclue les fichiers .txt
du -h /home/user/Desktop/ –exclude= "*.txt" | sort -rndu -h /home/user/Desktop/ –exclude= "*.txt" | sort -rn
Gestion des dates

Créer un fichier avec la date dans le nom
touch "foo.backup.$(date +%F_%R)"

date +"%Y%m%d"
# 20131016

date +"%Y-%m-%d"
date -I
date --iso-8601
# 2013-10-16

date +"%Y%m%d_%H%M%S"
# 20131016_193655
Les caractères d'enchainement

Le point virgule
# Enchaîne les commandes sans se soucier de la réussite ou de l'échec de chacune.

mkdir /home/~/dossier1/; cd /home/~/dossier1/; touch file1
Le "&&"
# Exécute une commande que si les commandes précédentes ont réussies.

cd /home/~/dossier1 && touch file1
# Si la commande "cd /home/~/dossier1" ne s'exécute pas correctement (que le dossier n'existe pas), la commande "touch file1" qui créer un fichier vide ne s'exécutera pas non plus et par conséquent ne déclenchera pas de message d'erreur.
Le "||"
# Exécute une commande uniquement si la commande précédente ne se déroule pas correctement.

# Par exemple si l'on souhaite, comme auparavant, voir si un dossier existe et si c'est le cas y créer un fichier. On peut également vouloir créer le dossier si il n'est pas encore présent :
cd /home/~/dossier1 || mkdir / /home/~/dossier1 && touch file1
Historique Bash

Consulter l'historique
history
Supprimer une ligne
history -d 421
Supprimer tout l'historique
history -c
Voir la date et l’heure d’exécution de chaque commande
export HISTTIMEFORMAT=’%F %T ‘
# %F équivaut à la date au format %Y-%m-%d et %T équivaut à l’heure au format (%H:%M:%S)
Masquer certaines commandes
export HISTIGNORE=’ls -l:pwd:history’
# Masquer tout les « ls -l », les commandes pwd et la commande history
Remettre à zéro
export HISTIGNORE= »
# ou
unset export HISTIGNORE
Ignorer les commandes dupliquées dans le fichier
export HISTCONTROL=ignoredups
Remettre à zéro le paramètre
unset HISTCONTROL
PHP versions

Connaitre les versions installés
sudo update-alternatives --config php
Switch de PHP 5.6 vers PHP 7.2 pour Apache
sudo a2dismod php5.6 # désactive php5.6
sudo a2enmod php7.2 # active php7.2
sudo service apache2 restart # restart Apache
Switch de PHP 5.6 vers PHP 7.2 pour CLI
sudo update-alternatives --config php

# Sélectionner la version à utiliser
Explorateur Fichier

Préférences de vues dans Fichiers
Vous pouvez changer la vue par défaut pour les nouveaux dossiers, la façon dont les fichiers et les dossiers sont triés par défaut, le niveau de zoom pour la vue en icônes ou en liste, et si les fichiers sont affichés dans l'arborescence du panneau latéral. Sélectionnez Fichiers ▸ Préférences dans la barre supérieure lorsque Fichiers est ouvert et sélectionnez l'onglet Vues.

Vue par défaut
Afficher les nouveaux dossiers en utilisant la vue en icônes
Par défaut, les nouveaux fichiers sont affichés grâce à la vue en icônes. Si vous préférez la vue en liste, vous pouvez la régler ici par défaut. Sinon, vous pouvez sélectionner une vue différente pour chaque dossier lorsque vous naviguez en cliquant sur le bouton Voir les éléments sous forme de liste ou Voir les éléments sous forme d'une grille d'icônes dans la barre d'outils.

Ranger les éléments
Vous pouvez changer l'ordre de tri par défaut qui est utilisé dans les dossiers en utilisant la liste déroulante Ranger les éléments dans les préférences pour trier par nom, taille de fichier, type de fichier, date de dernière modification, date de dernier accès ou date de mise à la corbeille.

Vous pouvez changer la façon dont les fichiers sont triés dans un dossier individuel en cliquant sur le bouton Options de vue dans la barre d'outils et en choisissant Par nom, Par taille, Par type ou Par date de modification, ou en cliquant sur les en-têtes des colonnes dans la vue en liste. Ce menu affecte uniquement le dossier actuel.

Trier les dossiers avant les fichiers
Par défaut, le gestionnaire de fichiers n'affiche plus tous les dossiers avant les fichiers. Pour voir tous les dossiers listés avant les fichiers, activez cette option.

Afficher les fichiers cachés et ceux de sauvegarde
Par défaut, le gestionnaire de fichiers n'affiche pas les dossiers et les fichiers cachés. Vous pouvez afficher les fichiers cachés en sélectionnant cette option.

Vous pouvez également afficher les fichiers cachés dans une fenêtre individuelle en sélectionnant Afficher les fichiers cachés, à partir du menu Options d'affichage dans la barre d'outils.

Réglages par défaut de la vue en icônes
Niveau de zoom par défaut
Vous pouvez rendre les icônes et le texte plus grands ou plus petits en mode vue en icônes en utilisant cette option. Vous pouvez également changer ce réglage dans un dossier individuel en cliquant sur le bouton Options d'affichage dans la barre d'outils et en sélectionnant Zoom avant, Zoom arrière ou Taille normale. Si vous utilisez fréquemment un niveau de zoom plus grand ou plus petit, vous pouvez régler le niveau par défaut avec cette option.
En mode vue en icône, plus ou moins de libellés sont affichés en fonction de votre niveau de zoom.

Réglages par défaut de la vue en liste
Niveau de zoom par défaut
Vous pouvez rendre les icônes et le texte plus grands ou plus petits en mode vue en liste en utilisant cette option. Vous pouvez également le faire pour un dossier individuel en cliquant sur le bouton Options d'affichage dans la barre d'outils et en sélectionnant Zoom avant, Zoom arrière ou Taille normale.

guide.ubuntu-fr.org, nautilus-views
Mot de passe

Changer le mot de passe root
sudo -i
passwd

# ou

sudo passwd
Changer le mot de passe d'un utilisateur
sudo passwd {userNameHere}
sudo passwd jerry # change password for jerry
sudo passwd vivek # change password for vivek
Visualiser la liste des démons tournant

netstat -tlnp

# Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
# tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      3483/mysqld
# tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      9271/named
# tcp        0      0 0.0.0.0:5943            0.0.0.0:*               LISTEN      31686/sshd
# tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      25939/postgres
# tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      26502/master
# tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      9271/named
# tcp6       0      0 :::80                   :::*                    LISTEN      1340/apache2
# tcp6       0      0 ::1:53                  :::*                    LISTEN      9271/named
# tcp6       0      0 :::5943                 :::*                    LISTEN      31686/sshd
# tcp6       0      0 :::5432                 :::*                    LISTEN      25939/postgres
# tcp6       0      0 :::25                   :::*                    LISTEN      26502/master
# tcp6       0      0 ::1:953                 :::*                    LISTEN      9271/named
# tcp6       0      0 :::443                  :::*                    LISTEN      1340/apache2
Apache

Connaitre sa version d'Apache
sudo apache2 -v
# ou
sudo apachectl -v
Reload Apache
systemctl restart apache2
# ou
service apache2 restart
Fichier de log des erreurs Apache
/var/log/apache2/error.log
Activer mod_rewrite sur apache2

Now use locate to find if the mod_rewrite.so is availble on your server:
updatedb
locate mod_rewrite.so
it will found in “/usr/lib/apache2/modules”
New apache follow some folders to enable and disable mods so now do this:
cd /etc/apache2/mods-enabled
touch rewrite.load
vim rewrite.load (you may use any editor to edit this file)
Now paste this following line:
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
Then edit:
/etc/apache2/sites-available/default
Find the following:
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
and change it to
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
and finally restart Apache:
/etc/init.d/apache2 restart
Exclude folder from htpasswd

Protect a website with a username/password but keep the "/assets" folder accessible
# in a .htaccess file in the assets/ directory:
Satisfy Any
Order Allow,Deny
Allow from all
PHP Fatal error when trying to access phpmyadmin mb_detect_encoding

Install mbstring & gettext
sudo apt-get install php-mbstring php7.0-mbstring php-gettext

# For mysql support install
sudo apt-get install php7.0-mysql
Let's Encrypt (abrégé LE) est une autorité de certification lancée le 3 décembre 2015 (Bêta Version Publique). Cette autorité fournit des certificats gratuits X.509 pour le protocole cryptographique TLS au moyen d'un processus automatisé destiné à se passer du processus complexe actuel impliquant la création manuelle, la validation, la signature, l'installation et le renouvellement des certificats pour la sécurisation des sites internet.

Le projet vise à généraliser l'usage de connexions sécurisées sur l’internet. En supprimant la nécessité de paiement, de la configuration du serveur web, des courriels de validation et de gestion de l'expiration des certificats, le projet est fait pour réduire de manière significative la complexité de la mise en place et de la maintenance du chiffrement TLS. Sur un serveur GNU/Linux, l’exécution de seulement deux commandes est censée être suffisante pour paramétrer le chiffrement HTTPS, l’acquisition et l’installation de certificats, et ceci en quelques dizaines de secondes.
Wikipédia
Apache on Debian 8 (jessie)

Install
Since Certbot is packaged for your system, all you'll need to do is apt-get the following packages.

First you'll have to follow the instructions here to enable the Jessie backports repo, if you have not already done so. Then do:
certbot
sudo apt-get install python-certbot-apache -t jessie-backports
Get Started
Certbot has a fairly solid beta-quality Apache plugin, which is supported on many platforms, and automates both obtaining and installing certs:
certbot
certbot --apache
If you're feeling more conservative and would like to make the changes to your Apache configuration by hand, you can use the certonly subcommand:
certbot
certbot --apache certonly
Automating renewal
The Certbot packages on your system come with a cron job that will renew your certificates automatically before they expire. Since Let's Encrypt certificates last for 90 days, it's highly advisable to take advantage of this feature. You can test automatic renewal for your certificates by running this command:
certbot
certbot renew --dry-run
Lorsque tout s'est bien passé

Installation sur un site
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/www.proxidata.fr/fullchain.pem. Your cert will expire on 2017-01-30. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew"
- If you lose your account credentials, you can recover through e-mails sent to bernie.anglade@gmail.com.
- Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
certbot
certbot renew --dry-run
-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/www.proxidata.fr.conf
-------------------------------------------------------------------------------
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/www.proxidata.fr/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates above have not been saved.)

IMPORTANT NOTES:
- Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal.
certbot
Certifier, Renouveller ou Supprimer

Certifier
# Exécutez cette commande pour obtenir un certificat et demandez à Certbot de modifier automatiquement votre configuration Apache pour le servir, en activant l'accès HTTPS en une seule étape.

certbot --apache
Renouveller
# Les packages Certbot sur votre système sont livrés avec un travail cron ou une minuterie systemd qui renouvellera automatiquement vos certificats avant leur expiration. Vous n'aurez pas besoin d'exécuter à nouveau Certbot, sauf si vous modifiez votre configuration. Vous pouvez tester le renouvellement automatique de vos certificats en exécutant cette commande:

certbot renew --dry-run
Supprimer
# Supprimer un site certifié

certbot delete
Apache s'arrête lors du renouvellement du certificat certbot letsencrypt

The issue was with certbot stopping apache for certs renewal, failing, and not restarting apache afterwards
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=892806
Dé/Activer un site
a2ensite <site>
a2dissite <site>
# where '<site>' is the name of your site's Virtual Host configuration file, located in '/etc/apache2/sites-available/', minus the '.conf' extension.
renouveler le certificat à la main
sudo certbot renew --dry-run
Automatiser le renouvelement des certificats
sudo crontab -e
59 * * * * sudo certbot renew
.htaccess && .htpasswd

.htaccess
AuthName "Version en développement à accès restreint."
            AuthType Basic
            AuthUserFile "/var/www/html/MY-Target/.htpasswd"
            Require valid-user
            
.htpasswd
bernie:$1$nm/.k75.$ORaFjgNgx73TTv4S1N1US.
            cellos:$1$db..iN4.$pEiAu59pmAo9xrJ5V5Q6v1
            mivane:$1$D23.QK2.$XlqdjRURWr5ntyYOOhL5Q0
            romano:$1$Zi3.uh5.$RKk0rz3tmuYdTk/EodPbe1
            
Script de génération de Mot-de-passe

<?php
            if (isset($_POST['login']) AND isset($_POST['pass'])) {
            $login = $_POST['login'];
            $pass_crypte = crypt($_POST['pass']); // On crypte le mot de passe

            echo '<p>Ligne à copier dans le .htpasswd :<br />' . $login . ':' . $pass_crypte . '</p>';
            } else {
            ?>

            <form method="post">
            <p>
            Login : <input type="text" name="login"><br />
            Mot de passe : <input type="text" name="pass"><br /><br />
            <input type="submit" value="Crypter !">
            </p>
            </form>

            <?php } ?>
            
Accentuation des caractères

file .htaccess
            iconv -f UTF-8 -t ISO-8859-1 .htaccess > .htaccess.iso
            mv .htaccess .htaccess.utf8 && \
            mv .htaccess.iso .htaccess
            file .htaccess
            

Rediriger la racine vers l'index.php

<IfModule mod_rewrite.c>
            Options -MultiViews

            RewriteEngine On

            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^ index.php [QSA,L]
            </IfModule>
            
RewriteEngine On
            RewriteBase /

            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule !^exclude index.php [L,NC]
            
If your site is not at the webroot level you will have to uncomment the RewriteBase statement and adjust the path to point to your directory, relative from the webroot.
FallbackResource index.php
Empecher l'accès au site par son IP

#FallbackResource /index.php

            # Désactiver l'exploration des répertoires web
            Options All -Indexes

            RewriteEngine On
            RewriteBase /

            # if hostname in current request is not www.proxidata.fr
            RewriteCond %{HTTP_HOST} !^(?:www\.)?proxidata\.fr$ [NC]
            # then redirect
            RewriteRule ^ https://www.proxidata.fr [L,NE,R=301]

            RewriteRule ^index\.php$ - [L]
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule . /index.php [L]
            
Rediriger le traffic depuis OVH vers le serveur

A : Cet enregistrement désigne l’adresse IP vers lequel pointe le nom de domaine Par exemple, www.votredomaine.com A 100.200.100.45

CNAME : définition d’un alias. Par exemple, www2.votredomaine.com CNAME www.votredomaine.com. www2.votredomaine.com pointera vers www.votredomaine.com

MX : Mail eXchanger indique à quelle machine on doit envoyer le courrier, en effet vous pouvez très bien ne pas gérer le courrier sur la même machine qui héberge votre domaine.

NS : Name server ou Serveur de nom, en fait il s’agit du nom d’une machine gérant les noms de domaines



Créer des "Virtual Hosts"

Apache peut héberger un nombre illimité de sites web à la fois. Cette technique d'hébergement virtuel est possible gràce à l'installation de ce qu'on appelle des “virtual hosts” dans votre serveur Apache.

Au niveau le plus basique, seuls deux répertoires doivent être utilisés pour installer des “virtual hosts”: /etc/apache2/sites-available/ et /etc/apache2/sites-enabled/.

Avec apache 1.x, on installait des “virtual hosts” en ajoutant des entrées <virtualhost> dans le fichier /etc/apache/httpd.conf. Apache2 gère les “virtual hosts” de façon différente : il utilise des fichiers individuels “sites-available” liés au répertoire “sites-enabled”.

Pour créer des “virtual hosts” avec Apache2, vous devez ajouter un fichier dans votre répertoire sites-available correspondant au site web virtuellement hébergé. Pour schématiser : Un fichier sites-available = Un site hébergé.
<VirtualHost *:80>
            # The ServerName directive sets the request scheme, hostname and port that
            # the server uses to identify itself. This is used when creating
            # redirection URLs. In the context of virtual hosts, the ServerName
            # specifies what hostname must appear in the request's Host: header to
            # match this virtual host. For the default virtual host (this file) this
            # value is not decisive as it is used as a last resort host regardless.
            # However, you must set it for any further virtual host explicitly.
            ServerName portfolio.bernieanglade.pro

            ServerAdmin bernie.anglade@laposte.net
            DocumentRoot /var/www/html/portfolio/

            # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
            # error, crit, alert, emerg.
            # It is also possible to configure the loglevel for particular
            # modules, e.g.
            #LogLevel info ssl:warn

            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined

            # For most configuration files from conf-available/, which are
            # enabled or disabled at a global level, it is possible to
            # include a line for only one particular virtual host. For example the
            # following line enables the CGI configuration for this host only
            # after it has been globally disabled with "a2disconf".
            #Include conf-available/serve-cgi-bin.conf

            <Directory "/var/www/html/portfolio/">
            Order allow,deny
            Allow from all
            # New directive needed in Apache 2.4.3:
            Require all granted
            </Directory>

            </VirtualHost>
            
Activer le site
a2ensite portfolio.bernieanglade.pro.conf
Désactiver le site
a2dissite portfolio.bernieanglade.pro.conf
Redémarrer Apache
/etc/init.d/apache2 restart
Extracts d'e-mails

Extraire les emails d'un fichier texte
grep -oE '[0-9a-zA-Z_-]+@[0-9a-zA-Z_.-]+\.[a-zA-Z]+' infile > outfile.txt
Extraire les emails des fichiers textes du dossier courant (avec nom de fichier)
grep -oE '[0-9a-zA-Z_-]+@[0-9a-zA-Z_.-]+\.[a-zA-Z]+' * > outfile.txt
Extraire les emails des fichiers textes du dossier courant (sans nom de fichier)
grep -hoE '[0-9a-zA-Z_-]+@[0-9a-zA-Z_.-]+\.[a-zA-Z]+' * > outfile.txt
Ordonnancement

Nombre de lignes
wc -l outfile.txt
wc -l *.csv
Eliminer les doublons
uniq outfile.txt > outfile1.txt
Trier le document par ordre alphabétiques
sort outfile1.txt > outfile2.txt
Communs entre deux fichiers
sort file1.csv file2.csv | uniq -d > result.csv
Rechercher / Remplacer

Remplacer les tabulation par des ; dans un fichier
sed -i "s/\t/;/ig" export_tab.csv
Supprimer les \ dans un fichier
sed -i "s/\\\//ig" export_tab.csv
Supprimer une ligne vide dans un fichier
sed -i "/^$/d" export_tab.csv
Gestion du cache Debian

Afficher la mémoire cache (en Mo)
free -g
Purger la pagecache de la mémoire RAM
echo "1" > /proc/sys/vm/drop_caches
Purger dentries libre et les inodes de la mémoire RAM
echo "2" > /proc/sys/vm/drop_caches
Purger les deux en même temps
echo "3" > /proc/sys/vm/drop_caches
Remettre drop_caches par default
echo "0" > /proc/sys/vm/drop_caches
Divers

Découper un fichier en plusieurs de N lignes
split -dl 10000 --additional-suffix=.csv open.csv open_10000_
Lister l'espace disque du dossier courant
du -h --max-depth=1
du -h --max-depth=1 |sort -n
Importer un dump SQL sous windows

C:\Program Files\PostgreSQL\9.3\bin>psql -U postgres datamart < "C:\wamp\www\dump.sql"
Putty

How do I paste the Windows clipboard into my PuTTY session, using only the keyboard?
Shift + Ins

Pasting is done using the right button (or the middle mouse button, if you have a three-button mouse and have set it up; see section 4.11.2). (Pressing Shift-Ins, or selecting ‘Paste’ from the Ctrl+right-click context menu, have the same effect.) When you click the right mouse button, PuTTY will read whatever is in the Windows clipboard and paste it into your session, exactly as if it had been typed at the keyboard.

How to prevent SSH from timing out (Keeping connections to an SSH server alive)
# Open PuTTY
# Click on the Connection Category in the left menu
# Check the box for Enable TCP keepalives (SO_KEEPALIVE option)
Linux

Connexion à un serveur
ssh login@ip -p port
Déconnexion
exit
How to prevent SSH from timing out (Keeping connections to an SSH server alive)

Server Side Keep Alive
# Log in as root
# Edit the file at /etc/ssh/sshd_config
# Add this line to the file: ClientAliveInterval 60
# Save the file
# Restart sshd on the server
Client Side Keep Alive
# Log in as root
# Edit the file at /etc/ssh/ssh_config
# Add this line to the file: ServerAliveInterval 60
# Save the file
Cron

Lancer le démon Cron
/etc/init.d/cron start|stop|restart
Paramètres de crontab
-e : modifier la crontab
            -l : afficher la crontab actuelle
            -r : supprimer la crontab.
Editer le fichier Cron de l'utilisateur courant
crontab -e
Logguer la sortie d'une tâche CRON

* * * * * myjob.sh >> /var/log/myjob.log 2>&1
Exécution

Exécuter un script PHP tous les jours à 1h
0 1 * * * cd /var/www/html/Datamart; /usr/bin/php5 DIR_cron/cronTB.php
Exécuter un script PHP toutes les 5 minutes
*/5 * * * * cd /var/www/html/Datamart; /usr/bin/php5 DIR_cron/cronSend.php
Toutes les heures à 47 minutes exactement.> & Donc à 00 h 47, 01 h 47, 02 h 47, etc.
47 * * * * commande
Tous les lundis à minuit (dans la nuit de dimanche à lundi).
0 0 * * 1 commande
Tous les premiers du mois à 4 h du matin.
0 4 1 * * commande
Tous les jours du mois de décembre à 4 h du matin.
0 4 * 12 * commande
Toutes les heures les 4 décembre.
0 * 4 12 * commande
Toutes les minutes !
* * * * * commande
À 5 h 30 du matin du 1er au 15 de chaque mois.
30 5 1-15 * * commande
À minuit le lundi, le mercredi et le jeudi.
0 0 * * 1,3,4 commande
Toutes les 2 heures (00 h 00, 02 h 00, 04 h 00…)
0 */2 * * * commande
Toutes les 10 minutes du lundi au vendredi.
*/10 * * * 1-5 commande
Réinstaller le paquet network-manager sans accès internet

sudo dhclient eth0

sudo apt-get install network-manager
exfat

Mount error: unknown filesystem type ‘exfat’
sudo apt-get install exfat-fuse exfat-utils
WGet & certificat

Le certificat n'est pas digne de confiance
wget https://toto.com/tata --no-check-certificate
Username is not in the sudoers file. This incident will be reported

su root
apt-get install sudo -y
adduser username
chmod 0440 /etc/sudoers
# Reboot
L'installation précédente était incomplète

sudo dpkg --configure -a
Update Node JS

npm install -g npm
npm update -g
npm install npm@latest -g
nvm ls-remote
nvm install <version>
nvm use <version>
Autoriser l'accès à distance sur votre serveur MySQL

nano /etc/mysql/my.cnf

# Par défaut, MySQL n'écoute que localhost. Il faudra désactiver la ligne relative au bind-address dans le fichier de configuration mysql
/* bind-address = 127.0.0.1 */

# redémarrer le serveur MySQL
/etc/init.d/mysql restart
XAMPP Error: MySQL shutdown unexpectedly.
This may be due to a blocked port, missing dependencies, improper privileges, a crash, or a shutdown by another method.

  1. Rename the folder mysql/data to mysql/data_old (you can use any name)
  2. Create a new folder mysql/data
  3. Copy the content that resides in mysql/backup to the new mysql/data folder
  4. Copy all your database folders that are in mysql/data_old to mysql/data
  5. Finally copy the ibdata1 file from mysql/data_old and replace it inside mysql/data folder
  6. Start MySQL from XAMPP control panel
https://stackoverflow.com/questions/18022809/xampp-mysql-shutdown-unexpectedly
Compresser un dossier et/ou des fichiers

Compresse un dossier
tar -cvf nom_archive.tar nom_dossier/
Compresse un fichier
tar -rvf tutoriels.tar fichier_supplementaire.tuto
Compresse avec gzip
tar -zcvf tutoriels.tar.gz tutoriels/
Compresse avec bzip2
tar -jcvf tutoriels.tar.bz2 tutoriels/
Putty

Coller dans Putty
Shift + Ins
SSH

Reload SSH
/etc/init.d/ssh restart
# ou
service ssh restart
Changer le port SSH
nano /etc/ssh/sshd_config
# Décommenter la ligne #Port 22 en renseignant le nouveau port.
service sshd restart
Pour se connecter
sudo apt install openssh-server
sudo systemctl status ssh
sudo ufw allow ssh
ssh macbernie@192.168.1.83
The authenticity of host '192.168.1.83 (192.168.1.83)' can't be established.
ECDSA key fingerprint is SHA256:GK2r/JVoHsWIxSelVQ1QSpim+/FiiAQEc8SILy1/mKg.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.83' (ECDSA) to the list of known hosts.
macbernie@192.168.1.83's password:
Linux Bernie 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have new mail.