{{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