Page Perso Linux

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

OpenSUSE sur VPS modifier

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 modifier

Janvier 2020, Novembre 2017, Juillet 2016.

Raid5 evolutif modifier

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 modifier

  • 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 modifier

  • 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 modifier

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 modifier

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 modifier

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 modifier

Programmes par default modifier

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 modifier

ssh :

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

commande ll (LL)
enlever proxy dans yum si proxy

KDE3 for ever modifier

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 modifier

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 modifier

Task switcher

Firefox modifier

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

about:config modifier

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

Chromium modifier

Extentions :

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

Opera customisation modifier

installation manuelle modifier

barre d'adresse modifier

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 modifier

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

Vivaldi modifier

Mars 2024

Appearance modifier

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

Tabs modifier

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

recherche rapide modifier

Virer les fenetres cookies RGPD modifier

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)”.

Kwrite modifier

barre d'outils
Pas sauvegarde automatique

Dolphin modifier

Page d’accueil
Use common properties
icones
couleur
police (general) taille 14
double clic

konsole sous KDE5 modifier

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

pour installer KDE3 ou LXQt modifier

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) modifier

sous kde4 modifier

  • 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 modifier

  • 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 modifier

tar xf crystalSVG.tar -C /usr/share/icons/
qt5ct : choisir crystalSVG
QT_QPA_PLATFORMTHEME=qt5ct dolphin &
  • Couleurs lignes bleu : qt5ct, color scheme copy edit. highlighted text inactive.
  • Couleurs teminal : passer par konsole kde plasma 5, dans /usr/bin/.

i3 modifier

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


Wayland modifier

~/.config/weston.ini :

[core]
backend=drm-backend.so

[shell]
client=weston-terminal

debranding de distribution modifier

En cours juin 2018.

Personalisation du boot de CentOS modifier

Avril 2018.

Isolinux modifier

  • 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 modifier

vi /etc/default/grub :

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

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

Plymouth modifier

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

NE MARCHE PAS avec Virtualbox.

SUSE modifier

En cours juin 2018.

kiwi modifier

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 modifier

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 modifier

Septembre 2021, Juin 2021, Janvier 2018, octobre 2012

VirtualBox modifier

usermod -a -G vboxusers user

Création par VBoxManage modifier

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 modifier

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 modifier

En cours juin 2021.

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

RemoteBox modifier

En cours.


/etc/default/virtualbox :

VBOXWEB_USER="moi"
VBOXWEB_TIMEOUT=0
VBOXWEB_LOGFILE="https://fr.m.wikipedia.org/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 modifier

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 modifier

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 modifier

Bug : affichage tout petit -> ajouter en option du kernel de grub : vga=839

Qemu modifier

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 modifier

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 modifier

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 modifier

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 modifier

  • 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 modifier

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

Réseau modifier

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 modifier

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 modifier

Penser à changer :

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

Xen modifier

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

LXC linux containers modifier

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 modifier

cryptage modifier

Avril 2024, Aout 2021, decembre 2017

par GPG modifier

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 modifier

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 modifier

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 modifier

Centos8 :

ssh-ed25519 : 256 (recommandé)

ecdsa-sha2-nistp256 : 256

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

Pseudo partition modifier

dd if=/dev/zero of=<file> bs=1024 count=4096 (attention, 4Mo au moins sinon erreurs)

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 modifier

cryptsetup luksFormat /dev/sdbX

cryptsetup luksOpen /dev/sdbX 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) modifier

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 modifier

OpenVPN modifier

easyrsa clés publiques clés privées modifier

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 modifier

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 modifier

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 modifier

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 modifier

  • 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 modifier

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é

par SSH modifier

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 modifier

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

Controle des fenetres distantes modifier

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 modifier

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 modifier

Mars 2018

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

Supression doublons modifier

Juillet 2019

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

Calendrier partagé modifier

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

logiciel serveur Radicale http://radicale.org/

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

Pièges :

  • Radicale ne trouve pas le fichier de conf seul sous CentOS, et ne dit rien ! Utiliser l'option "-C /etc/radicale/config".
  • hosts = 172.16.XX.X:<port>,172.16.XX.X:<port> : limite l'acces ?
  • chown -R radicale.radicale /var/log/radicale : plus la peine ?
  • Je n'arrive pas a créer un calendrier avec Thunderbird, alors que ca marche avec la page du serveur web intégré à Radicale ! ?
htpasswd /etc/radicale/users <user>

/etc/radicale/config : modifier

hosts = <IP>:<port>
type = htpasswd
htpasswd_filename = /etc/radicale/users
htpasswd_encryption = md5
filesystem_folder = /home/radicale/calendrier

[rights]
type=owner_only

/etc/systemd/system/radicale.service : modifier

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

[Service]
ExecStart=/usr/bin/radicale -d -C /etc/radicale/config
#Restart=on-failure
User=radicale
Group=radicale
Type=forking
#PIDFile=%h/pid.pid
#WorkingDirectory=
# 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=/chemin/radicale

[Install]
WantedBy=multi-user.target

Clients modifier

  • Evolution/Thunderbird/Lightning :
    • type CalDav, avec authentification, user radicale
    • Sur http://<IP>:<port>/radicale/caldav (le fichier est crée automatiquement)
  • KOrganizer : pas réussit sous KDE3

Requete sur Openstreetmap modifier

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 modifier

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 modifier

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


publipostage modifier

En ligne de commande avec Abiword modifier

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 modifier

  • 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 modifier

Octobre 2017, aout 2014.

Pas besoin de configurer Postfix si envoi uniquement.

Par mutt modifier

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 modifier

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 modifier

  • Installer les packages pear-mail ou php-pear

Client Google-Drive-ocamlfuse modifier

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 modifier

juin 2020. Septembre 2017

Apache pièges modifier

  • 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 modifier

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

Apache htaccess modifier

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 modifier

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 modifier


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

C++ compilé dans Apache modifier

  • 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 modifier

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 modifier

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 modifier


Septembre 2014

Logitech G11 modifier

Clavier Sun Microsystems modifier

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 modifier

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 modifier

Mars 2014, le Mac bleu boote. Octobre 2014.

dhcpd.conf modifier

tftp modifier

/etc/xinetd.d/tftp

/etc/init.d/xinetd restart

yaboot.conf à renommer modifier

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

Problèmes rencontrés modifier

  • 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 modifier

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) modifier

  • 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 modifier

pulseview

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

xrandr modifier

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 modifier

Avril 2024. Février 2020.

modprobe btusb
lsmod | grep bluetooth


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 modifier

avril 2024. En cours.

installer fprintd et pam_fprint

systemctl start fprintd.service

Pare-feux restrictif modifier


#!/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 modifier

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

KDE3 modifier

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 modifier

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 modifier

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 modifier

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

systemd modifier

Avril 2024, novembre 2013 et janvier 2014

runlevels nouvelle facon

Lid modifier

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 modifier

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 modifier

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 modifier

systemctl start openvpn@monvpn.service

systemctl enable openvpn@monvpn.service

systemctl is-enabled openvpn@monvpn

OpenCL modifier

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

Hardware Software Mémoire
Processing Element (PE) Work-item Private Memory
Compute Unit Workgroup Local Memory
Context ?
GPU Device Global Memory
Platform

Initialisations modifier

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 modifier

__private les datas d'un work-item seul
__local les datas des work-items d'un work-group
__constant de meme mais read-only pour le GPU
__global globale

Vulkan modifier

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 modifier

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 modifier

Octobre 2013

fstab modifier

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

LVM modifier

PV create
VG display
LV extend
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 modifier

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 modifier

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

Compilation noyau modifier

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

crontab modifier

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 modifier

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

MuseScore (éditions de partitions musicales) modifier

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 modifier

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 modifier

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 modifier

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 modifier

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 modifier

Sans fenetre (nogui) modifier

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

Fenetres sans Classes modifier

Avec lambda modifier

  • 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 modifier

Fenetres avec Classes modifier

Fenetre principale modifier

Fenetres secondaires modifier

Qt Wizard (assistants) modifier

Images modifier

	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 modifier

#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 modifier

.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 modifier

  • 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 modifier

Network modifier

  • 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é modifier

writeDatagramEncrypted : envoi
decryptDatagram : reception

Openssl modifier

gcc -lssl -lcrypto -o run prog.cpp

Remplir une liste déroulante modifier

Événement toute les x secondes modifier

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

QSettings modifier

	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 modifier

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

Qt 3D modifier

A TESTER...

(En Qt5)

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

OpenCV et Qt modifier

A TESTER...

	INCLUDEPATH += /usr/local/include/opencv
	LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui

	#include <opencv2/opencv.hpp>

Listes tableaux modifier

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 modifier

//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 modifier

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

QString et cout modifier

  • #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 modifier

	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++ modifier

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 modifier

On peut tester avec qmlscene

Fichier .pro modifier

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

Imports modifier

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 modifier

#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 modifier

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 modifier

Avril 2012, marche, sauf avec OpenCV. Juin 2015

Sans makefile modifier

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 modifier

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 modifier

cd cmake
cmake ..
make

Sous Linux vers Windows modifier

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 modifier

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 modifier

Ne pas faire ? :


Scripting bash modifier


$(()) : 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 modifier

#!/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 modifier

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

search and remplace modifier

  • 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 modifier

echo texte
set /p var=texte

Zenity boites de dialogues graphiques depuis bash modifier

zenity --info --text "abc"

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

Python modifier

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

Python avec Qt PyQt ou Pyside modifier

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


Inclusion de fonction C dans Python modifier

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 modifier

Lua modifier

#!/usr/bin/env lua

installation automatisé modifier

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

OpenSuse modifier

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

Elements modifier

  • 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 modifier

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 modifier

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 modifier

/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 modifier

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) modifier

  • 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 modifier

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 modifier

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

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 --verify openSUSE.iso.sha256.asc openSUSE.iso.sha256
cat openSUSE.iso.sha256
sha256sum openSUSE.iso

CentOS modifier

Janvier 2020, octobre 2019, janvier 2018

Par Grub2 et loopback si par installation linux deja existante modifier

  • 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 modifier

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 modifier

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 modifier

Attention, cette version efface automatiquement le disque dur.

Debian modifier

En cours juin 2018

preseeding par fichier preseed.cfg

Mageia modifier

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 modifier

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/

Squid modifier

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 modifier

juillet 2021.

/etc/unbound/unbound.conf :

interface: 192.168.100.2
access-control: 192.168.100.0/24 allow

rsync modifier

rsync -rlptP --dry-run --delete --exclude squidcache --exclude virtual --exclude .Trash-1000 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 /"

FTP modifier

en cours mai 2024.

Lu sur wikipedia :"TFTP lacks security"

PureFTP modifier

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 modifier

NFS modifier

/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 modifier

installer le bureau Trinity modifier

En cours janvier 2012

http://www.trinitydesktop.org/

Images modifier

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

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

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 modifier

ffmpeg modifier

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 modifier

  • 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 modifier

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

Ripper modifier

média commande
CD audio ripit -o <dossier sortie>
DVD vlc 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

Webcam modifier

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 modifier

SQL modifier

commandes de base modifier

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 modifier

/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 modifier

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 modifier

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 modifier

impression modifier

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 modifier

  • 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 modifier

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 modifier

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 modifier

ip a

ip r

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 modifier

woof modifier

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 modifier

php -S 0.0.0.0:<port> -t /dossier
# attention, pointer le navigateur sur le fichier

Twisted twistd modifier

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

Déprécié : modifier

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 modifier

Extlinux ext modifier

  • 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 modifier

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 modifier

à 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 modifier

options de connection modifier

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

ssh-agent modifier

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

vérifier la signature modifier

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 modifier

droits Can't open display modifier

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

ssh modifier

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 modifier

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 modifier

SSH obligatoire a priori.

xpra modifier

  • 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 modifier

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

Depots modifier

OpenSUSE modifier

Voir carte SD.

CentOS modifier

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 modifier

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 modifier

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 modifier

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 modifier

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

Benchmark modifier

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 modifier

tar c _ v f fichier_dest répertoire
x z (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 modifier

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="https://fr.m.wikipedia.org/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 modifier

dosbox modifier

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

keyb fr

fichier de configuration :

fullresolution=desktop
windowresolution=desktop
keyboardlayout=fr

google anciene mode modifier

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 modifier

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 modifier

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

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

si pas de son sous OpenSuse modifier

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 modifier

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 modifier

taille 14

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

Désactiver l'Automount modifier

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 modifier

radios modifier

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 modifier

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 modifier

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 modifier

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 modifier

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 modifier

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

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

xorg.conf modifier


liste des paquets à installer modifier

OpenSUSE modifier

qt5ct 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

installation minimale modifier

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 modifier

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 modifier

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

zypper in --repo packman ffmpeg lame gstreamer-plugins-bad gstreamer-plugins-ugly gstreamer-plugins-ugly-orig-addon gstreamer-plugins-libav libavdevice56 libavdevice58 libdvdcss2 vlc-codecs

zypper dup --allow-vendor-change --from packman

zypper in vlc vlc-codecs
zypper dup --from packman --allow-vendor-change

DVD modifier

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 modifier

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 modifier

xboard -fcp 'crafty xboard'

xboard -ics -icshost freechess.org

CentOS/Fedora modifier

Paquets modifier

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 modifier

  • 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 modifier

task-lxqt kfind qt5ct