6. Linux

6.1. Réduire un pdf

votre pdf est trop gros ? Allez ! Au régime !

gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOUTPUTFILE=outfile.pdf -f infile.pdf

6.2. Utiliser openVPN

Dans /home/metivier/bin/metivier_ipgp_vpn_styx entrer dans un terminal:

sudo openvpn --config ipgp_vpn_styx.conf

6.3. Clés openSSL et génération de certificat TLS

Piqué quelque part sur la toile j’ai malheureusement oublié où… self-signed SSL certificate using the OpenSSL

complete the following steps:

  1. Write down the Common Name (CN) for your SSL Certificate. The CN is the fully qualified name for the system that uses the certificate. For static DNS, use the hostname or IP address set in your Gateway Cluster (for example. 192.16.183.131 or dp1.acme.com).

  2. Run the following OpenSSL command to generate your private key and public certificate. Answer the questions and enter the Common Name when prompted.

openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
  1. Review the created certificate:

openssl x509 -text -noout -in certificate.pem

If you need to merge key and certificate:

  1. Combine your key and certificate in a PKCS#12 (P12) bundle:

openssl pkcs12 -inkey key.pem -in certificate.pem -export -out certificate.p12
  1. Validate your P2 file.

openssl pkcs12 -in certificate.p12 -noout -info

6.4. Markdown vers html

pandoc infile.md -o outfile.html

De façon générale utiliser pandoc pour la conversion de documents

6.5. Extraire des pages d’un pdf

pdftk full-pdf.pdf cat 12-15 output outfile_p12-15.pdf

6.6. Forward et réponse automatique d’absence

Utiliser .procmail sur idefix

6.7. Serveur de temps à l’IPG:

il faut utiliser les serveurs de temps de l’IPG quand on est à l’intérieur de la maison :)

sudo vi /etc/systemd/timesyncd.conf
# dans le fichier ajouter la ligne
[Time]
NTP=ntp1.ipgp.fr, ntp2.ipgp.fr, ntp3.ipgp.fr

6.8. Faire un pdf de ce howto :))

dans le dossier racine sphinx (ici Howto donc)

make latexpdf

6.9. Tranformer un film .MOV en .webm ou .mp4

Utiliser la librairie ffmpeg. Dans sa forme le plus simple cela ressemble à

ffmpeg -i fname.MOV fname.webm

6.10. Nextcloud

..note:

Il ne suffit pas de mettre à jour le serveur, il faut aussi mettre à jour le client et
apt-get ne le fait pas !

6.11. Monter son iPhone:

Utile pour accéder au DCIM de l’appareil photo et rapatrier rapidement les fichiers. Utiliser la librairie ifuse. Créer un directory dans son répertoire par exemple

mkdir ~/Machines/iphone

puis monter l’iphone après l’avoir branché

ifuse  ~/Machine/iphone

6.12. Fabriquer son propre log apache

base de données mariadb avec deux tables, une table qui récupère les données des logs et une dans laquelle je stocke les données traitées car la table log est très très gourmande dès que l’on a un serveur qui fonctionne en production avec plusieurs milliers de connexions chaque jour ce qui est le cas de morpho. j’ai donc un script qui s’exécute tous les soirs à minuit moins une qui récupère les données du log et peuple la table tblLog

import numpy as np
from sqlalchemy import create_engine

engine = create_engine("mysql://user:pass@localhost/apachelog")
conn = engine.connect()

f = open('/var/log/apache2/access.log','r')
lines  = f.readlines()
f.close()

site_pages = {"nextcloud":0,"safe-m":0,"cn18":0,"metivier":0,"safem_verse":0,"boaform":0,"saladyn":0,"ASTER":0}
site_conns = {"nextcloud":[],"safe-m":[],"cn18":[],"metivier":[],"safem_verse":[],"boaform":[],"saladyn":[],"ASTER":[]}
Mo_dic={"Jan":1,"Feb":2,"Mar":3,"Apr":4,"May":5,"Jun":6,"Jul":7,"Aug":8,"Sep":9,"Oct":10,"Nov":11,"Dec":12}
for line in lines:
      data = line.strip('[').strip(']').split(' ')
      ip = data[0]
      con = data[1]
      user = data[2]
      when = data[3][1:]
      when = when.split('/')
      D = when[0]
      Mo = Mo_dic[when[1]]
      (Y,H,Mi,S) = when[2].split(":")

      what = data[6]
      if what[0]=='/':
              what = what.split('/')[1]

              if what in site_pages.keys():
                      site_pages[what] += 1
                      sql = "insert into tblLog values (NULL, %s,%s,%s,%s,%s,%s,%s,%s,%s)"
                      conn.execute(sql,(Y,Mo,D,H,Mi,S,ip,user,what))

                      if ip not in site_conns[what]:
                              site_conns[what].append(ip)

conn.close()

Puis, une fois de temps en temps, je fais le ménage et je transfère les données de la table tblLog vers la table logsum avec une ligne de SQL

insert into logsum select  Y, Mo, D, site, ip, count(*) from tblLog group by Y, Mo, D, site, ip;

6.13. Cloner une carte SD Rasberry

6.13.1. Depuis la carte vers une img

sudo dd bs=32M if=/dev/sda of=pi-DDMMYY.img

6.13.2. Depuis une img

c’est presque la même commande mais inversée. ici device sera sda ou sdb probablement.

sudo dd bs=32M if=pi-DDMMYY.img of =/dev/device

6.14. Problème de mise à jour du noyau

Lors d’une mise à jour j’ai parfois le message suivant

gzip: stdout: No space left on device E: mkinitramfs failure cpio 141 gzip 1

et la mise génération d’une image du noyau n’aboutit pas. Après vérification (df) effectivement la partition boot semble bien pleine. Pour l’instant je corrige ce problème en faisant

sudo apt-get autoremove --purge

ce qui permet de faire le vide dans les noyaux anciens et donc libérer l’espace précieux dont a besoin apt pour mettre à jour le noyau.

Pour une explication complête https://askubuntu.com/questions/929305/gzip-stdout-no-space-left-on-device-e-mkinitramfs-failure-cpio-141-gzip-1

Dernière modification le 2024-03-12