Utilisateur:Dsant/Linux

From Wikipedia, the free encyclopedia

Page Perso Linux

Avant, je gardais mes notes dans un cahier papier...

OpenSUSE sur VPS

Septembre 2021.

Mon hébergeur ne propose pas OpenSUSE sur ses VPS (pas assez connu en France probablement...). Qu'a cela ne tienne !

  • Installer une CentOS8 (ou autre).
  • Décompacter une iso de OpenSUSE, et recopier le contenu du dossier /boot/x86_64/loader/ en /boot/suse/
  • Copier le fichier xml de autoyast en /root
  • Copier le fichier de la clé publique en /root
  • Renommer (label) l’ancienne partition en "centos"
  • Dans /etc/grub.d/40_custom : linux /boot/suse/linux install=http://195.220.108.108/linux/opensuse/distribution/leap/15.2/repo/oss autoyast=device://disk/by-label/centos/root/suse.xml


  • Contrairement à ce qui est écrit, les clés ssh ne sont pas copiées automatiquement ? (Probablement une incompatibilité Centos-Suse). Marche par scripts :

Raid

Janvier 2020, Novembre 2017, Juillet 2016.

Raid5 evolutif

En cours.

Nécessite 9 slots.

Unité : relative au plus petit disque=1.

Raid évolutif
Raid evolutif

Mes besoins de stockage doublant tout les 1½ ans, cela correspond à l'achat d'un disque par grappe tout les 6 mois.

Création

  • Créer les partitions en type "Linux raid auto" "fd" ? ?

mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

Tests

  • mdadm --detail /dev/mdX
  • smartctl -a /dev/sdX : informations
  • smartctl -t short /dev/sdX : lance test court (20 min en fait)
  • smartctl -l selftest /dev/sdX : voir resultat

Ajout

umount <partition>
mdadm --manage /dev/mdX --add /dev/sdX1
mdadm --grow /dev/mdX --raid-devices=N
<Attendre>
e2fsck -f /dev/mdX
resize2fs /dev/mdX
mount <partition>

Compter environ 4h/To de reshape.

Réduire le nombre de disques

en cours

umount /mnt/folder
resize2fs -M /dev/mdX ?
mdadm --manage /dev/mdX --fail /dev/loopX
mdadm --manage /dev/mdX --remove /dev/loopX
e2fsck -f /dev/mdX : verification 

Changement de disque

En cours

mdadm --fail /dev/md0 /dev/sdaX
mdadm --manage /dev/md0 --remove /dev/sdaX
<éteindre le PC et changer le disque>
mdadm --stop /dev/md0
mdadm --assemble  --scan
mdadm --manage /dev/md0 --add /dev/sdbY

Customisation

Programmes par default

en cours juillet 2019

Editer /home/user/.local/share/applications/XXX.desktop , ligne InitialPreference=99

update-desktop-database pour valider

types de fichiers :
mp4 mkv avi mpg flv webm

images

A creer : webm et flv, cpp, h, ui

scripts

ssh :

port
sshd rootaccess=no
ssh VisualHostKey=yes
PasswordAuthentication=no

commande ll (LL)
enlever proxy dans yum si proxy

KDE3 for ever

En cours avril 2023, septembre 2022, juillet 2019, novembre 2014, aout 2012.

kreadconfig --file kdesktoprc --group ScreenSaver --key Saver

kwriteconfig --file kdesktoprc --group ScreenSaver --key Saver pacman.desktop

Methode : configurer à la main un poste la premiere fois, puis noter les groupes/clés qui ont été insérées dans le fichier /home/user/.kde/share/config/XXX. Pour trouver les arguments, mettre une valeur arbitraire puis la rechercher dans contenu avec konqueror.

Ca marche !


sed -i 's/Synchronize=false/Synchronize=true/g' /home/$USER/.kde/share/config/klipperrc #copier coller synchronisé
sed -i 's/Lock=true/Lock=false/g' /home/$USER/.kde/share/config/kdesktoprc #Pas lock economiseur d'ecran
sed -i 's/Backup Config Flags=1/Backup Config Flags=0/g' /home/$USER/.kde/share/config/kwriterc #Pas fichier de backup kwrite
  • menu K
  • konqueror texte
  • racourcis clavier

Avec ChatGPT ! Attention, dit (souvent) des betises. Confond KDE3/4/5 :

Configuration

kwriteconfig --file kickerrc --group General --key LegacyKMenu true
dcop kicker kicker restart # relance kicker

kwriteconfig --file klipperrc --group General --key Synchronize --type bool true
dcop klipper klipper quitProcess # relancer klipper
klipper

dcop kwin KWinInterface reconfigure # relance look fenetres
  • Configuration fixe
  • ajouter un bureau

KDE4

Task switcher

Firefox

page demarrage
lieu de sauvegarde
don't remember passwords
Auto Tab Discard ?

about:config

dom.ipc.processCount = 200
browser.urlbar.maxRichResults = false

Chromium

Extentions :

  • AdblockPlus
  • CrossFire Plus ou CrossFire
  • Shortkeys
  • Don't Close Window With Last Tab

Opera customisation

installation manuelle

barre d'adresse

Dans keyboard shortcuts, dans Application, créer : F8 ctrl | Set alignment, "document toolbar", 6 | Set alignment, "document toolbar", 0

enlever moteur de recherche de Speed Dial

Preferences, Search, Edit, Details, and uncheck "Use as speed dial search engine."

Vivaldi

Decembre 2024

Installation

  • unpack
  • ln -s /mnt/at./install/vivaldi/opt/vivaldi/ /opt/vivaldi

Appearance

  • Open settings in a tab
  • Menu, horizontal
  • zoom 150%

Tabs

  • décocher "keep window open when last tab is closed"

Enlever "startpage.com" x2

Keyboard

  • Enlever "Help F1"
  • Dans "Page", "Toggle Reader View" (3eme ligne) F1

Webpages

  • Reader : font size 200%
  • Column Width : 100%

Virer les fenetres cookies RGPD

  • Aller en Settings > Privacy > Tracker and Ad Blocking;
  • Cocher "Block Trackers and Ads"
  • Cliquer sur "Manage Sources"
  • Dans "Ad Blocking Sources", cocher “Remove cookie warnings (Easylist Cookie List)” et “Remove cookie warnings (I don’t care about cookies)”.

recherche rapide

dans vivaldi://settings/search/ (search engines) :

Extensions

  • Toggle Fullscreen ? Déprécié.

racourci

/opt/vivaldi/vivaldi-bin --disable-features=AllowQt --start-fullscreen --new-window about:blank

Kwrite

barre d'outils
Pas sauvegarde automatique

Dolphin

Startup

Page d’accueil
Make location editable
show full path x2

puis

Use common properties ? plus ?
icones
couleur
police (general) taille 14
double clic

konsole sous KDE5

menu
barre bas
taille police
couleur police #1504fa
couleur fond #fdfda4

pour installer KDE3 ou LXQt

Contrairement à ce qui est écrit dans la doc, il re-faut le dépôt spécialisé KDE:/KDE3
zypper in -t pattern KDE-DEFAULT (ben oui, KDE3 est caché là ! ! )
ou bien zypper in kdebase3-session kdebase3-kdm
zypper in -t pattern lxqt

/etc/sysconfig/windowmanager :
DEFAULT_WM="startkde3" / "openbox"

Displaymanager :
update-alternatives --config default-displaymanager

Icones Crystal (kde3 style)

sous kde4

  • chercher "Crystalsvg for kde 4"
  • gtk-update-icon-cache -f -t ~/.icons/<dossier> ?
  • Couleurs : systemsettings, "colors used in applications", "Colors", "Colors", "View", "Alternate background" = 235;248;255 + Sauver le Scheme (1ere onglet) ? + relancer Dolphin
  • Task switcher : systemsettings, Window Behavior,
  • Chemin Konsole : dans konsole, manage profile, edit profile, tabs, "%D %u@%h" et dans Environment : <PS1=\u@\h:\`$(pwd)\` $ >

sous LxQT

  • Passer en Window Manager : lxqt-config, sessons settings : kwin_x11
  • CrystalRemix : https://store.kde.org/p/1226130/
  • Couleurs : systemsettings5, Colors, Edit Scheme, Colors, Color set : View, Alternate background = 235;248;255 + Sauver le Scheme ? + relancer Dolphin
  • Task switcher : compact
  • qt5ct et export QT_QPA_PLATFORMTHEME="qt5ct" ?

Dolphin5

tar xf crystalSVG.tar -C /usr/share/icons/
qt5ct : choisir crystalsvg (et pas Crystal SVG ou Crystal SUSE)
QT_QPA_PLATFORMTHEME=qt5ct dolphin &
  • Couleurs lignes bleu : qt5ct, color scheme copy edit. Alternate background inactive.
  • Couleurs teminal : passer par konsole kde plasma 5, dans /usr/bin/. Settings. Copier le profil et choisir modele.

i3

alttab -theme crystalSVG -i 128x128 -s 1 -bg white -fg black -vertical


Wayland

~/.config/weston.ini :

[core]
backend=drm-backend.so

[shell]
client=weston-terminal

debranding de distribution

En cours juin 2018.

Personalisation du boot de CentOS

Avril 2018.

Isolinux

  • Pour les accents, le fichier isolinux.cfg doit etre sauvé en IBM850
  • Image en taille 1024x768 format png
  • Si format ISO9660 (CDROM), les noms de fichiers sont limités à 8 caracteres+3. Donc mkisofs tronque, mais ne dit rien.

Grub 2

vi /etc/default/grub :

GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_BACKGROUND=/image.jpg
GRUB_GFXMODE=1024x768

grub2-mkconfig -o /boot/grub2/grub.cfg

Plymouth

plymouth-set-default-theme --list
plymouth-set-default-theme -R charge
dracut -f

NE MARCHE PAS avec Virtualbox.

SUSE

En cours juin 2018.

kiwi

Voir dossier /usr/share/kiwi/image/

prepare+create=build

kiwi --prepare <syntaxhighlight lang="text"> --root <dest1>

kiwi --create <dest1> --destdir <dest2>

changer ? :
<syntaxhighlight path='obs://server:/http/openSUSE_Leap_42.3'/>
<syntaxhighlight path='https://download.opensuse.org/distribution/leap/42.3/repo/oss/'/>

    <repository>
        <syntaxhighlight path='http://rpmfind.net/linux/opensuse/distribution/leap/42.3/repo/oss/'/>
    </repository>

commenter : <package name="openSUSE-release-dvd"/> ?

config.xml

Doc en /usr/share/doc/packages/kiwi/pdf/kiwi.pdf

Yast2

https://en.opensuse.org/SDB:YaST_tricks#Branding_the_installation

https://en.opensuse.org/Archive:Making_an_openSUSE_based_distribution

https://en.opensuse.org/openSUSE:YaST_quick_tutorial


Machines virtuelles

Septembre 2021, Juin 2021, Janvier 2018, octobre 2012

VirtualBox

usermod -a -G vboxusers user

Settings, Input : décocher "Auto capture keyboard", contre ALT-TAB dans guest.

Création par VBoxManage

VBoxManage list vms

VBoxManage showvminfo <vm>

VBoxManage controlvm <vm> acpipowerbutton / poweroff

VBoxManage guestcontrol <machine> stat : etat

VBoxManage -nologo startvm <machine> --type headless

VBoxManage convertdd fichier.raw disque.vdi --format VDI

VBoxManage convertdd fichier.raw disque.vdi --format VDI
VBoxManage modifyhd disque.vdi --resize 50000
VBoxManage controlvm <machine> keyboardputstring <chaine> : envoi une chaine de caractere
sleep 2 ; VBoxManage controlvm <machine> keyboardputfile <file> : envoi contenu du fichier. sleep sinon bug ! !
poste="test"
chemin="chemin/" #attention, tilde ~ n'est pas reconnu
VBoxManage hostonlyif create # Créer Network Host only. Une seule fois par host !

VBoxManage createvm --name $poste --ostype OpenSUSE_64 --register

VBoxManage modifyvm $poste --memory 1024 --acpi on --boot1 dvd --audio none

#VBoxManage modifyvm $poste --nic1 nat
VBoxManage modifyvm $poste --nic2 hostonly

VBoxManage createhd --filename $chemin/vm/$poste/$poste.vdi --size 10 (en Mo)

VBoxManage storagectl $poste --name "IDE Controller" --add ide --controller PIIX4

VBoxManage storageattach $poste --storagectl "IDE" --port 0 --device 0 --type hdd --medium $chemin/vm/$poste/$poste.vdi

VBoxManage storageattach $poste --storagectl "IDE" --port 0 --device 0 --type dvddrive --medium $chemin/iso/file.iso

VBoxManage modifyvm $poste --vrde on

VBoxHeadless --startvm $poste

ostypes : VBoxManage list ostypes

OpenSUSE_64
Debian_64
RedHat_64
ArchLinux_64
Linux_64

rdesktop -f -g 800x600 ip:port
(-f fullscreen , Ctrl-Alt-Enter pour sortir)

Extensions

Télécharger en http://download.virtualbox.org/virtualbox/ :
Oracle_VM_VirtualBox_Extension_Pack.x.x

et VBoxGuestAdditions_x.x.iso :
VBoxManage guestcontrol reactos updateadditions --source /home/$(echo $USER)/atab/virtual/iso/VBoxGuestAdditions_XXX.iso --verbose ? ?
ou monter l'iso dans le lecteur de CD.

cp /home/<user>/atab/virtual/iso/VBoxGuestAdditions_6.0.10.iso /usr/share/virtualbox
Monter l'iso VBoxGuestAdditions_5.0.YY.iso sous Windows (autorun)
et (pour le mode RDP):
VBoxManage extpack install Oracle_VM_VirtualBox_Extension... (en root)


VBoxManage modifyvm <ma_vm> --vrde on : active le mode RDP

Installation en virtuel vers reel

En cours juin 2021.

vboxmanage clonehd image.vdi disque.img --output=raw ?

RemoteBox

En cours.


/etc/default/virtualbox :

VBOXWEB_USER="moi"
VBOXWEB_TIMEOUT=0
VBOXWEB_LOGFILE="/var/log/vboxwebservice.log"
VBOXWEB_HOST="IP"

touch /var/log/vboxwebservice.log

chown moi:vboxusers /var/log/vboxwebservice.log

systemctl start vboxweb-service

A suivre...

Limite de debit

VBoxManage list vms
VBoxManage bandwidthctl <VM> add Limite --type network --limit 100k # En mo/s
VBoxManage bandwidthctl <VM> set Limite --limit 100k
VBoxManage bandwidthctl <VM> remove Limite

Bug

Si au moment de changer l'IP du reseau interne : access denied :
créer /etc/vbox/networks.conf :

* 10.0.0.0/8 192.168.0.0/16
* 2001::/64

Android-x86 sous virtualbox

  • 2 Go de ram
  • 2 CPUs
  • paravirtualisation KVM
  • VBoxSVGA
  • reseau PCnet-PCI II (Am79C970A)
  • laucher taskbar
  • clavier a mettre en fr en graphique
  • l'economiseur ecran fait crasher : installer l'application "gardez l'ecran allumé" de davide inzaghi
  • clavier querty en mode texte : pas le choix. utiliser clavier virtuel VirtualBox
  • taille ecran :
lancer android en Debug mode
mount -o remount,rw /mnt
editer /mnt/grub/menu.lst
Ajouter : UVESA_MODE=1280x800

Qemu

Mai 2015. Ca marche.

qemu-img create -f qcow2 image.img 20G
créer un dossier de travail <arbre>
cp /usr/lib/grub/stage2_eltorito <arbre>/boot/grub/
copier les fichiers linux et initrd en <arbre>/boot

<arbre>/boot/grub/menu.lst :

timeout 0
title installsuse
    root (cd)
    kernel /boot/linux showopts
    initrd /boot/initrd

mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o newcdrom.iso <arbre>

qemu-system-x86_64 -m 256 -drive file=disque.img,format=qcow2 -drive file=newcdrom.iso,format=raw,media=cdrom -boot d

Notes :

  • Si system 64 bits, lancer qemu-system-x86_64 sinon problemes ?

Qemu Montage de disques

Ne pas faire à chaud. A faire en root :

modprobe nbd max_part=8
qemu-nbd -c /dev/nbd0 <fichier image>
faire une partition avec fdisk. nbd0p1 est crée. La formater ? ?
mount /dev/nbd0p1 /mnt/qemu

Qemu réseau

En cours


coté host :

tunctl -u <utilisateur> -t tap0
Ajouter au lancement de qemu :  -net nic -net tap,ifname=tap0,script=no
ifconfig tap0 192.168.99.1 netmask 255.255.255.0 up

Coté guest :

ifconfig interface_machine_virtuelle 192.168.0.10 netmask 255.255.255.0 up

Si NAT :

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -I FORWARD 1 -i tap0 -j ACCEPT
iptables -I FORWARD 1 -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT

KVM

Septembre 2021

  • zypper in -t pattern kvm_server kvm_tools
  • lancer service libvirtd
  • virt-manager -c 'qemu+ssh://user@ip:port/system?keyfile=/cle.key' en non root
  • virt-viewer -c qemu:///system ? : VNC like
  • Si erreur sur usb : supprimer l'usb de la VM
nom=nom
chemin=/virtual
version=15.2
virt-install --virt-type=kvm --name=$nom --os-variant=opensuse$version --disk size=10,path=$chemin/vm/$nom.img --vcpu=1 --ram=2048 --location=$chemin/iso/openSUSE-Leap-$version-NET-x86_64.iso --network bridge:dsnet,model=virtio --graphics=none --console pty,target_type=serial --extra-args="console=ttyS0,115200n8 serial hostname=<nom> hostip=192.168.1. netmask=255.255.255.0 gateway=192.168.1.1 proxy=http://192.168.1.1:2476 install=http://195.220.108.108/linux/opensuse/distribution/leap/$version/repo/oss autoyast=http://192.168.1.1/suse.xml"

Pour sortir : ctrl + Alt_gr + ]

Si utilisateur non root

  • se mettre dans les groupes libvirt et kvm. Sinon "Unable to connect to libvirt qemu:///system" ou "unsupported configuration: CPU mode 'custom' for x86_64"
#Sinon l’utilisateur est isolé avec son environnement
cp /etc/libvirt/libvirt.conf /home/$USER/.config/libvirt/
vi /home/$USER/.config/libvirt/libvirt.conf # décommenter uri_default = "qemu:///system"

virsh

list --all
start
reboot
shutdown
console : se connecter
undefine : supprimer proprement
destroy : supprimer façon brutale

Réseau

virsh net-list --all
virsh net-info <reseau>

#Si rien, creation en root :
virsh net-edit <reseau>
virsh net-define /usr/share/libvirt/networks/default.xml
virsh net-autostart <reseau>
virsh net-start <reseau>
virsh net-undefine <reseau>
virsh net-destroy <reseau>

/usr/share/libvirt/networks/dsnet.xml :

<network>
  <name>dsnet</name>
  <bridge name='dsnet' stp='on' delay='0'/>
  <ip address="192.168.1.1" netmask="255.255.255.0">
  </ip>
</network>

Port forward

firewall-cmd --permanent --add-forward-port=port=<port>:proto=udp:toport=<port>:toaddr=<IP>
firewall-cmd --list-forward-ports
firewall-cmd --remove-forward-port=...
firewall-cmd --runtime-to-permanent ?

Duplication

Penser à changer :

  • nom
  • IP
  • mots de passe
  • clé ssh
  • clé VPN

Xen

Lu dans la doc d'Arch-Linux : "KVM is similar to Xen in purpose but much simpler to get running".

LXC linux containers

Je comprends pas tout. Il s'affiche :

Message from package liblxc1:

Due to your /etc/permissions configuration (which might be caused by an
outdated permissions package), the lxc-user-nic helper binary has been
installed with a missing setuid bit. This setuid helper is required in order
for LXC unprivileged containers to operate, and has already been reviewed by
the SUSE security team and added to the Factory permissions setuid
whitelist[1].

No action has been taken to fix this configuration problem (in case this was
intentional, and to avoid breaking openSUSE packaging guidelines), so your
administrator will have to fix this manually.

In order to fix this, add the following line to /etc/permissions.local (this is
necessary to avoid losing the setuid bit during package updates or causing
audit warnings):

    /usr/lib/lxc/lxc-user-nic  root:kvm  04750

and then add the setuid bit to the helper:

    chmod u+s /usr/lib/lxc/lxc-user-nic

... or you can re-install liblxc1.

Source : /var/adm/update-messages/liblxc1-3.1.0-lp150.2.13.1-missing_setuid.txt


De plus, je lit sur la doc officielle SUSE : "Security depends on the host system. LXC is not secure. If you need a secure system, use KVM."

UML User Mode Linux

cryptage

Avril 2024, Aout 2021, decembre 2017

par GPG

Désactiver gpg-agent graphique par :

echo "pinentry-program /usr/bin/pinentry-tty" >> /root/.gnupg/gpg-agent.conf
gpgconf --kill gpg-agent
  • gpg -c <file>

décryptage :

  • gpg <file.gpg>

Client sous windows : http://www.gpg4win.org

par OpenSSL

openssl aes-256-cbc -pbkdf2 -salt -in in.txt > out.dat

(umask u+rw,g=,o=; openssl xxx ou tar xxx)

openssl aes-256-cbc -d -pbkdf2 -in out.dat > in2.txt #ajouter -md md5 si CentOS (vieille version)

openssl aes-256-cbc -salt -in in.txt -out out.dat -pass file:<fichier mot de passe>

Note : ajouter -md sha256 si vielle version

Clé privée :
openssl genrsa -out private.key 2048

clé publique à partir de la clé précédente :
openssl rsa -in private.key -outform PEM -pubout -out public.key

openssl rand -hex/-base64 <taille> | tr -d '\n' : creation chaine random

openssl passwd -6 -salt <sel> | tr -d '\n' | xsel -i : crée le hash d'un mot de passe.

Par openssh

ssh-keygen -f Cle.key -t ssh-ed25519 -C "cle_$(date +%C%y%m%d)" : creation
ssh-keygen -lv -f cle.pub : voir random art de la clé (publique ou privée pareil)
cat *.key.pub | xsel -i : pour interface OVH

Attention, chez OVH sur les VPS il faut 15 minutes avant que les clés ne soient misent en place, sinon "Permission denied".

Longueur de clés

Centos8 :

ssh-ed25519 : 256 (recommandé)

ecdsa-sha2-nistp256 : 256

rsa-sha2-512,rsa-sha2-256 : 3072

Pseudo partition

dd if=/dev/zero of=<file> bs=1K count=4K

Attention, 4Mo au moins avec luks et ext4 sinon trop petit
Pour petit volumes, utiliser ReiserFS ?

plus besoin de losetup. donner le fichier directement

losetup -f : savoir prochain /dev/loop disponible
losetup -P /dev/loopX ex1.dat : option -P force re-chargement
losetup -d /dev/loopX : detacher
partprobe : reload des partitions dans le kernel
Puis paragraphe suivant.

par luks cryptsetup partition

cryptsetup luksFormat fichier.ssl

cryptsetup luksOpen fichier.ssl cry

mkfs.ext4 /dev/mapper/cry

mount /dev/mapper/cry /mnt/cry

cryptsetup luksChangeKey /dev/loopX : changer le mot de passe

cryptage distant par NBD (network block device)

Décembre 2017.

2 bugs sur Suse (à mon avis) :

  • modprobe nbd pas automatique
  • Pas d’utilisateur et groupe nbd par defaut. Les créer à la main.

Serveur :
/etc/nbd-server/config :

[generic]
port=<port>
listenaddr=<IP>
user=nbd
group=nbd
allowlist=true

[partage]
exportname=/tmp/fichier.dat

Client :

nbd-client -name partage <IP> <port> /dev/nbdX
nbd-client -d /dev/nbdX : détache

Puis utiliser cryptsetup comme d'habitude.

Tunnels

OpenVPN

easyrsa clés publiques clés privées

en cours avril 2024

installer easy-rsa
cp /etc/easy-rsa/vars.example /chemin/vars
changer les variables EASYRSA_REQ_
easyrsa init-pki
easyrsa build-ca
easyrsa gen-dh #long
easyrsa --days=578 build-server-full <nom_serveur>
easyrsa --days=578 build-client-full <nom_client>
  • ca.crt en : pki/ # Autorité de Certification
  • dh.pem en : pki/ # Diffie-Hellman
  • clés publiques, certificats et autre en : pki/issued/
  • clés privées en : pki/private/

fichier .conf

remote <IP> #client uniquement
#ifconfig <IP> <IP> #serveur uniquement
#push "route x.x.x.0 255.255.255.0" #serveur uniquement
server 172.16.85.0 255.255.255.0
port 1234

client
tls-server
ca /etc/openvpn/pki/ca.crt
dh /etc/openvpn/pki/dh.pem
cert /etc/openvpn/pki/issued/file.crt
key /etc/openvpn/pki/private/file.key

dev tun
dev-type tun
cipher AES-256-CBC
#comp-lzo #"Compression has been used in the past to break encryption"
keepalive 10 60
#ping-timer-rem
#persist-tun
#persist-key
proto udp
float
#tun-mtu 1350

Clés partagées

Avril 2024 : Shared key mode has been deprecated by OpenVPN. Shared key mode will be removed from future versions of OpenVPN.

openvpn --genkey secret .key
openvpn --show-tls : protocole (PSK, RSA...)
openvpn --show-ciphers : cipher (BF, Camellia, AES...)

Si la destination est un reseau entier

Ajouter sur le fichier de conf coté client :

route 192.168.reseau_destination.0 255.255.255.0

Et coté serveur :

script-security 2
route-up /chemin/openvpn_bridge.sh

Script openvpn_bridge.sh :

#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
/usr/sbin/iptables -t nat -A POSTROUTING -s 172.16.XX.0/24 -o ethXX -j MASQUERADE

Installation sur poste client

  • installer le tunnel. "En non-enabled".
  • /usr/bin/tunnel.sh :
#!/bin/bash
service sshd start
systemctl start openvpn@<monvpn>.service
  • Ajouter sudo par yast2, ou "utilisateur ALL = (root) NOPASSWD:/usr/bin/tunnel.sh"
  • racourci KDE3 avec : sudo /usr/bin/tunnel.sh
  • Si sudo vers un autre utilisateur que root, ne pas oublier l'option "-u user" de sudo.

Si Windows

En cours

  • fichiers de conf en .ovpn
  • Double quotes dans chemins (!)
  • Win ne sait pas decompacter dans dossier systeme directement
  • Si auto, mettre fichiers de conf dans OpenVPN\config-auto
  • attention, le chemin des clé est donc aussi changé

wireguard

mars aout 2025

wg-quick up <service> ou wg-quick up <fichier.conf>
wg-quick down <service>
wg show : infos

systemctl enable wg-quick@<service>
systemctl start wg-quick@<service>

par SSH

avril 2013

coté distant :
ssh -p 1975 -R 1532:127.0.0.1:22 support@ip_support

coté local :
ssh -p 1532 user@127.0.0.1

Automatisation

sshd -D -f <fichier_config> -p <port>

Controle des fenetres distantes

Decembre 2017, septembre 2019

xdotool windowminimize $(xdotool getactivewindow) : minimise la fenetre active

xdotool windowsize $(xdotool getactivewindow) 100% 100% : maximise

xdotool search --onlyvisible --name "KCalc" : trouver id fenetre

wmctrl -l : voir liste des fenetres

wmctrl -a "kcalc" : amene la calculatrice au premier plan

wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz : maximise la fenetre active (":ACTIVE:" très utile en scripts)

DISPLAY=:1 wmctrl -c momdocument.odt : ferme propremement document distant (doit etre préalablement sauvé, et se connecter avec ssh -X)

kstart

Libreoffice

bug (enfin, ça se discute) : fontes URW ne sont plus disponibles dans LO (uniquement) pour des raisons d’obsolescence. Remplacées par fontes Tex-Gyre.

création fichier ODT en script

Mars 2018

cd <dossier>
rm ../out.odt
zip -0 -X ../out.odt mimetype
zip -r ../out.odt * -x mimetype

Supression doublons

Juillet 2019

  • Sélectionner la colonne
  • Data/Filter/Standard filter
  • Field name = none
  • options :
    • No duplication
    • Copy result to

Calendrier partagé Radicale

janvier 2025. Mai 2024. Octobre 2019. Février 2018. Janvier 2014.

Sur Opensuse 15.6, radicale version 3.1.8

Pièges :

  • chown -R radicale.radicale /var/log/radicale : plus la peine ?

installation

logiciel serveur Radicale http://radicale.org/

python3 -m pip install --upgrade radicale
htpasswd -B /etc/radicale/users <user> # -B hachage ; -c creer écraser
useradd --system --user-group --home-dir / --shell /sbin/nologin radicale
chown -R radicale:radicale /chemin_stockage
chmod -R o= /chemin_stockage

Vacances scolaires en : https://www.data.gouv.fr/fr/datasets/le-calendrier-scolaire/

/etc/radicale/config :

[auth]
type = htpasswd
htpasswd_filename = /etc/radicale/users
htpasswd_encryption = bcrypt
delay = 1

[server]
hosts = <IP>:<port> # attention, IP coté serveur, pas client
max_connections = 20
# 1Go
max_content_length = 1000000000
# 30 seconds
timeout = 30

[storage]
filesystem_folder = /chemin/radicale/
[rights]
type=owner_only

/etc/systemd/system/radicale.service :

[Unit]
Description=A simple CalDAV (calendar) and CardDAV (contact) server
After=network.target
Requires=network.target

[Service]
ExecStart=/usr/bin/env python3 -m radicale
Restart=on-failure
User=radicale
# Deny other users access to the calendar data
UMask=0027
# Optional security settings
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
PrivateDevices=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
NoNewPrivileges=true
#ReadWritePaths=/var/lib/radicale/ /var/cache/radicale/
ReadWritePaths=/chemin/radicale

[Install]
WantedBy=multi-user.target

Clients

  • Evolution/Thunderbird/Lightning :
    • type CalDav, avec authentification, user radicale
    • Sur http://<IP>:<port>
  • KOrganizer : pas réussit sous KDE3

Requete sur Openstreetmap

Septembre 2019
On remarquera que l'ordre des "coordonnés géographiques" de Lyon n'est pas le même sur les 2 outils. Super naze...

Par tools.wmflabs.org

http://tools.wmflabs.org/query2map/featurelist.php?key=leisure&value=playground&types=points-areas-infos&BBOX=4.7504157,45.8332862,4.9837133,45.6867243

Par overpass-turbo.eu

node
  [leisure=playground]
  (45.6867243,4.7504157,45.8332862,4.9837133);
out;


publipostage

En ligne de commande avec Abiword

novembre 2017, mars 2012.

  • Créer le fichier csv, avec 1ere ligne noms de colonnes.
  • Créer le document maître, puis menu Insert/Mail merge Field, cliquer sur "Open File".
  • Re-cliquer sur Insert/Mail merge Field, inserer les champs.
  • Fermer Abiword
  • abiword -m <data.csv> --to=pdf --to=<out.pdf> <maitre.abw>

Avec Libreoffice

  • Le fichier source doit etre de type ods et 1ere ligne a les titres
  • File / Wizard / Address data source
  • attention : Other data source
  • type : spreadsheet
  • Ne pas cliquer sur "Field Assignement" = noms de colonnes pre-choisis !
  • ctrl-shift-F4 / drag and drop
  • Ne pas rentrer à la mains les champs par < >
  • Imprimer pour lancer le publipostage

Envoi de mails en script

Octobre 2017, aout 2014.

Pas besoin de configurer Postfix si envoi uniquement.

Par mutt

user=""
domaine=""
surnom=""
sujet=""

echo "Entrez le mot de passe"
read -s pass
echo "texte" | mutt -e "set from=$user@$domaine($surnom)" -e "set smtp_pass=\"$pass\"" -e "set smtp_url=\"smtps://smtp@$domaine@ssl0.ovh.net:465\"" -s "$sujet" -a /home/fichier.txt -- "$user@$domaine"
pass="-"

Par mailx

expediteur=""
destinataire=""
domaine=""
surnom=""
sujet=""

echo "Entrez le mot de passe"
read -s pass

cat monmail_01.txt | mailx -a 'Content-Type: text/html' -S smtp="smtps://ssl0.ovh.net:465" -S smtp-auth=login -S smtp-auth-user=smtp@votreservice.com -S smtp-auth-password=$pass -S from="$surnom <$expediteur@$domaine>" -s $sujet $destinataire@$domaine


Par PHP

  • Installer les packages pear-mail ou php-pear

Client Google-Drive-ocamlfuse

En cours septembre 2017

  • Ajouter le dépot ocaml
  • zypper in ocaml opam git hg make m4 patch

Non root:

  • opam init
  • opam update
  • opam upgrade
  • eval `opam env`
  • opam install depext
  • opam depext google-drive-ocamlfuse

HTML/PHP

juin 2020. Septembre 2017

Apache pièges

  • Le service, c'est "apache2", pas "apache". Naze...
  • Pour désactiver la page de bienvenue, il faut commenter toutes les lignes de /etc/httpd/conf.d/welcome.conf
  • Ne pas changer le DocumentRoot, mais créer un lien symbolique depuis /srv/www/htdocs (sur OpenSUSE).

PHP pièges

  • Si classes, l'accès aux variables de la classe se fait par "$this->variable" Sans "$" devant variable

Apache htaccess

Dans /etc/httpd/conf/httpd.conf, mettre "AllowOverride AuthConfig" dans chapitre "<Directory "/var/www/html">". Ne pas se tromper de chapitre

.htaccess :

AuthName "blabla"
AuthType Basic
AuthUserFile "/home/<chemin_FTP_OVH>/www/.htpasswd"
Require valid-user

.htpasswd :

htpasswd -n <user> > .htpasswd

phpmyadmin

Si accès distant, dans /etc/httpd/conf.d/phpMyAdmin.conf remplacer "Require ip 127.0.0.1" par "Require ip <IP>" dans les deux chapitres "Apache 2.4".

Et relancer Apache.

Inclure du html dans du html

<object type="text/html" align="middle" width="200" height="200" type="text/html" data="/fichier.php">Warning: html file could not be included.</object>

C++ compilé dans Apache

  • Mettre l'executable ELF dans /srv/www/cgi-bin/
  • Appeller en http://<IP>/cgi-bin/<prog>
#include <stdlib.h>
prinf("Content-Type: text/html; charset=UTF-8");
char * chaine = getenv("QUERY_STRING"); //retourne un pointeur sur une zone mémoire DEJA réservée par l'OS !

C++ dans html par PHP

Coté PHP :
<?php
putenv("var=abcd");
putenv("PATH=<chemin>:<chemin>"); //Si PATH non renseigné, exécutable non trouvé.
//Et attention, doit être accessible par user Apache ? !
$sortie=shell_exec("prog");
?>
Coté C++ si une seule chaîne en retour:
#include <stdlib.h>
char * chaine = getenv("var");
cout << "sortie" << endl;

Si plusieurs chaînes en retour :

utiliser proc_open()

produire ses propre fichiers RPM

Mars 2015, c'est au point.

mkdir ./{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS,tmp}
ln -s <chemin>/rpmmacros ~/.rpmmacros

Fichier .rpmmacros :

%packager       moi
%_topdir	<chemin>
%_tmppath       /var/tmp

Fichier spec :

Name :
URL : site web
Version :
Release : release
Packager : le packager
Distribution : pour quelle distrib
Summary : description en une ligne
Group : Applications
License : GPL
%description
description en plusieurs lignes
de mon programe


%build
cd %{_sourcedir};
g++ -o hello hello.cpp

%install
rm -fR $RPM_BUILD_ROOT;
mkdir -p $RPM_BUILD_ROOT/usr/bin;
cd %{_sourcedir}
mv hello $RPM_BUILD_ROOT/usr/bin/;

%clean
rm -rf $RPM_BUILD_ROOT/

%files
%attr(755,root,root)
/usr/bin/hello

rpmbuild -v -bb SPECS/hello.spec

mapping touches clavier


Septembre 2014

Logitech G11

Clavier Sun Microsystems

Nouvelle tentative avec clavier Sun Microsystems avec ses 11 touches supplémentaires : succés ! !

xev : fourni le code des touches (en graphique)

1 keycode, plusieurs keysyms

xmodmap -pke : print current configuration

setxkbmap -layout fr : reset

xmodmap -e "keycode 146=Escape" # Touche clavier Sun "Aide" devient Esc
xmodmap -e "keycode 49=at EuroSign" # Touche puissance 2 = @ et Euro
xmodmap -e "keycode 59=46 59" # ';' et '.' inversés
xmodmap -e "keycode 61=47 33" # touche '!' = '/' et '!'
xmodmap -e "keycode 94=quotedbl" # touche <> = guillemets
xmodmap -e "keycode 20=plus" # ')' = '+'
xmodmap -e "keycode 136=35" # Touche Sun Stop = #
xmodmap -e "keycode 137=124" # Encore = |
xmodmap -e "keycode 138=91" # Props = [
xmodmap -e "keycode 139=93" # Annuler = ]
xmodmap -e "keycode 140=123" # Devant = {
xmodmap -e "keycode 141=125" # Copier = }
xmodmap -e "keycode 142=60" # Ouvrir = <
xmodmap -e "keycode 143=62" # Coller = >
xmodmap -e "keycode 144=40" # Chercher = (
xmodmap -e "keycode 145=41" # Couper = )
xmodmap -e "keycode 106=61" # touche / pavé numérique devient '='

xmodmap -e "keycode 134=Menu" # Home droite = Menu contextuel
# 37 # ctrl gauche
# 133 # Home gauche
# 64 # Alt gauche
# 108 # Alt Graphique
# 134 # Home droite
# 135 # Touche Menu droite
# 105 # ctrl droite

affectation d'une chaine de caractères à une touche

xbindkeys --defaults > /home/user/.xbindkeysrc : la première fois

xbindkeys -k : voir code de touche (en graphique)

Lancer xbindkeys, après avoir complété /home/user/.xbindkeysrc :

"sleep 0.1 && xdotool type --clearmodifiers '2do,qin:co,'" # @domain.com en qwerty !
   m:0x10 + c:9  
  • Si on ne met pas la commande sleep, ça bug ! :(

Boot réseau PXE sur Macintosh PowerPC G3 Bleu

Mars 2014, le Mac bleu boote. Octobre 2014.

dhcpd.conf

tftp

/etc/xinetd.d/tftp

/etc/init.d/xinetd restart

yaboot.conf à renommer

/srv/tftpboot/01-00-05-02-49-77-8b sous Debian

Problèmes rencontrés

  • Le fichier yaboot.conf ou yaboot.cnf doit être renommé !
    Sous Debian en "01-adr MAC". Sous Suse de yaboot.cnf en yaboot.conf ET attendre le 1er timeout. Ou mettre yaboot.conf-00-05-02-50-78-7a pour ne pas attendre.
  • chez Suse, yaboot.cnf ne contient que les entrées pour 64 bits. Peut-être 32 bits pas possible.
  • il semblerait, comme lu, que le Bios ("Open Firmware") du Macintosh G3 ne soit pas capable de charger de trop gros fichiers. Message : "allocated 00b00000 bytes for executable" = 11Mo. Debian en dessous ok. Suse largement au dessus ? (48,5Mo pour le fichier initrd32)

Commandes Open Firmware

appuyer Alt-Home-F-O

boot cd:,\\:tbxi

hattrib -b ?

boot ud:,\\:tbxi ?

dev / ls

ctrl+S : stop scroll
ctrl+A : restart scroll (ctrl+Q en qwerty)

boot enet:server_ip,file,client_ip
boot enet:server_ip (avec dhcpd)

Cas Linux-x86 (PC classique)

  • aouter "eth0" dans /etc/sysconfig/dhcpd, ligne DHCPD_INTERFACE="eth0"
  • Copier pxelinux.0 depuis kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz//bios/core/ ou depuis /usr/share/syslinux/pxelinux.0
  • ET bios/com32/elflink/ldlinux/ldlinux.c32
  • attention a le pas confondre pxelinux.0 et lpxelinux.0 !
  • creer un dossier pxelinux.cfg (obligatoire)
mount /dev/sdc1 /mnt/securecard
mount -o noatime /dev/sdc2 /mnt/squidcache/
mount -o loop,ro,noatime /mnt/securecard/isos/openSUSE /mnt/securecard/pxelinux/iso/ 
  • tftp ne prend pas les liens symboliques ! ?
  • penser : lancer services xinetd(tftp), dhcpd et squid
dhcpd -f -cf /mnt/securecard/dhcpd.conf &
squid -f /mnt/securecard/squid.conf 
umount /mnt/securecard/isos/openSUSE*.iso ; umount /mnt/securecard/ ; umount /mnt/squidcache/

Electronique

pulseview

sigrok-cli --driver fx2lafw -C A0 --time 3000 -O csv -o fichier.csv

xrandr

xrandr --output LVDS1 --mode 1024x600
xrandr --output VGA1 --mode 1024x768 --below LVDS1
xrandr --output VGA-2-0 --mode 1024x768 --same-as DVI-D-1
xrandr --output VGA-2-0 --off

bluetooth

Avril 2024. Février 2020.

modprobe btusb
lsmod | grep bluetooth
rfkill unblock bluetooth (éventuelement)

systemctl start bluetooth.service

bluetoothctl

discoverable on/off
devices : liste périphériques appairés.
remove <mac>

blueman

http://www.linux-magazine.com/Issues/2017/197/Command-Line-bluetoothctl

Lecteur d’empreintes finger reader

avril 2024. En cours.

installer fprintd et pam_fprint

systemctl start fprintd.service

Pare-feux restrictif

#!/bin/bash
iptables -F
iptables -X

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# local
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A INPUT -i tun1 -j ACCEPT
iptables -A OUTPUT -o tun1 -j ACCEPT

# Connections etablies
iptables -A INPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Ports serveurs
# SSH
iptables -A INPUT -p tcp --dport <port> -j ACCEPT
# VPN
iptables -A INPUT -p udp --dport <port>:<port> -j ACCEPT
# Radicale
iptables -A INPUT -p tcp --dport <port> -j ACCEPT

# root
iptables -A OUTPUT -p udp -m owner --uid-owner root -j ACCEPT
iptables -A OUTPUT -p tcp -m owner --uid-owner root -j ACCEPT

# ping
ip_serveur=192.168.xxx.xxx
iptables -A OUTPUT -p icmp --icmp-type 8 -s $ip_serveur -d 0/0 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -s 0/0 -d $ip_serveur -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -d $ip_serveur -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 0 -s $ip_serveur -d 0/0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# DNS
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT


sleep 10 # A cause systemd

su -c <prog> <user>

Wifi

rfkill list : permet de savoir si interrupteur wifi "materiel"

KDE3

installer : kdenetwork3-wireless knetworkmanager-kde3

lancer kwifimanager ?

lancer service NetworkManager (avec majuscules !)

icone en bas a droite

Pas reussit. Passé par Yast2 lan ?

ou :

nmcli device wifi list

nmcli device wifi connect <SSID> password $(cat /fichier)

nmcli connection delete <SSID>

Attention : depuis peu, pour accéder à l'interface d'administration de la BBox, il faut ajouter l'adresse l'IP de la box à mabbox.bytel.fr dans le fichier /etc/hosts . Sinon site inaccessible !

Sans cryptage ou avec WEP

ifconfig wlan0 up

iwlist wlan0 scan | grep ESSID : voir réseau
iwconfig wlan0 key open essid "McDonald's France"

#iwconfig wlan0 mode managed key <cle>

# Si WEP 
iwconfig wlan0 enc on key "<cle>" essid "<essid>"

à l'hotel mettre dans /etc/hosts : 217.167.130.188 wifi.hotelbb.com (pb DNS donc)

Avec cryptage WPA

Arreter le service NetworkManager

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel

network={
ssid="essid"
psk="cle"
}

ip link set wlan0 up

wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf &

dhclient wlan0

wpa_cli status doit donner COMPLETED ?

WPA2

network={
        ssid="essid"
        psk="cle"
        scan_ssid=1
        proto=WPA2
        key_mgmt=WPA-PSK
        group=CCMP TKIP
        pairwise=CCMP TKIP
        priority=5
}

systemd

Avril 2024, novembre 2013 et janvier 2014

runlevels nouvelle facon

Lid

Comportement à la fermeture de l'écran d'ordinateur portable en mode texte uniquement.
Copier /usr/lib/systemd/logind.conf en /etc/systemd/logind.conf si fichier inexistant.

HandleLidSwitchExternalPower=lock

systemctl restart systemd-logind.service ?

démarrage en texte ou graphique

systemctl isolate multi-user.target
systemctl isolate graphical.target : change le runlevel
systemctl set-default <name of target>.target


systemctl enable nfs.service
systemctl start nfs.service

Nouveau service

vi /usr/lib/systemd/system/<service>.service

[Service]
Type=simple
ExecStart=/usr/bin/monexecutable

[Install]
WantedBy=multi-user.target

Ne pas oublier de rendre "monexecutable" executable

systemctl daemon-reload

systemctl start monexecutable.service

systemctl enable monexecutable.service

OpenVPN


systemctl start openvpn@monvpn.service

systemctl enable openvpn@monvpn.service

systemctl is-enabled openvpn@monvpn

OpenCL

En cours, octobre 2013, juin 2015, janvier 2018, juin 2018, juillet 2018.

zypper in --from science Mesa-libOpenCL libOpenCL1 libopencl opencl-headers opencl-cpp-headers ocl-icd-devel clinfo

Bug : ln -s /usr/lib64/libOpenCL.so.1 /usr/lib64/libOpenCL.so

ICDs dans /etc/OpenCL/vendors/ comme mesa-opencl-icd ? + un ICD loader /usr/lib64/libOpenCL.so ?

https://github.com/flanaras/opencl-examples


#include <CL/cl.h>

g++ -lOpenCL -o run prog.cpp
ou LIBS += -lOpenCL dans fichier .pro

cl_device_id, cl_kernel, cl_program, cl_command_queue et cl_context

Davantage d’informations Hardware, Software ...
HardwareSoftwareMémoire
Processing Element (PE)Work-itemPrivate Memory
Compute UnitWorkgroupLocal Memory
Context ?
GPUDeviceGlobal Memory
Platform
Fermer

Initialisations

A TESTER

// nombre de platformes et IDs
cl_uint nb_de_Platforms;
if( !ClCheck(clGetPlatformIDs(0, NULL, &nb_de_Platforms))) //Nb de plateformes
cl_platform_id mesplatformes[nb_de_Platforms];
if( !ClCheck(clGetPlatformIDs(nb_de_Platforms, mesplatformes, NULL))) //Informations sur les plateformes

clGetPlatformInfo(mesplatformes[i], CL_PLATFORM_VENDOR, 128, vendor, NULL);
clGetPlatformInfo(mesplatformes[i], CL_PLATFORM_NAME, 128, name, NULL);
clGetPlatformInfo(mesplatformes[i], CL_PLATFORM_VERSION, 128, version, NULL);


cl_device_id devices[100];
cl_uint devices_n = 0;
if(!ClCheck(clGetDeviceIDs(mesplatformes[i], CL_DEVICE_TYPE_GPU, NULL, NULL, &nb_devices)))
if(!ClCheck(clGetDeviceIDs(mesplatformes[i], CL_DEVICE_TYPE_GPU, nb_devices, devices, NULL)))

status = clGetDeviceIDs(platformIDs[i], CL_DEVICE_TYPE_ALL, 0, NULL, &numDevices);

Mémoires

__privateles datas d'un work-item seul
__localles datas des work-items d'un work-group
__constantde meme mais read-only pour le GPU
__globalglobale

Vulkan

En cours avril 2023, juin 2018

zypper in vulkan vulkan-devel

g++ -std=c++11 -lvulkan -I/usr/include/vulkan/ -L/usr/lib64/ -o run prog.cpp

vulkaninfo

Jeux

zypper addrepo https://download.opensuse.org/repositories/Emulators:/Wine/openSUSE_Leap_15.4/ wine
zypper in wine-devel wine-mono wine-32bit-devel protontricks proton-native

Divers formation

Octobre 2013

fstab

/dev/... /mnt/... ext4 defaults 0 0

LVM

PVcreate
VGdisplay
LVextend
remove
lvm : vg, pv et lv

pvcreate /dev/
vgcreate nomvg /dev
lvcreate -L <taille> -n namelv namevg
ou : -l 100%FREE si tout
vgextend monvg /dev
lvextend -L +<taille> /dev/
+ resize2fs /dev/

divers

useradd (simple) != adduser (complet)
id
cal
grep chaine fichier
ls -S
file fichier : dit type de fichier
which=whereis
less : more plus evolue
sort : tri
tail, head : la queue et la tête d'un fichier ligne par ligne
2> : redirige la sortie d'erreur standard
$? : code dernière erreur
pgrep (-l) <nom programme>
wall : broadcast de texte
locate : recherche de fichier indexee
hostnamectl set-hostname <nom>
ps --forest : foret

SMB

mount.cifs -o uid=1000,user=Administrateur //<IP>/<partage> /mnt/...

Compilation noyau

make menuconfig
make gconfig
make xconfig
make
make install
grub2-mkconfig ou update-grub2

crontab

Utiliser kcron ou :

min(0-59) heure(0-23) jour_mois(1-31) mois(1-12) jour_semaine(0-6, 0=dimanche) commande

/etc/cron.daily/script

echo "* * * * * user /prog.sh" > /etc/cron.d/prog : toute les minutes ? Et ligne vide à la fin fichier ?

systemctl restart cron.service ? ?

Commande at

  • avoir lancé le service atd
echo "commande" | at $heure:$minutes $jour.$mois.$annee

Mathématiques logiciels

Gnome Genius

Attention, pour tracer une courbe, mettre un caractère ` (Alt-Gr 7). Ne pas confondre avec ' . Tordu !
exemple : LinePlot(`(x)=x^2, -1, 1, 0, 1)

function mafonction(x)=sin(x)<br>
LinePlot(mafonction,-10,10)
ExportPlot("out.ps")

Attention, LinePlot et pas lineplot

Maxima

numer:true
expand();
solve(expr=var,x);
rhs() : isole partie de droite de l'expression
subst(expression_dest,var,expression_in);
ratcoef(poly,var,coef); : extrait coefficient d'un polynôme

MuseScore (éditions de partitions musicales)

Juillet 2013 http://musescore.org/fr

N : mode édition

CTRL + L : Texte + espace + maj-espace + '-' + return

CTRL + T : Tempo + F2 (caractères spéciaux)

x / maj-x : sens hampe

CTRL + haut/bas : +/- octave

Webcam avec enregistrement distant

En cours mars 2013

streamer -c /dev/video1 -s 1280x1024 -t 2 -r 1 -o img0.jpeg

openssl aes-256-cbc -salt -a -in img1.jpeg -out img.ssl -pass file:pas.txt

gzip img.ssl

mv img1.jpeg $(TZ=CET date +%C%y%m%d_%Hh%M_%S).jpeg

programmation de pilote USB par rétro-ingénierie

En cours mars 2013

constructeur original et pilote Win$:
http://www.maplin.co.uk/robotic-arm-kit-with-usb-pc-interface-266257

lsusb : Bus 002 Device 008: ID 1267:0000 Logic3 / SpectraVideo plc

modprobe usbmon

tshark -D (en root) pour voir lequel

usb-devices (en root) pour voir lequel

tshark -i <interface> -w <file> (en root)

wireshark <file> (non-root)

http://nagaraj-embedded.blogspot.fr/2012/03/capturing-usb-data-through-wireshark.html

http://creativeyann.free.fr/ksr.php

    http://notbrainsurgery.livejournal.com/38622.html

    endpoints < interface < configuration

    Wireshark

    http://julien.danjou.info/blog/2012/logitech-k750-linux-support

    http://wiki.wireshark.org/CaptureSetup/USB

    http://info.fs.tum.de/images/8/86/2011-06-08-usb.pdf


    http://uvtutorial.blogspot.fr/2011/10/reverse-engineering-usb-device.html

    http://matthias.vallentin.net/blog/2007/04/writing-a-linux-kernel-driver-for-an-unknown-usb-device/

    http://www.reactivated.net/weblog-content/20050806-reverse-0.2.txt

    https://tequals0.wordpress.com/2011/11/01/reverse-engineering-logitech-unifying-usb-protocol/

    http://notbrainsurgery.livejournal.com/38622.html

    http://biot.com/blog/usb-sniffing-on-linux

    http://www.simong.eu/projects/dlc300/

    ncurses

    gcc -lncurses -ltinfo <prog.cpp>

    #include <ncurses.h>
    int main()
    {	
    	int maxX,maxY;
    	initscr();
    	getmaxyx(stdscr,maxY,maxX);   //taille de la console
    	move(maxY-1,maxX-1);  //commence en (0,0)
    	addch('A');   //affiche caractere
    	refresh();
    	getch();	// input 
    
    	endwin();
    	return 0;
    } 
    

    Qt

    Documentation hors-ligne : lancer "assistant-qt5" (ne pas oublier installer libqt5-qtdoc-qch)
    QtDesigner = taper designer-qt5 (Tordu !)

    • qmake-qt5 -project (jamais utilisé en fait)
    • qmake-qt5
    • Ajouter QT += widgets dans fichier .pro
    • uic-qt5 window.ui -o window.h
    • make

    + mettre Q_OBJECT en debut de classe
    + Qt exige un .h pour compiler sinon "undefined vtable", ou inclure fichier .cpp de la classe dans le fichier .pro sur ligne HEADERS (oui, oui !) et mettre #include "moc_xxx.cpp" à la fin du fichier .cpp. Ca marche !

    Fichiers .pro

    Sans fenetre (nogui)

    • QT -= gui
    • #include <QCoreApplication>
    • QCoreApplication app(argc, argv);
    • classe herite de QObject

    Fenetres sans Classes

    Avec lambda

    • Une seule fenetre (complexe), crée avec QtDesigner
    • Un bouton de validation pour traitements des champs

    https://doc.qt.io/qt-5/designer-using-a-ui-file.html

    • Ne pas oublier de compléter le fichier .pro

    QDialog appelant un autre QDialog

    Fenetres avec Classes

    Fenetre principale

    Fenetres secondaires

    Qt Wizard (assistants)

    Images

    	QImage monimage(512,512,QImage::Format_RGB32);
    	monimage.load("image.jpg");
            monimage.fill(QColor(Qt::white).rgb());
            monimage.setPixel(x,y,qRgb(red,green,blue));
    	QPainter painter(&monimage); //Pour afficher du texte 
    	painter.drawText (50, 200, QString("A")); 
    	painter.fillRect(X,Y,large,haut,QBrush(QColor(Qt::red))); // ou des formes géométriques
    	ui.monQLABEL->setPixmap(QPixmap("image.jpg")); /* monQLABEL est crée dans Designer. A appeler à chaque rafraichissement ? */
    

    QFile et QDataStream

    #include <QFile>
    QFile fichier("file");
    fichier.open(QIODevice::WriteOnly|QIODevice::Truncate);
    fichier.close();
    

    QString :

    #include <QTextStream>
    QString a("abc");
    QTextStream stream(&fichier);
    stream << a;
    

    QDataStream pour copie de fichier à fichier :

    #include <QDataStream>
    QDataStream stream(&fichier2);
    stream << fichier1.readAll();
    

    Intégrer des fichiers dans l’exécutable

    .pro :

    RESOURCES += fichier.qrc
    

    .qrc :

    <!DOCTYPE RCC><RCC version="1.0">
    <qresource>
        <file>image.jpg</file>
        <file  alias="fichier.conf">../../dossier/fichier.conf</file> # alias nécessaire si chemin relatif !
    </qresource>
    </RCC>
    

    Dans le fichier source, chemin des fichiers en ":/image.jpg"

    Qt Linguist

    • Dans le fichier .pro : TRANSLATION=translation_en.ts translation_es.ts
    • lupdate project.pro -ts translation_en.ts translation_es.ts
    • Release dans linguist
    • Dans le main :

    Requete SQL Qt

    Network

    • Si erreur à connect "invalid conversion from ‘QUdpSocket*’ to ‘int’" : ajouter après nom de la classe : ": public QObject "
    • Ajouter +1 au port si tests uniquement sur localhost (sinon ça bloque)

    QDtls reseau crypté

    writeDatagramEncrypted : envoi
    decryptDatagram : reception
    

    Openssl

    gcc -lssl -lcrypto -o run prog.cpp
    

    Remplir une liste déroulante

    Événement toute les x secondes

    	bipper = new QTimer(this);
    	connect(bipper, SIGNAL(timeout()), SLOT(mafonction()));
    	bipper->start(1000); //temps en ms
    

    QSettings

    	QSettings * settings=new QSettings("MaCompagnie", "MonProgramme");
    	settings->setValue("chapitre/cle",10);
    	int val = settings->value("chapitre/cle").toInt();
    

    Fichier : $HOME/.config/MaCompagnie/MonProgramme.conf

    Hash MD5

    	QCryptographicHash monHash(QCryptographicHash::Md5);
    	monHash.addData(QByteArray & data)
    	monHash.addData(char * data, int length)
    	QByteArray.append(monHash.result());
    

    Qt 3D

    A TESTER...

    (En Qt5)

    QT += 3dcore 3drenderer 3dinput
    #include <Qt3DCore>
    #include <Qt3DRenderer>
    #include <Qt3DInput>
    

    OpenCV et Qt

    A TESTER...

    	INCLUDEPATH += /usr/local/include/opencv
    	LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui
    
    	#include <opencv2/opencv.hpp>
    

    Listes tableaux

    QList<QString> liste;
    QList<QList<QString> > tableau2D;
    
    liste.append("ajout");
    ou :
    liste << "un" << "deux";
    
    if (liste.at(i) == "Jaune") : lecture seule
    

    Execution programme depuis Qt

    //rendre executable
    QFile bat("fichier");
    bat.open(QIODevice::ReadWrite);
    bat.setPermissions(QFileDevice::ReadOwner|QFileDevice::WriteOwner|QFileDevice::ExeOwner);
    	
    //Pour des raisons inconnues, il faut redonner le chemin ? ? (absolutePath)...
    QProcess process;
    process.start("/bin/bash", QStringList() << "-c" << QFileInfo(bat).absolutePath()+ "/" + fichier");
    process.waitForFinished();
    bat.close();
    

    Rendre synchrone :

    QEventLoop pause;
    pause.exec(); : pause
    pause.quit(); : reprise
    

    Racoucis clavier avec Alt

    • Nommer les boutons avec "&"
    • Lier les <inputs> avec les <Labels> par "Buddies" dans Designer (menu Edit)

    QString et cout

    • #include <iostream>
    • using namespace std;
    • .toStdString()

    Ou surcharger << :

    ostream& operator<<(ostream &flux,const QString &chaine)
    {
    	flux << chaine.toStdString();
    	return(flux);
    }
    

    Pour concaténer des chaines de caractères : commencer par un QString, puis "+".

    qstring.toint()string to int
    QString::number(1)int to string
    .toStdString().c_str();QString to char *

    Listes

    	QList<QPair<double,quint32> > liste;
    	QPair<double,quint32> paire;
    	foreach(paire, liste)
    	{
    		...
    	}
    

    // espace obligatoire dans "> >" car pas ">>" et paire doit être déclaré avant !

    Divers Qt et C++

    Types de tailles fixes : uint32_t avec : g++ -std=gnu++11 prog.cpp
    ou qint16, quint32...

    enum Couleur:quint8 {rouge, vert, bleu};
    Couleur coul=bleu;
    
    enum class Couleur:quint8 {rouge, vert, bleu};
    Couleur coul=Couleur::bleu;
    

    Conversions enum :

    var_enum	= static_cast<Couleur>(var_numerique);
    var_numerique 	= static_cast<int>(var_enum);
    

    Pas besoin de conversion si pas de class et prendre les types Qt (quint8...) !

    QtQuick et QML

    On peut tester avec qmlscene

    Fichier .pro

    TEMPLATE = app
    QT += qml quick
    SOURCES += main.cpp
    

    Imports

    Avec QT 5.9.4 :

    import QtQuick 2.3
    import QtQuick.Window 2.2
    import QtQuick.Controls 1.2
    import QtQuick.Layouts 1.0
    

    main.cpp

    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    
    int main(int argc, char* argv[])
    {
        QGuiApplication app(argc, argv);
    
        QQmlApplicationEngine engine;
        engine.load(QUrl(QStringLiteral("fichier.qml")));
    
        return app.exec();
    }
    

    Compilation Qt pour Android

    juillet 2013, ça marche !

    http://guillaumebelz.wordpress.com/2013/07/04/developpez-en-natif-pour-android-avec-qt-5-1/ Excellent !

    attention, créer un projet ARM et gcc 4.7

    sdk_android/adt-bundle-linux-x86-xxx/sdk/platform-tools/adb devices (adb est dans le SDK) : nom du device

    adb -s <nom> install fichier.apk

    commandes MTP :
    mtp-detect
    mtp-connect
    mtpfs -o allow_other /mnt/mtp
    fusermount -u /mnt/android pour demonter ?

    Ou passer par pcmanfm

    Cross-Compilation de Linux vers Windows

    Avril 2012, marche, sauf avec OpenCV. Juin 2015

    Sans makefile

    i686-w64-mingw32-g++ -o run.exe prog.cpp
    DLLs à fournir pour Wine (au moins) :
    /usr/i686-w64-mingw32/sys-root/mingw/bin/libgcc_s_sjlj-1.dll

    Avec cmake + OpenCV

    fichier CMakeLists.txt :

    #set (BINNAME dieselGenerator)
    #set(EXECUTABLE_OUTPUT_PATH bin)
    include_directories(/home/moi/install/opencv/include)
    link_directories(/home/moi/install/opencv/lib)
    #file (src/*)
    set(EXECUTABLE_OUTPUT_PATH ../bin/${CMAKE_BUILD_TYPE})
    SET( PROJECT_NAME monprojet )
    PROJECT( ${PROJECT_NAME} )
    CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
    FIND_PACKAGE( OpenCV REQUIRED )
    ADD_EXECUTABLE( run src/prog.cpp )
    TARGET_LINK_LIBRARIES( run ${OpenCV_LIBS} )
    

    Fichier win32.cmake :
    NOTE : non fonctionnel avec OpenCV, j'ai pas réussi.

    # voir http://www.cmake.org/Wiki/CmakeMingw
    # the name of the target operating system
    SET(CMAKE_SYSTEM_NAME Windows)
    # which compilers to use for C and C++
    SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
    SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
    SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres)
    # here is the target environment located
    SET(CMAKE_FIND_ROOT_PATH  /usr/i586-suse-linux )
    # adjust the default behaviour of the FIND_XXX() commands:
    # search headers and libraries in the target environment, search 
    # programs in the host environment
    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 
    

    puis :

    Sous Linux vers Linux

    cd cmake
    cmake ..
    make

    Sous Linux vers Windows

    si erreur "cc1: execvp: No such file or directory" : export PATH=/usr/lib64/gcc/i686-w64-mingw32/5.1.0/:$PATH
    cd make
    cmake -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_TOOLCHAIN_FILE=win32.cmake ..
    make

    Sous Linux vers Windows avec Qt sous Wine

    Juin 2020 en cours - Juin 2015 ca marchait

    Ne marche sous Wine que pour les tout petits projets. Sinon utiliser une machine virtuelle.

    • Installer sous wine Qt-Windows (MinGW est inclut, dossier Tools).
      • Attention, certaines versions trop récentes (?) de Qt-installer plantent sous wine (la faute à wine).
    • Ajouter "CONFIG += c++11" au fichier .pro si Windows avec mingw uniquement
    • wine cmd ou wineconsole
    • au lieu de "make" lancer "mingw32-make" avec le bon PATH:

    manuel :

    WINEPATH="$(expr $(cat $(find /home/$(echo $USER)/.wine/drive_c/Qt/ -name qtenv2.bat) | grep set | cut -d "=" -f 2) : "\(.*\);%PATH%")" wine cmd
    qmake
    mingw32-make
    

    ou automatique :

    wine cmd /C "$(cat $(find /home/$(echo $USER)/.wine/drive_c/Qt/ -name qtenv2.bat) | grep set) && mingw32-make 2>&1 >/dev/null | less"
    


    • Attention, pour tester l'executable sous wine, il faut aussi donner WINEPATH

    Compiler Qt-Windows en statique

    Ne pas faire ? :


    Scripting bash

    $(()) : calculs
    
    case $1 in
    lundi)
    echo "salade"
    ;;
    esac
    
    if [[ $nb -gt 1 ]]
    then
      echo "match"
    fi
    
    if [ $var = "ab" ]
    then
      bla
    else
      bla
    fi
    
    for v in *.txt; do echo "$v" ; done
    
    IFS=$(echo -en "\n\b")  # evite que les espaces et les tabs créent de nouvelles lignes
    for var in $(cat liste) ; do echo $var ; done
    
    var=5 # si variable
    for ((i=1;i<=var;i++))
    do
        echo $i
    done
    
    while read var1 var2 var3 var4
    do
    done < fichier.csv
    
    while true;do ll | wc -l ; sleep 1 ; done
    
    find <fichier> -type f -mtime +30 -exec /bin/rm -Rf {} \;
    
    awk '/<ligne>/{print $4}' : 4eme element de la ligne contenant <ligne> ?
    
    unary operator expected. script : exécute avec variables d’environnement du shell
    #!/bin/bash : serait obligatoire si perl ect...
    echo "argument $1"
    
    make 2>&1 >/dev/null | less : erreurs dans less
    clear ; make 2>/tmp/err.txt ; cat /tmp/err.txt | more
    prog | tee -a out.txt : sortie standard vers ecran et fichier (-a append)
    
    echo bc
    read
    . /etc/os-release : met les valeurs du fichiers dans les variables !
    
    pdfinfo file.pdf | grep Pages | awk '{print $2}' : nb de pages et awk traitement colones
    
    grep -i chipset /var/log/Xorg.0.log : modele de carte graphique AMD sans lspci
    glxinfo | grep -iE 'vendor:|device:|version:' pareil
    
    zypper dup --releasever=15.X ?
    
    w3m -dump <url> > fichier.txt : extraire texte d'une page web
    
    reset : refait apparaître le curseur
    

    Copie clés

    #!/bin/bash
    echo "nom  du fichier (sans extension) :"
    read fichier
    
    if [[ ! -d /mnt/usb ]]
    then
            mkdir /mnt/usb
    fi
    
    
    if [[ ! -f /etc/openvpn/$fichier.conf ]]
    then
            echo "le fichier .conf doit exister !"
    else
            mount /dev/disk/by-label/usbmove /mnt/usb
            if [[ ! -f /mnt/usb/$fichier.tar.ssl ]] #teste si fichier existe pas
            then
                    echo "sens du poste vers cle usb"
                    openssl rand -hex 255 > /mnt/usb/passe.txt
                    openvpn --genkey secret /etc/openvpn/$fichier.key
                    cd /etc/openvpn
                    tar cf $fichier.tar $fichier.key $fichier.conf
                    openssl aes-256-cbc -pbkdf2 -salt -in /etc/openvpn/$fichier.tar -out /mnt/usb/$fichier.tar.ssl  -pass file:/mnt/usb/passe.txt
                    rm /etc/openvpn/$fichier.tar
            else
                    echo "sens de cle usb vers le poste"
                    openssl aes-256-cbc -d -pbkdf2 -in /mnt/usb/$fichier.tar.ssl -out /etc/openvpn/$fichier.tar  -pass file:/mnt/usb/passe.txt
                    tar xf /etc/openvpn/$fichier.tar --directory /etc/openvpn/
                    dd if=/dev/urandom of=/mnt/usb/$fichier.tar.ssl bs=1024 count=100 # effacement
                    rm /mnt/usb/$fichier.tar.ssl
                    rm /etc/openvpn/$fichier.tar
                    openssl rand -hex 255 > /mnt/usb/passe.txt # effacement
            fi
            umount /dev/disk/by-label/usbmove
    fi
    

    Backup depuis SFTP

    echo "mot de passe :"
    read -s SSHPASS
    mkdir chemin
    cd chemin
    sshpass -e sftp user@ip:chemin  << !
    get fichier
    bye
    !
    

    search and remplace

    • cat in.txt | sed s/"ancien"/"nouveau"/ > out.txt
    • sed -i 's/OLD_VALUE/NEW_VALUE/g' <fichier>

    Attention in.txt et out.txt doivent etre differents, sinon 2eme commande (dans ce cas écrase ancien fichier).

    Special Windows

    echo texte
    set /p var=texte
    

    Zenity boites de dialogues graphiques depuis bash

    zenity --info --text "abc"
    
    valeur=$(zenity --entry --title="titre" --text="texte" --entry-text="default" )
    

    Python

    def ma_function(a,b):
        print("Salut")
    

    Python avec Qt PyQt ou Pyside

    • Créer l'interface avec QtDesigner
    • pyside-uic interface.ui -o ui.py


    Inclusion de fonction C dans Python

    Ajouter dans le code C/C++ :

    extern "C"
    {
        void fonction(unsigned int arg);
    }
    

    Compiler la librairie C avec :

    g++ -shared -fPIC -o fichier.so fichier.c
    ou dans fichier .pro :
    TEMPLATE = lib
    CONFIG += unversioned_libname
    

    Code dans Python :

    import ctypes
    fichier = ctypes.cdll.LoadLibrary("./fichier.so")
    fichier.ma_fonction(arg)
    

    Rust

    Lua

    #!/usr/bin/env lua
    

    installation automatisé

    Septembre 2021, juin 2018, octobre 2016, mars 2013, Aout 2012.

    OpenSuse

    fichier xml : yast2 autoyast file filename=/chemin/fichier.xml

    Elements

    • DHCP
    • DNS
    • domain name
    • clavier fr
    • boot loader : chemins /mnt/boot/ + (hd0,0) ou (hd0,1)
    • date and time
    • Dire ne pas importer anciennes cles ssh
    • services : sshd, nfs, nfsserver, rpcbind
    • serveur de temps ?
    • SSHD configuration + service sshd a activer
    • utilisateur + 1er changement ?
    • root password + 1er changement ?
    • bug : etape 2 freeze si installation minimale sur Leap 42.1. Solution : mettre dêpot de update et meta-paquets :
    • bug : sshd n'est lancé qu'a partir du 2eme reboot => prevoir un reboot script en post install si remote ssh ! ou ?
    • bug leap 15.0 : clavier SUN détecté comme un clavier Mac ? Editer /etc/vconsole.conf et mettre KEYMAP=fr-latin9 + mkinitrd ?
    <final_reboot config:type="boolean">true</final_reboot>
    

    Si meta paquets

    zypper search -t pattern : savoir liste des patterns

    zypper info --requires <pattern> : voir contenu

    zypper --from : change vendor

    Si erreur "File <nom a ralonge> not found on medium" : dépot en cours de mise à jour. Attendre.

    <package>patterns-openSUSE-lxde</package>
    patterns-openSUSE-remote_desktop patterns-openSUSE-base-12.2-5.5.1.i586 patterns-openSUSE-x11_yast-12.2-5.5.1.i586 patterns-openSUSE-enhanced_base-12.2-5.5.1.i586 patterns-openSUSE-x11_opt-12.2-5.5.1.i586 patterns-openSUSE-sw_management-12.2-5.5.1.i586 patterns-openSUSE-x11-12.2-5.5.1.i586 patterns-openSUSE-enhanced_base_opt-12.2-5.5.1.i586 patterns-openSUSE-yast2_basis-12.2-5.5.1.i586
    

    Depuis disque dur Grub

    default install
    timeout 1
    title install
        root (hd0,0)
        kernel /boot/suse/linux install=http://195.220.108.108/linux/opensuse/distribution/leap/15.2/repo/oss autoyast=device://sdaZ/boot/suse/autoinst.xml nomodeset
        initrd /boot/suse/initrd
    

    Grub2

    /etc/grub.d/40_custom :

    menuentry "suse"{
    linux /boot/suse/linux hostip=192.168.1.99/24 gateway=192.168.1.1 proxy=http://192.168.1.1:2476 install=http://195.220.108.108/linux/opensuse/distribution/leap/15.4/repo/oss autoyast=device://disk/by-label/opensuseinstall/distrib/15.4/opensuse15.XX_01.xml
    initrd /boot/suse/initrd
    }
    
    

    + dans /etc/default/grub changer le ligne GRUB_DEFAULT
    + grub2-mkconfig -o /boot/grub2/grub.cfg
    + Pour donner un label à la partition source si XFS :

    xfs_io -c "label -s mylabel" /
    

    Par clé USB avec syslinux

    DEFAULT usb
    LABEL usb
      SAY Bonjour
      KERNEL /linux
      APPEND ro root=/dev/sdb hostip=192.168.1.99 netmask=255.255.255.0 gateway=192.168.1.1 proxy=http://192.168.1.1:2476 initrd=/initrd install=http://91.121.124.139/opensuse/distribution/leap/12.1/repo/oss autoyast=device://disk/by-label/LABEL/chemin/fichier.xml nomodeset
    

    Dans une machine virtuelle (Virtualbox)

    • Une seule carte en host-only + Squid
    • Penser a inclure yast2-bootloader ?
    • repasser en querty si systeme anglophone, sinon bug

    En bootant depuis une NET install

    install=http://91.121.124.139/opensuse/distribution/leap/12.1/repo/oss autoyast=ftp://192.168.220.2/autoinst.xml
    ou depuis une ISO :
    netsetup=dhcp autoyast=ftp://192.168.220.2/iso.xml
    

    Display manager

    <sysconfig config:type="list">
        <sysconfig_entry>    <!-- Set displaymanager to KDM -->
         <sysconfig_key>DISPLAYMANAGER</sysconfig_key>
         <sysconfig_path>/etc/sysconfig/displaymanager</sysconfig_path>
         <sysconfig_value>kdm</sysconfig_value>
        </sysconfig_entry>
       <sysconfig>
    

    Verification image .asc

    sha256sum -c openSUSE-Leap-15.6-NET-x86_64-Media.iso.sha256
    
    package : openSUSE-build-key
    /usr/lib/rpm/gnupg/keys/gpg-pubkey-29b700a4-62b07e22.asc : mQINBGKwfiIBEAD...
    
    gpg --import /usr/lib/rpm/gnupg/keys/gpg-pubkey-29b700a4-62b07e22.asc
    gpg --list-keys : AD485664E901B867051AB15F35A2F86E29B700A4
    #gpg --delete-keys AD485664E901B867051AB15F35A2F86E29B700A4
    gpg --verify openSUSE.iso.sha256.asc openSUSE.iso.sha256
    

    CentOS

    Janvier 2020, octobre 2019, janvier 2018

    Par Grub2 et loopback si par installation linux deja existante

    • Probleme : pas possible de supprimer la partition active ? ?
    • e2label /dev/sdaX sdaX : fixe un label à la partition (blkid vérif)
    • Copier le fichier iso sur la racine

    /etc/grub.d/40_custom :

    menuentry "CentOS" {
    set isofile='/centos.iso'
    set partition='4'
    loopback loop (hd0,$partition)$isofile
    linux (loop)/isolinux/vmlinuz keymap=fr inst.stage2=hd:LABEL=sda$partition:$isofile ro ks=hd:LABEL=sda$partition:/ks.cfg proxy="http://IP:port"
    initrd (loop)/isolinux/initrd.img
    }
    
    • grub2-mkconfig -o /boot/grub2/grub.cfg

    Par ISO si machine virtuelle

    mkdir isolinux
    cp -R /mnt/loop/* /chemin/isolinux/
    mv isolinux/isolinux/* isolinux/
    mkisofs -o moniso.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-info-table -V 'CentOS 7 x86_64' -boot-load-size 4 -boot-info-table -R -J -v -T isolinux/
    

    isolinux.cfg

    SAY Bonjour
    DEFAULT centos7
    PROMPT 0
    TIMEOUT 30
    UI vesamenu.c32
    
    LABEL centos7
    MENU TITLE centos7
      kernel isolinux/vmlinuz
      append initrd=isolinux/initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64:<path> quiet ks=cdrom:/ks.cfg proxy="http://IP:port"
    

    ks.cfg

    Attention, cette version efface automatiquement le disque dur.

    Debian

    En cours juin 2018

    preseeding par fichier preseed.cfg

    Mageia

    En cours avril 2018.

    auto_install= ? automatic=method:disk,disk:sdb,partition:sdb1,directory:/isolinux/auto_inst.cfg.pl ?

    chmod 644 iso/isolinux/isolinux.bin

    mkisofs -o moniso.iso -b isolinux/isolinux.bin -c boot.cat -no-emul-boot -V 'Mageia' -boot-load-size 4 -boot-info-table -R -J -v -T iso/

    http://gitweb.mageia.org/software/drakx/tree/mdk-stage1/doc/TECH-INFOS

    label leia_nfs
     kernel images/leia/isolinux/alt0/vmlinuz
     append initrd=images/leia/isolinux/alt0/all.rdz vga=788 kickstart=install/auto_inst.cfg.pl automatic=method:nfs,network:dhcp,server:192.168.100.39,directory:/export,int:wired ?
    

    mirroring de dépôt

    install=disk:/opensuse/distribution/leap/12.0/repo/oss?device=sdX
    rsync -r -P -t -l --progress rsync://OVH/opensuse/distribution/leap/12.2/ /home/$USER/sdb1/opensuse/distribution/12.2/
    rsync -r -P -t -l --progress rsync://OVH/opensuse/update/12.2* /home/$USER/sdb1/opensuse/update/

    rootkit detection

    Idéalement lancer rkhunter depuis un live CD.

    rkhunter --propupd --pkgmgr rpm
    rkhunter --update
    rkhunter --check
    

    Squid

    squid -z -f <fichier de conf> : créer le cache squid
    squid -N -d1 -f <fichier de conf> : verboze
    Penser à :

    • changer l'adresse IP du cache dans les DEUX fichiers de confs !
    • enlever le proxy ensuite si proxy

    tail -f /var/log/squid/access.log

    kill -TERM $(cat /var/run/squid.pid) + Attendre 30s

    Unbound service DNS

    juillet 2021.

    /etc/unbound/unbound.conf :

    interface: 192.168.100.2
    access-control: 192.168.100.0/24 allow
    

    rsync

    rsync -rlptP --dry-run --delete --exclude squidcache --exclude virtual --exclude .Trash-1000 --exclude scripts/chromium/ source dest (recusive, permissions, time, links, Progress)

    rsync -n -r -v --checksum --delete source/ dest/ | grep -v "sending incremental file list" | grep -v "bytes received" | grep -v "total size is" : vérifier "sans oublier les /"

    Sur cassette : voir https://github.com/dmitry-pavlov/audio-cassette-backup

    FTP

    en cours mai 2024.

    Lu sur wikipedia :"TFTP lacks security"

    PureFTP

    Pas trouvé comment changer le path de anonymous !

    L’utilisateur virtuel de pureftp ne doit pas déjà exister dans l'OS.

    groupadd ftpgroup
    useradd -c "utilisateur pureftpd" -g ftpgroup --system ftpuser
    
    
    pure-pw useradd <user> -u ftpuser -g ftpgroup -d /chemin
    pure-pw passwd <user>
    pure-pw usermod <user> -r '172.16.X.1/24' -m : filtrage par IP ?
    pure-pw mkdb
    
    UnixAuthentication yes
    
    systemctl start pure-ftpd.service
    

    décommenter la ligne PureDB /etc/pure-ftpd/pureftpd.pdb

    vsftp

    NFS

    /etc/export :
    /data/ 172.16.1.0/24(rw,sync,no_subtree_check)
    Plus besoin fsid=0,anonuid=1000,anongid=1000 ?
    Attention, l'étoile "*" ne marche plus dans les versions recentes, utiliser "/24"
    exportfs -a
    Si NFS avec Virtualbox, il faut une seule carte reseau en hostonly + proxy Squid.
    showmount -e <IP> : découverte NFS
    mount -t nfs4 <dir> <dir>

    Si "access denied by server" : ne pas mettre root mais nobody en propriétaire des dossiers.

    Samba

    installer le bureau Trinity

    En cours janvier 2012

    http://www.trinitydesktop.org/

    Images

    visionneuse : geeqie -t -f %F

    convert in.jpg -print "%w\n" /dev/null : largeur / hauteur (%h) image

    mogrify -format tiff *.jpg

    convert -resize 50% source.jpg dest.jpg
    for img in *.jpg; do nom=$(basename "$img" .jpg) ; convert "$img" -resize 50% "lowqual_${nom}.jpg"; done

    mogrify -rotate 180 fichier.jpeg

    montage in.jpg -duplicate <Nb-1> -geometry 100%x100% out.jpg : planche d'images identités

    convert -crop <taille_new_X>x<taille_new_Y> source.jpg out_%d.jpg : posterisation

    pdfjoin fichier1.pdf fichier2.pdf --suffix sortie : concatene 2 fichiers pdf

    convert -layers merge image.xcf image.jpg

    convert sources*.* -page A4 dest.pdf : images en pdf

    pdftoppm -r 300 -jpeg in.pdf out : pdf en images

    convert -append img1.jpg img2.jpg out.jpg : empile des images verticalement

    convert \( f1.jpg f2.jpg -append \) \( f3.jpg f4.jpg -append \) +append out.jpg : 4x4 images cette fois ci

    gs -o out.pdf -sDEVICE=pdfwrite -dFILTERIMAGE -dFILTERVECTOR in.pdf : enleve images et pavés du fichier pdf

    gs -o - -sDEVICE=ink_cov fichier.pdf : pourcentages des couleurs pour impression

    import -window root image.jpg : copie d'ecran screenshot

    ORC : tesseract -psm 6 <image.tiff> <texte.txt> -l fra : si "Unrecognized image type" -> passer image en tiff !

    glabels : 4.13x;2.755y;0;0;0;0.118 pouces + 2etq;4etq;0;0.295;4.130;2.755

    Video

    ffmpeg

    ffmpeg -i <fichier_in> <fichier_out.mp3> : extraire son d'une video
    ffmpeg -encoders
    ffmpeg -i video.mp4 -vf scale=160:120 video.mpg
    ffmpeg -i in.mp4 -ss 00:00:00 -to 00:00:00 -strict -2 out.mp4 # Extraire partie d'une video. Attention, ordre arguments important !
    ffmpeg -loop 1 -i image.jpg -i son.mp3 -shortest -acodec aac -ar 48000 -vcodec h264 -t 5 out.mp4 : video à partir d'une image
    ffmpeg -i in.mp4 -qscale:v 1 -qmin 1 -ss 00:00:00 -to 00:00:00 -f image2 image-%4d.jpeg : extraire images d'une video
    ffmpeg -i in.mp4 -qscale 0... Attention, sinon qualité tres reduite moche
    ffmpeg -i in.mp4 -qscale 0 -vf "fade=type=in:duration=1,fade=type=out:duration=1:start_time=<duree_film_moins_fade>" -c:a copy out.mp4 #effet transition 1s debut et fin
    ffmpeg -f concat -safe 0 -i liste.txt -c copy out.mp4 : concatener videos, avec liste.txt contient lignes : "file <fichier.mp4>"

    VLC

    • serveur :

    cvlc ex1.mp3 --sout udp://<IP client>:1234 --loop --sout-udp-caching=2000

    • client :

    cvlc udp://<IP serveur> --udp-caching=<mili-secondes>

    + codec installé des 2 cotés !
    + alsa://plughw:0,0  ?
    + arecord -l permet savoir quoi present

    vlc --no-video -Z <dossier> : lecture random sans image

    vlc --start-time=<debut (s)> --stop-time=<fin (s)> <file.mpg> Attention, temps en secondes !

    xine

    xine -V none -l=shuffle * : random audio only

    Ripper

    Davantage d’informations média, commande ...
    médiacommande
    CD audioripit -o <dossier sortie>
    DVDvlc dvdsimple:///dev/dvd --audio-language=fr --sout="#transcode{vcodec=mp4v,scale=1,acodec=mp4a}:duplicate{dst=std{access=file,mux=mp4,dst=out.mp4}}" vlc://quit
    vlc dvd:// --sout "#transcode{vcodec=none,acodec=vorb,ab=128,channels=2,samplerate=44100}:std{access=file,mux=ogg,dst='chemin/vers/dossier/nom_de_fichier.ogg'}" --dvd-device /dev/sr0
    Bluray
    Fermer

    Webcam

    vlc v4l2:///dev/video1 (3 "/" !)
    kopete
    ou :
    luvcview -d /dev/video0 -f yuv -s 640x480 : provoque bug d'affichage kde3

    streamer -c /dev/video1 -b 32 -o image000.jpeg : 1 image

    streamer -c /dev/video1 -s 800x600 -t 10 -r 1 -o image000.jpeg : 10 images

    vlc v4l2:///dev/video0 :input-slave=alsa://hw:0,0 --sout="#duplicate{dst=display,dst=std{access=file,mux=mp4,dst=out.mp4}}" : enregistre et affiche
    ajouter transcode{vcodec=mp4v,scale=1,acodec=mp4a}: ?

    guvcview : enregistreur

    luvcview -d /dev/video0 -L -> interroge capacités de la webcam

    gphoto

    SQL

    commandes de base

    SHOW DATABASES

    USE base

    SHOW TABLES

    DESCRIBLE table

    SELECT champ,champ FROM table WHERE condition;

    INSERT INTO table (champ_a,champ_b) VALUES('a','b');

    UPDATE table SET champ_a=a WHERE champ_b='b';

    DELETE FROM table WHERE champ='a';

    TRUNCATE TABLE table;

    SOURCE fichier

    CREATE/DROP user <user>;

    les mots de passe

    /usr/bin/mysql_secure_installation
    mysqladmin -u root password : initial
    mysqladmin -u root -p password : changer. Attention, il demande d'abord l'ancien mot de passe.

    backup

    mysqldump -u root -p <database> --password=<pass> -h <host> <base?> > dump.sql : backup en sql

    mysql -B -u root -p <database> -e "SELECT * FROM table;" > dump.csv : backup en csv

    mysql -u root -p <database> < dump.sql : restore (non testé)

    Divers

    mysql -p -u root -h 127.0.0.1 (!)

    lancer mysql_secure_installation la 1ere fois et mettre un mot de passe pour les 3 (!) utilisateurs root.

    phpmyadmin : http://127.0.0.1/phpMyAdmin/ + déplacer les fichiers de /var/www au bon endroit (!). ou /srv/www finalement ?

    collation : utf8_bin sensible ou utf8_unicode_ci insensible ?

    impression

    impression

    lpr -P HPNB -o portrait -o natural-scaling=100 -o media=A4 <fichier>(si image petite)
    lpr -P HPNB -o scaling=100 -o orientation-requested=3 -o media=A4 <fichier> (si image grande)


    kprinter <fichier> -P <printer> -# <nb>

    libreoffice -pt <imprimante> *.odt
    libreoffice --print-to-file [-printer-name printer_name] [-outdir ouput_dir] files

    Shared printers

    • Linux vers Linux :

    Dans /etc/cups/cupsd.conf :

      • Listen 172.16.XX.1:631 en haut de fichier
      • Ajouter sur une nouvelle ligne aux 3 paragraphes <Location /> , <Location /admin> et <Location /admin/conf> : Allow from 172.16.XX.*
    • Windows vers Linux :

    droits /etc/cups/cupsd.conf + http://192.168.100.1:631/printers/HP

    Installation imprimantes

    lpadmin -p HPNB -v socket://HPNB:9100/ -P /usr/share/cups/model/manufacturer-PPDs/hplip-hpps/hp-color_laserjet_cp1515n-ps.ppd.gz -o printer-is-shared=false -E
    lpadmin -p HPCL -v socket://HPCL:9100/ -P /usr/share/cups/model/manufacturer-PPDs/hplip-hpps/hp-color_laserjet_cp1515n-ps.ppd.gz -o printer-is-shared=false -E
    
    lpoptions -d HPNB
    
    lpoptions -p HPNB -o PageSize=A4
    lpoptions -p HPNB -o HPServicesWeb=ProductManuals
    lpoptions -p HPNB -o HPTextNeutralGrays=Black
    lpoptions -p HPNB -o HPGraphicsNeutralGrays=Black
    lpoptions -p HPNB -o HPPhotoNeutralGrays=Black
    lpoptions -p HPNB -o CMAndResolution=Gray600x600dpi
    
    lpoptions -p HPCL -o PageSize=A4
    lpoptions -p HPCL -o HPServicesWeb=ProductManuals
    lpoptions -p HPCL -o HPTextNeutralGrays=ProcessBlack
    lpoptions -p HPCL -o HPGraphicsNeutralGrays=ProcessBlack
    lpoptions -p HPCL -o HPPhotoNeutralGrays=ProcessBlack
    lpoptions -p HPCL -o CMAndResolution=CMYKImageRET3600
    
    echo "ErrorPolicy retry-current-job" >> /etc/cups/cupsd.conf # désactive la mise hors ligne des imprimantes
    systemctl restart cups.service
    

    lpstat -p : voir la liste des imprimantes
    lpstat -v : voir les url

    lpoptions -p <nom_imprimante> -l : voir options de l'imprimante (selon pilote)

    lpoptions -d <nom_imprimante> : par defaut

    lpadmin -x <nom_imprimante> : supprimer

    scanner

    obligatoirement ajouter l'imprimante HP multifonction (pas le fax)

    vi /etc/sane.d/dll.conf
    décommenter :
    hpaio (à la fin)

    relancer service cups
    (sinon "fichier ppd non trouvé" par hp-setup)

    hp-setup -i 192.168.xx.22 --printer=INKJET -x --type=printer

    Installer le scanner par pilote escl par yast2 sinon resolution à 300dpi

    escl:http://192.168.XX.22:8080

    xsane hpaio:/net/Officejet_J6400_series?ip=<IP> &
    kooka

    scanimage -L : voir url

    scanimage -x 210 -y 297 -p -d $(scanimage -L | grep Officejet | grep escl | cut -d "\`" -f 2 | cut -d "'" -f 1) --format=jpeg --mode Gray/Color --resolution 600 > ex1.jpg

    scanimage -x 210 -y 297 --progress --batch=page%d.jpg --batch-start=1 --batch-increment=1 --format=jpeg --source ADF --mode Gray --resolution 600 -d $(scanimage -L | grep Officejet | grep escl | cut -d "\`" -f 2 | cut -d "'" -f 1)

    Reseau

    ip a

    ip r

    ip route add default via <IP>

    ip route delete default via <IP_passerelle>

    smbclient -L <IP> -U <User> -W <Workgroup> : découverte samba

    wget -r -k -E -np -x --limit-rate <ko/s> <url> : aspirer un site (recursif, liens, php, pas remonter arbo, pas suivre robot)

    trickle -d 50 youtube-dl...  : limite la vitesse à 50ko/s à tester

    socat TCP:212.27.48.10:80 TCP-LISTEN:643 : redirige 127.0.0.1:643 vers http://free.fr

    dig

    nslookup

    dhclient eth0

    aria2c : telechargement comme wget en mieux ?



    Redirection du service DNS :

    reseau=192.168.100.0
    dns_dest=8.8.8.8
    iptables -t nat -A PREROUTING ! -s $reseau/24 ! -d $reseau/24 -p tcp -m tcp --dport 53 -j DNAT --to-destination $dns_dest:53
    iptables -t nat -A PREROUTING ! -s $reseau/24 ! -d $reseau/24 -p udp -m udp --dport 53 -j DNAT --to-destination $dns_dest:53
    

    Serveur http simple

    woof

    En cours juin 2021

    zypper addrepo https://download.opensuse.org/repositories/network:utilities/openSUSE_Leap_15.1/network:utilities.repo
    zypper install woof
    
    woof -c 999 <fichier>
    puis wget 127.0.0.1:8080
    

    avec Php

    php -S 0.0.0.0:<port> -t /dossier #IP est celle coté serveur
    # attention, pointer le navigateur sur le fichier
    

    Avec NFS

    exportfs -o rw,sync,no_subtree_check,no_root_squash 192.168.X.0/24:/chemin/
    exportfs -u 192.168.X.0/24:/chemin/ : arrete le partage
    

    Twisted twistd

    twistd --nodaemon web --port tcp:<port> --path <path>

    Déprécié :

    ifconfig eth0 <IP> netmask 255.255.255.0 up

    ifconfig eth0 down

    route add -net 192.168.2.2 -net IP netmask mask gw IP

    route del -net 0.0.0.0 gw <IP> netmask 0.0.0.0

    arp -a <IP> : get MAC addr

    route add default gw <IP>

    Booter une installation Linux depuis une clé USB

    Extlinux ext

    • mkfs.ext4 -O ^has_journal /dev/sdX (oui, oui, avec un ^)
    • ou mkfs.ext2 /dev/sdX -L <label> ?
    • mount /dev/sdX /mnt/sdX
    • extlinux --install /mnt/sdX/
    • y copier au moins les 2 fichiers de demarrage de la distrib
    • extlinux.conf


    Penser à enlever la clé juste après le chargement de l'installateur afin d'eviter les mélanges de partitions

    Syslinux FAT

    Ne marche pas
    Note : le portable Asus ne boote pas sur support USB si pas FAT. Grrr...
    Lu dans la doc d'Arch : "Certain motherboard manufacturers have less compatibility for booting from USB devices than others. While an ext4 formatted USB drive may boot on a more recent computer, some computers may hang if the boot partition containing the kernel and initrd are not on a FAT16 partition"

    • creer une partition FAT ≤ 2 GB et rendre le flag de fdisk bootable (touche 'a') ?
    • fdisk, o  : create a new empty DOS partition table ?
    • mkfs -t vfat -F 16 -n FAT /dev/sdX1
    • fatlabel /dev/sdX1 FAT ?
    • Ne dois pas être monté
    • syslinux --install /dev/sdX1 ?
    • mount /dev/sdX1 /mnt/usb
    • y copier les fichiers
    • vi /mnt/usb/syslinux.cfg

    .conf

    à mettre avec le même nom de fichier sur la racine de la clé !

    PROMPT 1
    SAY Bonjour
    DEFAULT install
    LABEL install
      KERNEL /linux
      APPEND ro root=/dev/<sdb ou sdb1> initrd=/initrd
    

    SSH

    options de connection

    ssh-keygen
    PasswordAuthentication no pour désactiver l'accés par mot de passe

    ssh-agent

    password-less :
    ssh-agent
    ssh-agent -k pour killer
    ssh-add .ssh/cle
    ssh-add -l
    ssh -i <cle> <arg>

    vérifier la signature

    Coté distant :
    ssh -p <port> user@IP -o VisualHostKey=yes -o FingerprintHash=md5

    Coté local :
    ssh-keygen -lvf /etc/ssh/ssh_host_ecdsa_key
    ssh-keygen -lv -E md5 -f /etc/ssh/ssh_host_ed25519_key

    Execution d'un programme graphique sur un poste distant

    droits Can't open display

    distant : xhost +si:localuser:<user> ?

    ssh

    ssh -p port user@IP 'kdialog --display :0 --msgbox "texte"'
    ssh -p port user@IP 'konsole --display :0 -e <programme>'

    ou encore plus simple ssh -p port user@IP
    export DISPLAY=:0
    <programme>

    VNC

    coté distant :
    x11vnc -display :0 -auth /home/USER/.Xauthority -ncache --forever
    si personne n'est encore loggué :
    ps wwwwaux | grep auth
    puis x11vnc -display :0 -ncache -auth <chemin trouvé> EN ROOT
    coté local :
    vinagre <ip>
    vncviewer -viewonly <ip> ?

    x2go

    SSH obligatoire a priori.

    xpra

    • Sur le poste distant :

    xpra start :1500 --start-child=/opt/kde3/bin/konsole --bind-tcp=172.16.1.1:1500 --bind-tcp=172.16.2.1:1500 --password-file=/pass.txt

    • Pour arreter le serveur :

    kill -15 $(ps -edf | grep -v "grep" | grep "/usr/bin/python /usr/bin/xpra" | cut -d " " -f 4)

    • Sur le poste local :

    xpra attach tcp:<IP>:1500 --password-file=/pass.txt

    Attention, port > 1000 (?) sinon "connection refused"

    Janvier 2018 : marche avec un utilisateur, pas avec l'autre. POURQUOI ? ? ?

    RDP

    rdesktop -f -g 800x600 ip:port
    (-f fullscreen , Ctrl-Alt-Enter pour sortir)

    Depots

    OpenSUSE

    Voir carte SD.

    CentOS

    gpg --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7  # check https://www.centos.org/keys/#centos-7-signing-key
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    echo "proxy=http://192.168.XXX.XX:8080/" >> /etc/yum.conf # Si proxy
    
    wget -P /etc/pki/rpm-gpg/ https://rpmfind.net/linux/epel/RPM-GPG-KEY-EPEL-7 -e use_proxy=yes -e https_proxy=<IP>:<PORT>
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    
    #rpmfusion
    mkdir /tmp/rpmfusion
    wget -P /tmp/rpmfusion https://rpmfind.net/linux/rpmfusion/free/el/rpmfusion-free-release-7.noarch.rpm -e use_proxy=yes -e https_proxy=<IP>:<PORT>
    cd /tmp/rpmfusion/
    rpm2cpio rpmfusion-free-release-7.noarch.rpm | cpio -idmv
    mv /tmp/rpmfusion/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-el-7 /etc/pki/rpm-gpg/
    gpg --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-el-7 # check https://rpmfusion.org/keys
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-el-7
    
    
    #VirtualBox
    wget -P /etc/pki/rpm-gpg/ https://www.virtualbox.org/download/oracle_vbox.asc
    gpg --with-fingerprint /etc/pki/rpm-gpg/oracle_vbox.asc
    rpm --import /etc/pki/rpm-gpg/oracle_vbox.asc
    yum --enablerepo=virtualbox search VirtualBox | grep "Oracle VM"
    yum --enablerepo=virtualbox install VirtualBox-5.X
    /usr/lib/virtualbox/vboxdrv.sh setup
    
    • yum install yum-plugin-priorities
    • rm -Rf /etc/yum.repos.d/*

    Désactiver selinux et service firewalld

    • yum makecache
    • yum repolist -v
    • yum repolist all

    Fedora

    yum install yum-plugin-priorities
    rm -Rf /etc/yum.repos.d/*
    releasever=$(cat /etc/os-release | grep VERSION_ID | cut -d "=" -f 2)
    
    #base
    gpg --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-x86_64
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-x86_64
    
    #RPMfusion
    wget -P /etc/pki/rpm-gpg/ -O RPM-GPG-KEY-rpmfusion-free-fedora-$releasever "https://rpmfusion.org/keys?action=AttachFile&do=get&target=RPM-GPG-KEY-rpmfusion-free-fedora-$releasever"
    gpg --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-$releasever
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-$releasever 
    
    Vérifications des signatures en :
    https://getfedora.org/en/keys/
    https://rpmfusion.org/keys
    https://www.virtualbox.org/wiki/Linux_Downloads
    

    Mageia

    En cours...

    urpmi.removemedia -a
    urpmq --list-media
    
    urpmi.addmedia core_release https://fr2.rpmfind.net/linux/mageia/distrib/6/x86_64/media/core/release
    urpmi.addmedia --update core_update https://fr2.rpmfind.net/linux/mageia/distrib/6/x86_64/media/core/updates
    urpmi.addmedia tainted_release https://fr2.rpmfind.net/linux/mageia/distrib/6/x86_64/media/tainted/release
    urpmi.addmedia --update tainted_update https://fr2.rpmfind.net/linux/mageia/distrib/6/x86_64/media/tainted/updates
    
    urpmi --auto-update
    


    Divers

    xmodmap -e "keycode 66 =" / xmodmap -e "keycode 66 = Caps_Lock" : désactive la touche majuscule

    mkisofs -r -T -joliet-long -relaxed-filenames -o fichier.iso ./

    find ./ -type f -mtime +100 -exec ls {} \;  : execute la commande "ls" sur les fichiers plus anciens que 100 jours

    tune2fs -L disk /dev/sdX : A tester

    sudo /usr/sbin/pm-hibernate : hibernation

    rpm2cpio rpm.rpm | cpio -idmv : unpack rpm

    LD_LIBRARY_PATH=/install/zoom ./zoom : lancement sans installation prealable

    ghex / okteta : editeurs hexadecimals

    rpm -qa --queryformat '%{SIZE}\n' | awk '{sum += $1} END {printf("Total size in packages = %4.1f GB\n", sum/1024**3)}' : taille totale des paquets installés

    /etc/os-release : Savoir quelle version de Linux c'est

    xset s off -dpms ( old : xset s noblank ; xset s off ) : disable blank screen ?

    echo $var | xsel -i : copier ; xsel -o = coller

    base64 --wrap=0 in.dat > out.txt : converti fichier binaire en texte ascii

    cat file.txt | base64 -d > out.jpg : converti texte ascii en fichier binaire

    soffice --headless --convert-to csv:"Text - txt - csv (StarCalc)":"59,ANSI,1" --outdir /chemin fichier.csv : converti fichier ods en csv avec separateur ";"

    dd if=fichierN of=dest bs=1 count=taille_fichierN seek=decalage : concaténation de fichiers

    runuser -l user -c 'commande' : depuis root

    disable lid : paquet acpi + xfce4-power-manager-settings

    lxappearance

    chmod -R g=rwX /dossier : X=que sur les dossiers
    chmod u+rwX,g+rwX,o-rwx /path

    convert -resize 50%


    xortool-xor -n -f source -s "chaine" > dest

    mount -t ramfs -o size=10m ramfs /mnt/ram/ ; chown XXX.root /mnt/ram/ ; chmod 700 /mnt/ram/ : disque en mémoire vive. Attention, "df" ne voit rien.

    grub2 ajouter : "rw init=/bin/bash": lost password mot de passe perdu

    fuser -vm <dev> : voir quoi bloque

    echo "00:20:30" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }' : conversion secondes

    clavier francais

    • loadkeys /usr/share/kbd/keymaps/i386/azerty/fr.kmap.gz
    • En mode texte :loadkeys fr
    • En mode graphique : setxkbmap -layout fr

    Benchmark

    nexuiz-glx -benchmark demos/demo1 -nosound 2>&1 | egrep -e '[0-9]+ frames'

    NVIDIA Corporation GT215 [GeForce GT 240] (rev a2) Nouveau 76.9fps

    NVIDIA Corporation GF116 [GeForce GTX 550 Ti] Nividia 59.74 fps

    AMD 5450 : 80 cores / ?

    compression / décompression

    tarc_vffichier_destrépertoire
    xz (zip)fichier.tar.gz

    tar cfzv out.tar.gz /dossier1 /dossier2

    tar zcf dest.tar.gz -C <dossier> . (ne pas oublier le point !)

    rar x <fichier1>

    zip -r output.zip *

    Executable auto-extractible pour Windows sous Linux

    A tester

    • Charger l'installateur Windows de 7-zip en https://www.7-zip.org/
    • le décompresser (!) : 7z x 7zXXXX-x64.exe
    • Trouver le fichier 7z.sfx
    • Fichier de configuration a faire
    ;!@Install@!UTF-8!
    Title="Titre de la fenêtre"
    BeginPrompt=yes
    BeginPrompt="Voulez-vous installer la programme ?"
    ExecuteFile="cmd.exe"
    ExecuteParameters="/c ex2.bat"
    ;!@InstallEnd@!
    
    • Faire un cat comme : Copy /b 7zS.sfx + config.txt + archive.7z archive.exe
    • 7z a -mhe=on -p -sfx7z.sfx prog.exe data

    MSDOS emulation

    dosbox

    dosbox -c "mount E ~/atab/install/windows/gog"

    keyb fr

    fichier de configuration :

    fullresolution=desktop
    windowresolution=desktop
    keyboardlayout=fr
    

    google anciene mode

    http://www.google.com/search?q=%s&sourceid=opera&num=%i&ie=utf-8&oe=utf-8&hl=fr&complete=0
    google.fr/?complete=0
    images.google.com/images?q=""&sout=1
    news.google.fr/?complete=0
    video.google.fr/?complete=0&tbas=1&q=""&source=lnt&tbs=hq:h

    DNS

    dns1.isp.ovh.net/dns2.isp.ovh.net :

    nameserver 91.121.161.184
    nameserver 91.121.164.227

    OpenDNS :
    208.67.222.222
    208.67.220.220

    208.67.222.123 208.67.220.123 : DNS parental (à tester)

    conf email IMAP

    Type IMAP
    ssl0.ovh.net
    port :993
    SSL/TLS

    SMTP : ssl0.ovh.net
    port : 465
    SSL/TLS

    si pas de son sous OpenSuse

    mettre le user dans le groupe audio + reboot !
    soit :
    usermod -a -G audio <utilisateur>

    • kmix
    • gnome-volume-control
    • gnome-control-center
    • gmixer
    • pavucontrol
    • modprobe snd_hda_intel
    • alsamixer
    • pulseaudio &
    • alsaconf (en root)
    • alsactl kill rescan (en root)
    • rcalsasound restart
    • lsof /dev/dsp* /dev/audio* /dev/mixer* /dev/snd/* ?
    • essayer avec audacity


    commandes yast2 sound

    Commands:
        add       Add sound card. Without parameters, add first one detected.
        channels  List available volume channels of given card.
        modules   List all available sound kernel modules.
        playtest  Play test sound on given sound card
        remove    Remove sound cards
        set       Set the new values for given card parameters.
        show      Show the information of given sound card
        summary   Configuration summary of sound cards
        volume    Set the volume of specific channels of the given card.
    

    si polices trop petites

    taille 14

    • qtconfig
    • gtk-chtheme
    • à faire en root et non root
    • 120 dpi dans kcontrol, fonts

    Désactiver l'Automount

    A TESTER :

    /etc/hal/fdi/policy/95userpolicy :

    <?xml version="1.0" encoding="ISO-8859-1"?> 
    <!-- This .fdi file prevents automount for every media (storage devices)
    e.g. floppy, CD/DVD, USB-Stick, USB-Disk, external hard disk.
    The original SuSE SDB supplied version was modified to meet
    Brownout needs. -->
    
    <deviceinfo version="0.2">
    <device>
    <match key="storage.policy.should_mount" bool="true">
    <merge key="storage.policy.should_mount" type="bool">false</merge>
    </match>
    <match key="storage.automount_enabled_hint" bool="true">
    <merge key="storage.automount_enabled_hint" type="bool">false</merge>
    </match>
    <match key="storage.media_check_enabled" bool="true">
    <merge key="storage.media_check_enabled" type="bool">false</merge>
    </match>
    <match key="volume.policy.should_mount" bool="true">
    <merge key="volume.policy.should_mount" type="bool">false</merge>
    </match>
    <match key="volume.ignore" bool="false">
    <merge key="volume.ignore" type="bool">true</merge>
    </match>
    </device>
    </deviceinfo>
    

    Flux

    radios

    BBC : http://stream.live.vc.bbcmedia.co.uk/bbc_world_service
    RTL2 : http://streaming.radio.rtl2.fr:80/rtl2-1-44-96?.wma
    Radio Polonaise 1 : http://stream3.polskieradio.pl:8900/listen.pls
    Radio Polonaise international : http://mp3.polskieradio.pl:8914/
    RCF : http://www.streamakaci.com/radios/rcf.pls
    Radio Maria : http://heberg.radioludo.com:8003/stream
    Radio Notre Dame : http://windu.radionotredame.net/RadioNotreDame-Fm.mp3
    Radio Cause Commune : https://icecast.libre-a-toi.org:8444/voixdulat_mp3
    Libre à toi (Radio associative pro logiciel libre) : http://audio.libre-a-toi.org:8000/voixdulat_ogg
    Radio Doudou : http://www.radioking.com/play/radio-doudou

    Radio Esperance

    Antenne principale : http://stream.radio-esperance.net/esperance.mp3 Evangiles : https://esperance.streamakaci.com/parole-de-dieu.mp3
    Image video en direct : https://www.youtube.com/embed/Z6_-kbEgqWM

    TV

    KTO : m3u8 :

    #EXTM3U
    #EXT-X-VERSION:4
    #EXT-X-INDEPENDENT-SEGMENTS
    #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="flux",DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="FRA",URI="https://live-kto.akamaized.net/hls/live/2033284/KTO/04.m3u8"
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1927961,RESOLUTION=853x480,FRAME-RATE=25.000,AUDIO="audio"
    https://live-kto.akamaized.net/hls/live/2033284/KTO/03.m3u8
    

    sources URLs

    https://github.com/junguler/m3u-radio-music-playlists/tree/main/allradio.net
    https://raw.githubusercontent.com/Free-TV/IPTV/master/playlist.m3u8
    http://fluxradios.blogspot.com/
    https://iptvcat.com/
    

    Enregistrement

    timeout 10m cvlc <url> --sout file/ts:<file.mpg>
    timeout 10m cvlc <url> --sout file/mp3:<file.mp3>
    
    timeout 10m livestreamer -o <fichier.mpg> --player "vlc " "hds://http://livehdkto-lh.akamaihd.net/z/LiveStream_1@178944/manifest.f4m?g=KUSBXBWADFBA&hdcore=3.4.0" best
    
    mplayer -vf swapuv -dumpstream rtmp:// -dumpfile <fichier>
    

    libdvdcss2

    http://packman.links2linux.org/package/libdvdcss2

    https://download.videolan.org/pub/libdvdcss/last/

    xorg.conf


    liste des paquets à installer

    OpenSUSE

    qt5ct konsole libXmu-devel-32bit libXmu6-32bit dolphin systemsettings-kde3 systemsettings5 i3 dmenu i3status alttab gnumeric abiword xdotool-devel neovim kde3-quanta perl-XML-Simple perl-XML-LibXML-Simple perl-MP3-Tag geany woof python3-PyJWT python3-blinker python3-ecdsa python3-fake-useragent python3-mohawk python3-ntlm-auth python3-oauthlib python3-parse python3-progressbar python3-pyee python3-pykerberos python3-pyppeteer python3-pyquery python3-requestbuilder python3-requests-aws python3-requests-cache python3-requests-download python3-requests-file python3-requests-ftp python3-requests-futures python3-requests-hawk python3-requests-html python3-requests-kerberos python3-requests-mock python3-requests-oauthlib python3-requests-toolbelt python3-requests-unixsocket python3-requests_ntlm python3-requestsexceptions python3-w3lib python3-websockets aria2 aria2-devel xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-gtk-lang xdg-desktop-portal-lang chromium-ffmpeg-extra wine scribus libgpgmepp6-32bit fastboot android-tools android-tools-mkbootimg android-tools-partition fprintd pam_fprint easy-rsa vsftpd pavucontrol flatpak wireguard-tools evtest wxMaxima scrot kodi gnome-screenshot imlib2 mlocate drawing pinta xournalpp

    installation minimale

    kernel-source gcc gcc-c++ make dkms yast2-sshd clicfs openvpn acpi qupzilla mut squid rfkill kernel-source-vanilla rpm-build sparse rar cpanspec perl-MP3-Info perl-MP3-Tag git

    patterns

    zypper in -t pattern KDE-DEFAULT devel_qt5 games gnome_games kde_games laptop 64bit EducationDesktopapplications KidsEducationDesktopSoftware YouthEducationDesktopSoftware base books console devel_C_C++ devel_basis devel_gnome devel_ide devel_java devel_kde devel_kde_frameworks devel_mono devel_qt4 devel_qt5 devel_rpm_build devel_web devel_yast dhcp_dns_server directory_server enhanced_base enlightenment file_server fonts games gateway_server generic_server gnome gnome_basis imaging kde kde_plasma kvm_server lamp_server lxde lxqt mail_server mate mate_basis misc_server multimedia network_admin office print_server remote_desktop sw_management tabletpc technical_writing voip x11 x86 xen_server xfce xfce_basis yast2_basis yast2_install_wf

    Multimedia

    ffmpeg libavcodec-full vlc-codecs gstreamer-plugins-good gstreamer-plugins-libav

    zypper dist-upgrade --from packman --allow-vendor-change

    zypper install --from packman ffmpeg gstreamer-plugins-{good,bad,ugly,libav} libavcodec vlc-codecs

    DVD

    charger https://download.videolan.org/pub/libdvdcss/last/XXX
    ./configure --prefix=/home/user/chemin
    make
    
    En root :
    cp -r /chemin/lib64/* /usr/lib64/
    mkdir /usr/include/dvdcss
    cp -r /chemin/include/dvdcss/* /usr/include/dvdcss/
    

    Si jeux

    lutris innoextract FlightGear bzflag nexuiz abe blobby csmash emilia extreme-tuxracer gnuchess gtetrinet hedgewars jumpnbump lincity micropolis neverball nogravity OpenTTD ppracer Sauerbraten scorched3d torcs smc trigger-rally toycars ufoai worminator vdrift stuntrally gl-117 tremulous OpenArena Teeworlds 0ad supertux supertux2 lugaru warzone2100 supertuxkart frogatto Foobillard xmoto lbreakout2 Enigma gcompris gcompris-voices-en gcompris-voices-fr chromium-bsu ioquake3 openarena xonotic Reaction warsow smokin-guns urbanterror worldofpadman cubosphere neverball bomber dustrac dreamchess ksirk kolf minetest mrrescue naev teeworlds bitfighter knights xboard fairymax gnome-chess gnome-chess-lang eboard scid crafty gnuchess stockfish cutechess domination chickens pongix endless-sky assaultcube doomsday doomretro

    Echec

    xboard -fcp 'crafty xboard'

    xboard -ics -icshost freechess.org

    CentOS/Fedora

    Paquets

    gcc make cmake perl kernel-devel dkms acpi buildsys-build-rpmfusion-kerneldevpkgs-current.x86_64 libva-intel-driver openvpn grub-customizer wget wireless-tools nfs-utils radicale radicale-httpd nmap

    yum groupes

    • yum grouplist
    • yum groupinstall --setopt=group_package_types=mandatory,default,optional
    • yum list --showduplicates kernel
    "X Window system" "xfce" "GNOME Desktop" "MySQL Database client" "MySQL Database server" "NFS file server" "Network Storage Server" "development" @kde-desktop-environment
    

    Mageia

    task-lxqt kfind qt5ct wireguard-tools resolvconf

    Related Articles

    Wikiwand AI