Administration system
type de terminale:
0: le vrai unix
1: emulateur de terminal (celui quon utilise tt le temps)
* $ pour utilisateur simple
- # root super user
SHELL / | \ ZSH BASH fish
proxmox:
hyperviseur debian Proxmox VE est une solution de virtualisation libre Il intègre l'hyperviseur linux kvm, Proxmox est une solution de virtualisation de type “bare metal”.
* jedi : autocomplete * flake8 and pep8 ⇒ guide python code
git
* pour crer une nouvelle branche: gib <nom de la branche>
* pour changer le message d'un commit: git –amend
git remote -v
lorsque on ajoute des commit dans la mauvasise branche et on veut revenir a notre etat :
1. on creer une branche ou on se trouve (gib nouvelle_b)
2. git push nouvelle branche
3. git reset (code du commit ou on veut revenir)
4. git push -f origin ancienne_b
deplacer le head dans une branche sans garder les modification local
git reset –hard origin/branch
django
$ django-admin startproject nom
manage.py : le point dacce de tt le projet
- setting: contint les configuration et les applications …
- wsgi inside sittings: la variable qui nous permet de mettre le projet en production
$ python3 manage.py startproject core #creer une appli dans le grand projet $ python3 manage.py runserver $ python3 manage.py makemigration $ python3 manage.py createsuperuser
bash
Create a directory named tmp/files in the current working directory:
mkdir -p tmp/files
permet dafficher les 5 dernieres ligne d'un fichier: tail -5 *
Delete all of the files in this challenge directory including all subdirectories and their contents.
Hint: There are files and directories that start with a dot “.”, “rm -rf *” won't work here! ===⇒ rm -r .* *
There is a file named access.log in the current working directory. Print all lines in this file that contains the string “GET”.
grep "GET " access*
print in bash:
echo hello world date +hello\ world printf "hello world"
Expressions régulières
- n'importe quel chiffre:
\d
OR[0-9]
- on prend aucun chiffre;
\D
OR[^0-9]
- ^ debut de ligne
- $ fin de ligne
- \b debut ou fin de mot
X? X apparait une ou 0 fois
X* X apparait un nombre quelconque
X+ une ou plus
X{n} x apparait n fois^
sed 's/dark/clear/g' axx_reg.txt ⇒ remplacer tt les mot dark avec clear
sed 's/dark/clear/' axx_reg.txt ⇒ remplacer que le premier mot
sed -n '/^#/p' test.py ⇒ afficher les lignes qui commences par un #
$ sed '1 s/Python/perl/' python.txt # => remplacer la premiere python par perl (que la toute premiere)
take all lower case letters and make them upper case =⇒ cat example.txt | tr 'a-z' 'A-Z'
# on remplace tt le mot ancienne-adresse par ⇒ nouvelle-adresse dans tt les fichier .php
$ for f in *.php; do sed -i -e 's/ancienne-adresse/nouvelle-adresse/' “$f”; done
vm nedjma douera
instalation sous proxmox
recuperer le lien et le le mot de passe
acceder a proxmox en cas d'erreur :
creer la vm:
+------------------------------+ | | | | VM O ------> VM N | vM | | | |------------------------------+ | | | | | | | | NEDJMA PVE | metal | | |______________________________|
de nadjma pve on accede a vm pld avec ssh
Convertir une image docker en fichier .tar. -o
pour output
In the old VM
docker -o odoo.tar odoo:12
Copy to the new VM
$ scp odoo.tar sysadm@ip: $ scp postgres.tar sysadm@ip:
On the new VM:
$ docker load -i odoo.tar # (extraire les image et les ajouter dans docker) i pour input $ docker load -i postgres.tar
docker
buid et up au mm temps:
docker-compose up –build
docker inspect elosys | grep -i home ==⇒ pour voir on le container est up
pour coppier un truc a l'interieur du conteneur ==⇒
docker cp fichier container_id:chemin_interieur_container
docker logs
docker events
++ recuperer synchronise_data:
nro7o l ossier en question w ndiro: ../synchronise_data
++ dump_pg docker exec elosys_db pg_dumpall -U postgres > /home/meriem/backups/elosys_db.sql
++ compresser tar -cvf elosys_db.sql.bz2 elosys_db.sql
arrchiver et compresser db.sql et la mettre dans db.sql.bz2
++decompresser
tar -xvf elosys_db.sql.bz2 extrere db.sql.bz2 et le mettre dans db.sql
SSH
pour desactive l'accee avec mot de passe ssh:
on va sur etc/ssh/sshd_config
on l'ouvre avec vim ou autre : password ⇒ no
on relance sshd pour qu'il applique les modifications: restart sshd
la ou on trouve chaque hôte avec son ip et son port: .ssh/config.d/ssh_config
ansible
logiciel d'automatisation et dhorchestration des serveurs
ex: on configure notre serveur puis ils tombent en panne avec ansible on refait pas la configuration
si on a plusieurs serveur a configure de la mm chose on le fait avec ansible
fichier. yaml ⇒ ecrit en python
all - hosts: all tasks: - name: install packages become: true become_user: root dnf: state: present name: - tcsh - htop
ansible all -i playbook.yml --user=user -m "ping" ansible-playbook -i hosts.yml --user=user playbook.yml ansible-playbook -i hosts.yml --user=user --ask-become-pass playbook.yml #pour introduire le mot de passe
sudo logrotate -f -v /etc/logrotate.conf
nslookup domain
IP TABLEs
comment supprimer une ligne
1. on numeroté le nombre de ligne :::> sudo iptables -L -t nat –line-numbers
2. on supprime :::> sudo iptables -t nat -D PREROUTING 3
firewall: on peut filtrer par port/ par ip…
on l'instale : install iptables
contient la table : NAT
vm contient ip table pré routing ---> | | --> post routing source | | redirection ( destination)
dnat: ip de destination snat: ip source
la table: filter chaine: input => de la on peut bloque des @ip de site ... output => on peut aussi bloqué des ports ou des ips fowrword
target: drop =>
cron commande
45 4 * * * /home/sysadm/bin/backup_data --dbname db_name --docker db --extra-addons /home/sysadm/service.luxy/extra-addons --filestore /home/sysadm/service.luxy/filestore/filestore/db_name/ db_name => pas celle du container => docker exec -it container_name psql -U postgers -c '/l' => db_name from docker
/home/ubuntu/bin/backup_data --dbname pt_db --docker db --extra-addons /home/ubuntu/power_tools_odoo_14/extra-addons --filestore /home/ubuntu/power_tools_odoo_14/filestore/pt_db/
wifi debian pass wifi elo 777ABCDE
ubuntu@ov-521071:~/power_tools_odoo_14 network manager => wifi debian nmtui => activer cnx wifi
restore:
Steps:
1. recuperer les trois fichiers de (filestore /extra-addons/ database) du serveur .10 “scp aziz@192.168.1.10:backupos/backup .”
2. dcu (pour creer les 3 dossier (data/extra-addons filestore)
3. mkdir -p filestore/filestore/bdd_name
restore db:
bzcat $database_file | docker exec -i $db_container_name psql -U $db_user -d template1
restore filestore:
tar xfz $filestore_file -C filestore/filestore/$database_name
restore extra addons:
tar xzf $extra_addons_file -C extra-addons
XFP
L'en-tête X-Forwarded-Proto (XFP) est un en-tête standard de facto permettant d'identifier le protocole (HTTP ou HTTPS) utilisé par un client pour se connecter à votre proxy ou équilibreur de charge. Vos journaux d'accès au serveur contiennent le protocole utilisé entre le serveur et l'équilibreur de charge, mais pas le protocole utilisé entre le client et l'équilibreur de charge. Pour déterminer le protocole utilisé entre le client et l'équilibreur de charge, l'en-tête de requête X-Forwarded-Proto peut être utilisé.
bin pour backup
git clone git@igpro.ddns.net:system/bin.git
backup
ubuntu@ov-xxxxxx:~$ sudo ./backup_data \ --dbname pt_db --docker ark_group_db \ --extra-addons /home/ubuntu/power_tools_odoo_14/addons \ --filestore /home/ubuntu/power_tools_odoo_14/filestore/filestore/pt_db
docker exec -it odoo14_db psql -U postgres -d d
awk
afficher la premiere colonne: ps | awk '{print $1}
'
print colonne 1 and 6 and 7 with tab between them: cat /etc/passwd | awk -F “:” '{print $1“\t ” $6“ ” $7}
'
on va les séparer par des “-”: cat /etc/passwd | awk 'BEGIN{FS=“:”; OFS=“-”} {print $1,$6,$7}
'
afficher toute les ligne qui commance par “/”:
sudo df | awk '/^\// {print}'
on va prendre la dernière colonne depuis les lignes qui commence par “/”:
awk -F "/" '/^\// {print $NF}' /etc/shells
emacs
en cas de changement dans le ficher on recupere le fichier modifier: revert-buffer
open file: C-x C-f
press papier: “kill ring”
M-s
meta-shift
alt-shift
select all : C-x h
debuter la selection: C-espace
selctionner jusqu'au debut de ligne: C-espace C-a
selctionner jusqu'a la fin de ligne: C-espace C-e
copier une region: alt-w
couper le contenu de la region selectionner: C-w
yank c pour coller: C-y
forward word (prochain mot): M-f
forward caracter: C-f
backward caracter: C-b
backward word: M-b
pour voir tt les buffers qui sont pas sauvegarder: C-x s
list all buffer: C-x C-b
switch buffer: C-x b
keyboard quit (annuler): C-g
pour quitter emacs: C-x C-c
kill buffer: C-x k
search: C-s
undo: C-_
kill line from point to end of line: C-k
debut fichier: alt-<
fin de fichieralt→ ;
emacs windows
C-o: basculer entre les fenetre
C-x & : garder une seule
C-x é: diviser la fenetre verticale
C-x “: diviser la fenetre horizontal
redo (C-y) undo-tree (bibliotheque): espace C-_ C-_
gestion des processus
C-z : c pour faire pause
gf : c pour le restarter
jobs: affihcer les process du background (stoppé)
quand on a deux process stoppe (backgrouynd)
jobs ⇒ on recupere le nu m du process
fg numprocess
kill %numprocess : pour tuer le process
ip forwarding
on va sur : /home/admin/proxy_ssl/DOMAINES_IP_TABLES
sudo iptables -t nat -A PREROUTING -p tcp -i vmbr0 -m tcp –dport 9125 -j DNAT –to-destination 192.168.1.125:22
SSH Forwarding
ssh -N -p 2222 -L 5000:0.0.0.0:5000 sysadm@max-protect.tcp4.me
ajouter un nouveau domain name
on le crer sur amen de type 1 ou cname
dans notre cas on a crer ; dz.labomaster.com qui pointe sur labomaster.dz: #host pour avoir l'adress ip on va sur om: wproxy /nginx guid.txt: on ajoute le domaine avec l'@ ip ou il pointe (ip dokcer) on lance le script ./dmanage.dl
comment telecharger un dossier gitlab
{GITLAB_URL}/projects/{PROJECT_ID}/repository/archive.zip?sha={branch}&path={module_name}
exemple:
https://git.elosys.net/api/v4/projects/1644/repository/archive.zip?sha=14.0&path=l10n_dz_elosys
comment telecharger un fichier d'un depot gitlab
comment supprimer une instance (live)
1. supprimer la base de donner qui a le même nom que l'instance
docker exec -it postgres psql -U postgres
#postgres: DROP DATABASE nom_instance;
2. supprimer le fichier de l'instance qui contient un extra-addons .. ⇒ il se trouve dans + home/extra-addons
3. supprimer le filestore du mm nom qui se trouve dans filestore/filestore/…
4. docker stop container + docker rm container
Upload from server on terminal to googe drive
wget https://github.com/prasmussen/gdrive/releases/download/2.1.1/gdrive_2.1.1_linux_386.tar.gz tar -xvf gdrive_2.1.1_linux_386.tar.gz ./gdrive about ==> authorisé l'acce a google drive + tu recupere unh code d'autorisation ./gdrive upload /home/documents/file_name.zip
BDD Live
s'il ya un probleme avec les base de donnée base(11, 12, 13, 14, 15) des live
on va sur : live ⇒ rembin ⇒ db_setup.sh
a la fin du script on trouve cette ligne
setup_template_dbs base15 odoo:15.0
on change 15 avec la version q'on veut creer
et on lance le script : bash db_setup.sh
cron backup
sudo crontab -e
Dump database
$ docker exec -i elosys_cont pg_dump -U postgres --create --format=plain {db_name} | bzip2 > path/{db_name}{date_synch}.bz2