{{drawio>user:organigramme_elosys.png}}
~~NOTOC~~
========== 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 ''
* 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 ==
https://git.elosys.net/api/v4/projects/1644/repository/files/eloapps_account_fiscalyear%2F__init__.py?ref=14.0
====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 ====
https://medium.com/geekculture/how-to-upload-file-to-google-drive-from-linux-command-line-69668fbe4937
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