Utilisateur:Dsant/Linux

Une page de Wikipédia, l'encyclopédie libre.
Page Perso Linux

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

OpenSUSE sur VPS[modifier | modifier le code]

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 | modifier le code]

Janvier 2020, Novembre 2017, Juillet 2016.

Raid5 evolutif[modifier | modifier le code]

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 | modifier le code]

  • 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 | modifier le code]

  • 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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

Programmes par default[modifier | modifier le code]

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 | modifier le code]

ssh :

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

commande ll (LL)
enlever proxy dans yum si proxy

KDE3 for ever[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

Task switcher

Firefox[modifier | modifier le code]

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

about:config[modifier | modifier le code]

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

Chromium[modifier | modifier le code]

Extentions :

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

Opera customisation[modifier | modifier le code]

installation manuelle[modifier | modifier le code]

barre d'adresse[modifier | modifier le code]

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 | modifier le code]

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

Vivaldi[modifier | modifier le code]

Mars 2024

Appearance[modifier | modifier le code]

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

Tabs[modifier | modifier le code]

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

recherche rapide[modifier | modifier le code]

Virer les fenetres cookies RGPD[modifier | modifier le code]

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 | modifier le code]

barre d'outils
Pas sauvegarde automatique

Dolphin[modifier | modifier le code]

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

konsole sous KDE5[modifier | modifier le code]

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

pour installer KDE3 ou LXQt[modifier | modifier le code]

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 | modifier le code]

sous kde4[modifier | modifier le code]

  • 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 | modifier le code]

  • 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 | modifier le code]

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 | modifier le code]

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


Wayland[modifier | modifier le code]

~/.config/weston.ini :

[core]
backend=drm-backend.so

[shell]
client=weston-terminal

debranding de distribution[modifier | modifier le code]

En cours juin 2018.

Personalisation du boot de CentOS[modifier | modifier le code]

Avril 2018.

Isolinux[modifier | modifier le code]

  • 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 | modifier le code]

vi /etc/default/grub :

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

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

Plymouth[modifier | modifier le code]

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

NE MARCHE PAS avec Virtualbox.

SUSE[modifier | modifier le code]

En cours juin 2018.

kiwi[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

Septembre 2021, Juin 2021, Janvier 2018, octobre 2012

VirtualBox[modifier | modifier le code]

usermod -a -G vboxusers user

Création par VBoxManage[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

En cours juin 2021.

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

RemoteBox[modifier | modifier le code]

En cours.


/etc/default/virtualbox :

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

touch /var/log/vboxwebservice.log

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

systemctl start vboxweb-service

A suivre...

Limite de debit[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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

Qemu[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

  • 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 | modifier le code]

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

Réseau[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

Penser à changer :

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

Xen[modifier | modifier le code]

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

LXC linux containers[modifier | modifier le code]

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 | modifier le code]

cryptage[modifier | modifier le code]

Avril 2024, Aout 2021, decembre 2017

par GPG[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

Centos8 :

ssh-ed25519 : 256 (recommandé)

ecdsa-sha2-nistp256 : 256

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

Pseudo partition[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

OpenVPN[modifier | modifier le code]

easyrsa clés publiques clés privées[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

  • 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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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

Controle des fenetres distantes[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

Mars 2018

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

Supression doublons[modifier | modifier le code]

Juillet 2019

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

Calendrier partagé[modifier | modifier le code]

Octobre 2019. Fevrier 2018. Janvier 2014.

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

logiciel serveur : Radicale Version 1.1 http://radicale.org/


Pièges :

  • Attention, le site officiel ne dit PAS que la doc est pour la version 2, or sur CentOS 7 et Mageia 6, c'est la version 1.1 !
  • 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 ?

/etc/radicale/config :[modifier | modifier le code]

hosts = 0.0.0.0:<port>
type = htpasswd
htpasswd_filename = /etc/radicale/users
htpasswd_encryption = sha1
type = filesystem
filesystem_folder = /home/radicale/calendars

crée le user avec son mot de passe ?
htpasswd -cs /etc/radicale/users radicale

/etc/systemd/system/radicale.service :[modifier | modifier le code]

[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 | modifier le code]

  • 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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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


publipostage[modifier | modifier le code]

En ligne de commande avec Abiword[modifier | modifier le code]

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 | modifier le code]

  • 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 | modifier le code]

Octobre 2017, aout 2014.

Pas besoin de configurer Postfix si envoi uniquement.

Par mutt[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

  • Installer les packages pear-mail ou php-pear

Client Google-Drive-ocamlfuse[modifier | modifier le code]

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 | modifier le code]

juin 2020. Septembre 2017

Apache pièges[modifier | modifier le code]

  • 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 | modifier le code]

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

Apache htaccess[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]


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

C++ compilé dans Apache[modifier | modifier le code]

  • 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 | modifier le code]

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 | modifier le code]

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 | modifier le code]


Septembre 2014

Logitech G11[modifier | modifier le code]

Clavier Sun Microsystems[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

Mars 2014, le Mac bleu boote. Octobre 2014.

dhcpd.conf[modifier | modifier le code]

tftp[modifier | modifier le code]

/etc/xinetd.d/tftp

/etc/init.d/xinetd restart

yaboot.conf à renommer[modifier | modifier le code]

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

Problèmes rencontrés[modifier | modifier le code]

  • 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 | modifier le code]

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 | modifier le code]

  • 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 | modifier le code]

pulseview

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

xrandr[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

avril 2024. En cours.

installer fprintd et pam_fprint

systemctl start fprintd.service

Pare-feux restrictif[modifier | modifier le code]


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

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

KDE3[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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

systemd[modifier | modifier le code]

Avril 2024, novembre 2013 et janvier 2014

runlevels nouvelle facon

Lid[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

systemctl start openvpn@monvpn.service

systemctl enable openvpn@monvpn.service

systemctl is-enabled openvpn@monvpn

OpenCL[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

__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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

Octobre 2013

fstab[modifier | modifier le code]

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

LVM[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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

Compilation noyau[modifier | modifier le code]

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

crontab[modifier | modifier le code]

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 | modifier le code]

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

MuseScore (éditions de partitions musicales)[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

Sans fenetre (nogui)[modifier | modifier le code]

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

Fenetres sans Classes[modifier | modifier le code]

Avec lambda[modifier | modifier le code]

  • 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 | modifier le code]

Fenetres avec Classes[modifier | modifier le code]

Fenetre principale[modifier | modifier le code]

Fenetres secondaires[modifier | modifier le code]

Qt Wizard (assistants)[modifier | modifier le code]

Images[modifier | modifier le code]

	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 | modifier le code]

#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 | modifier le code]

.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 | modifier le code]

  • 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 | modifier le code]

Network[modifier | modifier le code]

  • 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 | modifier le code]

writeDatagramEncrypted : envoi
decryptDatagram : reception

Openssl[modifier | modifier le code]

gcc -lssl -lcrypto -o run prog.cpp

Remplir une liste déroulante[modifier | modifier le code]

Événement toute les x secondes[modifier | modifier le code]

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

QSettings[modifier | modifier le code]

	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 | modifier le code]

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

Qt 3D[modifier | modifier le code]

A TESTER...

(En Qt5)

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

OpenCV et Qt[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

//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 | modifier le code]

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

QString et cout[modifier | modifier le code]

  • #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 | modifier le code]

	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 | modifier le code]

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 | modifier le code]

On peut tester avec qmlscene

Fichier .pro[modifier | modifier le code]

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

Imports[modifier | modifier le code]

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 | modifier le code]

#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 | modifier le code]

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 | modifier le code]

Avril 2012, marche, sauf avec OpenCV. Juin 2015

Sans makefile[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

cd cmake
cmake ..
make

Sous Linux vers Windows[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

Ne pas faire ? :


Scripting bash[modifier | modifier le code]


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

reset : refait apparaître le curseur

Copie clés[modifier | modifier le code]

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

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

search and remplace[modifier | modifier le code]

  • 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 | modifier le code]

echo texte
set /p var=texte

Zenity boites de dialogues graphiques depuis bash[modifier | modifier le code]

zenity --info --text "abc"

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

Python[modifier | modifier le code]

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

Python avec Qt PyQt ou Pyside[modifier | modifier le code]

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


Inclusion de fonction C dans Python[modifier | modifier le code]

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 | modifier le code]

Lua[modifier | modifier le code]

#!/usr/bin/env lua

installation automatisé[modifier | modifier le code]

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

OpenSuse[modifier | modifier le code]

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

Elements[modifier | modifier le code]

  • 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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

/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 | modifier le code]

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 | modifier le code]

  • 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 | modifier le code]

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 | modifier le code]

<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 | modifier le code]

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 | modifier le code]

Janvier 2020, octobre 2019, janvier 2018

Par Grub2 et loopback si par installation linux deja existante[modifier | modifier le code]

  • 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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

Attention, cette version efface automatiquement le disque dur.

Debian[modifier | modifier le code]

En cours juin 2018

preseeding par fichier preseed.cfg

Mageia[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

juillet 2021.

/etc/unbound/unbound.conf :

interface: 192.168.100.2
access-control: 192.168.100.0/24 allow

rsync[modifier | modifier le code]

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 | modifier le code]

en cours mai 2024.

Lu sur wikipedia :"TFTP lacks security"

PureFTP[modifier | modifier le code]

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 | modifier le code]

NFS[modifier | modifier le code]

/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 | modifier le code]

installer le bureau Trinity[modifier | modifier le code]

En cours janvier 2012

http://www.trinitydesktop.org/

Images[modifier | modifier le code]

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 | modifier le code]

ffmpeg[modifier | modifier le code]

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 | modifier le code]

  • 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 | modifier le code]

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

Ripper[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

SQL[modifier | modifier le code]

commandes de base[modifier | modifier le code]

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 | modifier le code]

/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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

impression[modifier | modifier le code]

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 | modifier le code]

  • 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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

woof[modifier | modifier le code]

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 | modifier le code]

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

Twisted twistd[modifier | modifier le code]

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

Déprécié :[modifier | modifier le code]

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 | modifier le code]

Extlinux ext[modifier | modifier le code]

  • 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 | modifier le code]

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 | modifier le code]

à 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 | modifier le code]

options de connection[modifier | modifier le code]

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

ssh-agent[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

droits Can't open display[modifier | modifier le code]

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

ssh[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

SSH obligatoire a priori.

xpra[modifier | modifier le code]

  • 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 | modifier le code]

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

Depots[modifier | modifier le code]

OpenSUSE[modifier | modifier le code]

Voir carte SD.

CentOS[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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

Benchmark[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

A tester

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

MSDOS emulation[modifier | modifier le code]

dosbox[modifier | modifier le code]

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

keyb fr

fichier de configuration :

fullresolution=desktop
windowresolution=desktop
keyboardlayout=fr

google anciene mode[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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

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

si pas de son sous OpenSuse[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

taille 14

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

Désactiver l'Automount[modifier | modifier le code]

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 | modifier le code]

radios[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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

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

xorg.conf[modifier | modifier le code]


liste des paquets à installer[modifier | modifier le code]

OpenSUSE[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

xboard -fcp 'crafty xboard'

xboard -ics -icshost freechess.org

CentOS/Fedora[modifier | modifier le code]

Paquets[modifier | modifier le code]

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 | modifier le code]

  • 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 | modifier le code]

task-lxqt kfind qt5ct