Utilisateur:Dsant/Linux
Page Perso | Linux |
Avant, je gardais mes notes dans un cahier papier...
OpenSUSE sur VPS
modifierSeptembre 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 :
<scripts> <pre-scripts config:type="list"> <script> <source> #!/bin/sh mkdir /sda1 mount /dev/sda1 /sda1 mv /sda1/root/vps.key.pub / # From old hard disk to memory umount /sda1 rmdir /sda1 </source> </script> </pre-scripts> <chroot-scripts config:type="list"> <script> <source> #!/bin/sh mkdir /mnt/root/.ssh # Bug ? ? Pas possible toucher au fichier directement. Passer par un nom de fichier temporaire ! ? donc : mv /vps.key.pub /mnt/root/.ssh/temp_authorized_keys # From memory to new hard disk </source> </script> </chroot-scripts> <post-scripts config:type="list"> <script> <source> #!/bin/sh mv /root/.ssh/temp_authorized_keys /root/.ssh/authorized_keys # Nom de fichier définitif </source> </script> </post-scripts> </scripts>
Raid
modifierJanvier 2020, Novembre 2017, Juillet 2016.
Raid5 evolutif
modifierEn cours.
Nécessite 9 slots.
Unité : relative au plus petit disque=1.
![Raid évolutif](http://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Raid_evolutif.svg/500px-Raid_evolutif.svg.png)
Mes besoins de stockage doublant tout les 1½ ans, cela correspond à l'achat d'un disque par grappe tout les 6 mois.
Création
modifier- Créer les partitions en type "Linux raid auto" "fd" ? ?
mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
Tests
modifier- mdadm --detail /dev/mdX
- smartctl -a /dev/sdX : informations
- smartctl -t short /dev/sdX : lance test court (20 min en fait)
- smartctl -l selftest /dev/sdX : voir resultat
Ajout
modifierumount <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
modifieren 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
modifierEn 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
modifierProgrammes par default
modifieren 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
modifierssh :
port sshd rootaccess=no ssh VisualHostKey=yes PasswordAuthentication=no
commande ll (LL)
enlever proxy dans yum si proxy
KDE3 for ever
modifierEn 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
[$Version] update_info=kded.upd:kde3.0,kaccel.upd:kde3.3/r1,klippershortcuts.upd:04112002,kwin.upd:kde3.2Xinerama,mouse_cursor_theme.upd:kde3.4.99,socks.upd:kde3.0/r1 [General] BrowserApplication[$e]=!/usr/bin/chromium [Global Shortcuts] Activate Window Demanding Attention=none Block Global Shortcuts=none Defaults timestamp=May 16 201807:41:41 Desktop Screenshot=Print Enable/Disable Clipboard Actions=none Halt without Confirmation=none Kill Window=none Lock Session=Alt+Ctrl+Delete Log Out=none Log Out Without Confirmation=none Manually Invoke Action on Current Clipboard=none Mouse Emulation=none Next Taskbar Entry=none Popup Launch Menu=Ctrl+Escape Previous Taskbar Entry=none Reboot without Confirmation=none Run Command=default(Alt+F2) Setup Window Shortcut=none Show Klipper Popup-Menu=none Show Taskmanager=none Show Window List=none Switch One Desktop Down=none Switch One Desktop Up=none Switch One Desktop to the Left=none Switch One Desktop to the Right=none Switch User=default(Alt+Ctrl+Insert) Switch to Desktop 1=Win+F1 Switch to Desktop 10=Win+F10 Switch to Desktop 11=none Switch to Desktop 12=none Switch to Desktop 13=none Switch to Desktop 14=none Switch to Desktop 15=none Switch to Desktop 16=none Switch to Desktop 17=none Switch to Desktop 18=none Switch to Desktop 19=none Switch to Desktop 2=Win+F2 Switch to Desktop 20=none Switch to Desktop 3=Win+F3 Switch to Desktop 4=Win+F4 Switch to Desktop 5=Win+F5 Switch to Desktop 6=Win+F6 Switch to Desktop 7=Win+F7 Switch to Desktop 8=Win+F8 Switch to Desktop 9=Win+F9 Switch to Next Desktop=none Switch to Next Keyboard Layout=default(Alt+Ctrl+K) Switch to Next Screen=none Switch to Previous Desktop=none Switch to Screen 0=none Switch to Screen 1=none Switch to Screen 2=none Switch to Screen 3=none Switch to Screen 4=none Switch to Screen 5=none Switch to Screen 6=none Switch to Screen 7=none Toggle Showing Desktop=Win+D;Win+M Toggle Window Raise/Lower=none Walk Through Desktop List=none Walk Through Desktop List (Reverse)=none Walk Through Desktops=Win+Tab Walk Through Desktops (Reverse)=Win+Shift+Tab Walk Through Windows=default(Alt+Tab) Walk Through Windows (Reverse)=default(Alt+Shift+Tab) Window Above Other Windows=none Window Below Other Windows=none Window Close=default(Alt+F4) Window Fullscreen=none Window Grow Horizontal=none Window Grow Vertical=none Window Lower=none Window Maximize=none Window Maximize Horizontal=none Window Maximize Vertical=none Window Minimize=none Window Move=none Window No Border=none Window On All Desktops=none Window One Desktop Down=none Window One Desktop Up=none Window One Desktop to the Left=none Window One Desktop to the Right=none Window Operations Menu=Alt+Space Window Pack Down=none Window Pack Left=none Window Pack Right=none Window Pack Up=none Window Raise=none Window Resize=none Window Screenshot=default(Alt+Print) Window Shade=none Window Shrink Horizontal=none Window Shrink Vertical=none Window to Desktop 1=none Window to Desktop 10=none Window to Desktop 11=none Window to Desktop 12=none Window to Desktop 13=none Window to Desktop 14=none Window to Desktop 15=none Window to Desktop 16=none Window to Desktop 17=none Window to Desktop 18=none Window to Desktop 19=none Window to Desktop 2=none Window to Desktop 20=none Window to Desktop 3=none Window to Desktop 4=none Window to Desktop 5=none Window to Desktop 6=none Window to Desktop 7=none Window to Desktop 8=none Window to Desktop 9=none Window to Next Desktop=none Window to Next Screen=none Window to Previous Desktop=none Window to Screen 0=none Window to Screen 1=none Window to Screen 2=none Window to Screen 3=none Window to Screen 4=none Window to Screen 5=none Window to Screen 6=none Window to Screen 7=none [KDE URL Restrictions] rule_1=redirect,,help.opensuse.org,,irc,irc.opensuse.org,,true rule_count=1 [KFileDialog Settings] Automatically select filename extension=true Height 1080=1055 Height 768=1055 LocationCombo Completionmode=5 PathCombo Completionmode=5 Recent URLs[$e]=$HOME/Downloads/,$HOME/atab/art/,$HOME/atab/tmp/,$HOME/atab/,/mnt/as/art/,$HOME/atab/tmp/makesusedvd/ Separate Directories=false Show Bookmarks=false Show Preview=false Show Speedbar=true Show hidden files=false Sort by=Name Sort case insensitively=true Sort directories first=true Sort reversed=false View Style=Simple Width 1366=1920 Width 1920=1920 [Locale] Country=us Language=en [Shortcuts] AddBookmark=Ctrl+D Back=Alt+Left Close=Ctrl+F4;Ctrl+W Forward=Alt+Right Home=Ctrl+Home PopupMenuContext=F10 Quit=none Reload=F5
Avec ChatGPT ! Attention, dit (souvent) des betises. Confond KDE3/4/5 :
Configuration
modifierkwriteconfig --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
modifierTask switcher
Firefox
modifierpage demarrage
lieu de sauvegarde
don't remember passwords
Auto Tab Discard ?
about:config
modifierdom.ipc.processCount = 200 browser.urlbar.maxRichResults = false
Chromium
modifierExtentions :
- AdblockPlus
- CrossFire Plus ou CrossFire
- Shortkeys
- Don't Close Window With Last Tab
Opera customisation
modifierinstallation manuelle
modifiermkdir /tmp/operainstall cp opera-1*.rpm /tmp/operainstall/opera.rpm cd /tmp/operainstall rpm2cpio opera.rpm | cpio -idmv
barre d'adresse
modifierDans 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
modifierPreferences, Search, Edit, Details, and uncheck "Use as speed dial search engine."
Vivaldi
modifierMars 2024
Appearance
modifier- Open settings in a tab
- Menu, horizontal
- zoom 200%
Tabs
modifier- décocher "keep window open when last tab is closed"
recherche rapide
modifier- wikipedia : remplacer en. par fr.
- google images : https://www.google.com/search?q=%s&source=hp&biw=1920&bih=947&sclient=img&udm=2
- youtube : https://www.youtube.com/results?search_query=%s
Virer les fenetres cookies RGPD
modifierAller 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
modifierbarre d'outils
Pas sauvegarde automatique
Dolphin
modifierPage d’accueil
Use common properties
icones
couleur
police (general) taille 14
double clic
konsole sous KDE5
modifiermenu
barre bas
taille police
couleur police #1504fa
couleur fond #fdfda4
pour installer KDE3 ou LXQt
modifierContrairement à 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)
modifiersous kde4
modifier- chercher "Crystalsvg for kde 4"
- gtk-update-icon-cache -f -t ~/.icons/<dossier> ?
- Couleurs : systemsettings, "colors used in applications", "Colors", "Colors", "View", "Alternate background" = 235;248;255 + Sauver le Scheme (1ere onglet) ? + relancer Dolphin
- Task switcher : systemsettings, Window Behavior,
- Chemin Konsole : dans konsole, manage profile, edit profile, tabs, "%D %u@%h" et dans Environment : <PS1=\u@\h:\`$(pwd)\` $ >
sous LxQT
modifier- Passer en Window Manager : lxqt-config, sessons settings : kwin_x11
- CrystalRemix : https://store.kde.org/p/1226130/
- Couleurs : systemsettings5, Colors, Edit Scheme, Colors, Color set : View, Alternate background = 235;248;255 + Sauver le Scheme ? + relancer Dolphin
- Task switcher : compact
- qt5ct et export QT_QPA_PLATFORMTHEME="qt5ct" ?
Dolphin5
modifier- CrystalSVG : https://store.kde.org/p/1253578
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
modifieralttab -theme crystalSVG -i 128x128 -s 1 -bg white -fg black -vertical
Wayland
modifier~/.config/weston.ini :
[core] backend=drm-backend.so [shell] client=weston-terminal
debranding de distribution
modifierEn cours juin 2018.
Personalisation du boot de CentOS
modifierAvril 2018.
Isolinux
modifier- Pour les accents, le fichier isolinux.cfg doit etre sauvé en IBM850
- Image en taille 1024x768 format png
- Si format ISO9660 (CDROM), les noms de fichiers sont limités à 8 caracteres+3. Donc mkisofs tronque, mais ne dit rien.
Grub 2
modifiervi /etc/default/grub :
GRUB_TERMINAL_OUTPUT="gfxterm" GRUB_BACKGROUND=/image.jpg GRUB_GFXMODE=1024x768
grub2-mkconfig -o /boot/grub2/grub.cfg
Plymouth
modifierplymouth-set-default-theme --list plymouth-set-default-theme -R charge dracut -f
NE MARCHE PAS avec Virtualbox.
SUSE
modifierEn cours juin 2018.
kiwi
modifierVoir 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
modifierhttps://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
modifierSeptembre 2021, Juin 2021, Janvier 2018, octobre 2012
VirtualBox
modifierusermod -a -G vboxusers user
Création par VBoxManage
modifierVBoxManage 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
modifierTé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
modifierEn cours juin 2021.
vboxmanage clonehd image.vdi disque.img --output=raw ?
RemoteBox
modifierEn cours.
/etc/default/virtualbox :
VBOXWEB_USER="moi" VBOXWEB_TIMEOUT=0 VBOXWEB_LOGFILE="https://fr.m.wikipedia.org/var/log/vboxwebservice.log" VBOXWEB_HOST="IP"
touch /var/log/vboxwebservice.log
chown moi:vboxusers /var/log/vboxwebservice.log
systemctl start vboxweb-service
A suivre...
Limite de debit
modifierVBoxManage 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
modifierSi 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
modifierBug : affichage tout petit -> ajouter en option du kernel de grub : vga=839
Qemu
modifierMai 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
modifierNe 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
modifierEn 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
modifierSeptembre 2021
- zypper in -t pattern kvm_server kvm_tools
- lancer service libvirtd
- virt-manager -c 'qemu+ssh://user@ip:port/system?keyfile=/cle.key' en non root
- virt-viewer -c qemu:///system ? : VNC like
- Si erreur sur usb : supprimer l'usb de la VM
nom=nom chemin=/virtual version=15.2 virt-install --virt-type=kvm --name=$nom --os-variant=opensuse$version --disk size=10,path=$chemin/vm/$nom.img --vcpu=1 --ram=2048 --location=$chemin/iso/openSUSE-Leap-$version-NET-x86_64.iso --network bridge:dsnet,model=virtio --graphics=none --console pty,target_type=serial --extra-args="console=ttyS0,115200n8 serial hostname=<nom> hostip=192.168.1. netmask=255.255.255.0 gateway=192.168.1.1 proxy=http://192.168.1.1:2476 install=http://195.220.108.108/linux/opensuse/distribution/leap/$version/repo/oss autoyast=http://192.168.1.1/suse.xml"
Pour sortir : ctrl + Alt_gr + ]
Si utilisateur non root
modifier- se mettre dans les groupes libvirt et kvm. Sinon "Unable to connect to libvirt qemu:///system" ou "unsupported configuration: CPU mode 'custom' for x86_64"
#Sinon l’utilisateur est isolé avec son environnement cp /etc/libvirt/libvirt.conf /home/$USER/.config/libvirt/ vi /home/$USER/.config/libvirt/libvirt.conf # décommenter uri_default = "qemu:///system"
virsh
modifierlist --all start reboot shutdown console : se connecter undefine : supprimer proprement destroy : supprimer façon brutale
Réseau
modifiervirsh 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
modifierfirewall-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
modifierPenser à changer :
- nom
- IP
- mots de passe
- clé ssh
- clé VPN
Xen
modifierLu dans la doc d'Arch-Linux : "KVM is similar to Xen in purpose but much simpler to get running".
LXC linux containers
modifierJe 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
modifiercryptage
modifierAvril 2024, Aout 2021, decembre 2017
par GPG
modifierDé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
modifieropenssl 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
modifierssh-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
modifierCentos8 :
ssh-ed25519 : 256 (recommandé)
ecdsa-sha2-nistp256 : 256
rsa-sha2-512,rsa-sha2-256 : 3072
Pseudo partition
modifierdd 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
modifiercryptsetup 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)
modifierDé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
modifierOpenVPN
modifiereasyrsa clés publiques clés privées
modifieren 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
modifierremote <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
modifierAvril 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
modifierAjouter sur le fichier de conf coté client :
route 192.168.reseau_destination.0 255.255.255.0
Et coté serveur :
script-security 2 route-up /chemin/openvpn_bridge.sh
Script openvpn_bridge.sh :
#!/bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward /usr/sbin/iptables -t nat -A POSTROUTING -s 172.16.XX.0/24 -o ethXX -j MASQUERADE
Installation sur poste client
modifier- installer le tunnel. "En non-enabled".
- /usr/bin/tunnel.sh :
#!/bin/bash service sshd start systemctl start openvpn@<monvpn>.service
- Ajouter sudo par yast2, ou "utilisateur ALL = (root) NOPASSWD:/usr/bin/tunnel.sh"
- racourci KDE3 avec : sudo /usr/bin/tunnel.sh
- Si sudo vers un autre utilisateur que root, ne pas oublier l'option "-u user" de sudo.
Si Windows
modifierEn 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
modifieravril 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
modifiersshd -D -f <fichier_config> -p <port>
#!/bin/bash rm -f ex2 rm -f ex3 touch ex3 chmod 600 ex3 for var2 in 1 2 do touch ex2 chmod 600 ex2 for var in 1 2 3 4 ; do ( xxd -l 2 -p /dev/urandom | tr -d '\n' >> ex2 ; echo '-' | tr -d '\n' >> ex2 ) ; done head -c -1 ex2 >> ex3 echo " " >> ex3 rm -f ex2 done cat ex3 rm -f ex3
Controle des fenetres distantes
modifierDecembre 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
modifierbug (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
modifierMars 2018
cd <dossier> rm ../out.odt zip -0 -X ../out.odt mimetype zip -r ../out.odt * -x mimetype
Supression doublons
modifierJuillet 2019
- Sélectionner la colonne
- Data/Filter/Standard filter
- Field name = none
- options :
- No duplication
- Copy result to
Calendrier partagé
modifierMai 2024. Octobre 2019. Février 2018. Janvier 2014.
logiciel serveur Radicale http://radicale.org/
Vacances scolaires en : https://www.data.gouv.fr/fr/datasets/le-calendrier-scolaire/
Pièges :
- Radicale ne trouve pas le fichier de conf seul sous CentOS, et ne dit rien ! Utiliser l'option "-C /etc/radicale/config".
- hosts = 172.16.XX.X:<port>,172.16.XX.X:<port> : limite l'acces ?
- chown -R radicale.radicale /var/log/radicale : plus la peine ?
- Les droits des fichiers dans /etc/radicale sont faux. Sinon, creation nouveau calendrier marche avec l'interface web mais pas avec Thunderbird.
htpasswd /etc/radicale/users <user>
/etc/radicale/config :
modifierhosts = <IP>:<port> type = htpasswd htpasswd_filename = /etc/radicale/users htpasswd_encryption = md5 filesystem_folder = /home/radicale/calendrier [rights] type=owner_only
/etc/systemd/system/radicale.service :
modifier[Unit] Description=A simple CalDAV (calendar) and CardDAV (contact) server After=network.target Requires=network.target [Service] ExecStart=/usr/bin/radicale -d -C /etc/radicale/config #Restart=on-failure User=radicale Group=radicale Type=forking #PIDFile=%h/pid.pid #WorkingDirectory= # Deny other users access to the calendar data #UMask=0027 # Optional security settings PrivateTmp=true ProtectSystem=strict ProtectHome=true PrivateDevices=true ProtectKernelTunables=true ProtectKernelModules=true ProtectControlGroups=true NoNewPrivileges=true ReadWritePaths=/chemin/radicale [Install] WantedBy=multi-user.target
Clients
modifier- Evolution/Thunderbird/Lightning :
- type CalDav, avec authentification, user radicale
- Sur http://<IP>:<port>/user/calendrier (le fichier est crée automatiquement)
- type CalDav, avec authentification, user radicale
- KOrganizer : pas réussit sous KDE3
Requete sur Openstreetmap
modifierSeptembre 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
modifierPar overpass-turbo.eu
modifiernode [leisure=playground] (45.6867243,4.7504157,45.8332862,4.9837133); out;
publipostage
modifierEn ligne de commande avec Abiword
modifiernovembre 2017, mars 2012.
- Créer le fichier csv, avec 1ere ligne noms de colonnes.
- Créer le document maître, puis menu Insert/Mail merge Field, cliquer sur "Open File".
- Re-cliquer sur Insert/Mail merge Field, inserer les champs.
- Fermer Abiword
- abiword -m <data.csv> --to=pdf --to=<out.pdf> <maitre.abw>
Avec Libreoffice
modifier- Le fichier source doit etre de type ods et 1ere ligne a les titres
- File / Wizard / Address data source
- attention : Other data source
- type : spreadsheet
- Ne pas cliquer sur "Field Assignement" = noms de colonnes pre-choisis !
- ctrl-shift-F4 / drag and drop
- Ne pas rentrer à la mains les champs par < >
- Imprimer pour lancer le publipostage
Envoi de mails en script
modifierOctobre 2017, aout 2014.
Pas besoin de configurer Postfix si envoi uniquement.
Par mutt
modifieruser="" 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
modifierexpediteur="" destinataire="" domaine="" surnom="" sujet="" echo "Entrez le mot de passe" read -s pass cat monmail_01.txt | mailx -a 'Content-Type: text/html' -S smtp="smtps://ssl0.ovh.net:465" -S smtp-auth=login -S smtp-auth-user=smtp@votreservice.com -S smtp-auth-password=$pass -S from="$surnom <$expediteur@$domaine>" -s $sujet $destinataire@$domaine
Par PHP
modifier- Installer les packages pear-mail ou php-pear
<?php include 'Mail.php'; include 'Mail/mime.php'; $from = "moi <user@mail.com>"; $to = "moi <user@mail.com>"; $subject = "test"; $username = ""; $password = ""; $text = 'Text version of email'; $html = '<html><body>HTML version of email</body></html>'; //$file = '/home/user/file.php'; $crlf = "\n"; $hdrs = array('From' => $from, 'To' => $to, 'Subject' => $subject ); $mime = new Mail_mime(array('eol' => $crlf)); $mime->setTXTBody($text); $mime->setHTMLBody($html); //$mime->addAttachment($file, 'text/plain'); $body = $mime->get(); $hdrs = $mime->headers($hdrs); $host = "ssl://ssl0.ovh.net"; $port = "465"; $smtp = Mail::factory('smtp', array ('host' => $host, 'port' => $port, 'auth' => true, 'username' => $username, 'password' => $password)); $mail = $smtp->send($to, $hdrs, $body); if (PEAR::isError($mail)) echo("\n" . $mail->getMessage() . "\n"); else echo("Message envoyé\n"); ?>
Client Google-Drive-ocamlfuse
modifierEn 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
modifierjuin 2020. Septembre 2017
Apache pièges
modifier- Le service, c'est "apache2", pas "apache". Naze...
- Pour désactiver la page de bienvenue, il faut commenter toutes les lignes de /etc/httpd/conf.d/welcome.conf
- Ne pas changer le DocumentRoot, mais créer un lien symbolique depuis /srv/www/htdocs (sur OpenSUSE).
PHP pièges
modifier- Si classes, l'accès aux variables de la classe se fait par "$this->variable" Sans "$" devant variable
Apache htaccess
modifierDans /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
modifierSi accès distant, dans /etc/httpd/conf.d/phpMyAdmin.conf remplacer "Require ip 127.0.0.1" par "Require ip <IP>" dans les deux chapitres "Apache 2.4".
Et relancer Apache.
Inclure du html dans du html
modifier<object type="text/html" align="middle" width="200" height="200" type="text/html" data="https://fr.m.wikipedia.org/fichier.php">Warning: html file could not be included.</object>
C++ compilé dans Apache
modifier- Mettre l'executable ELF dans /srv/www/cgi-bin/
- Appeller en http://<IP>/cgi-bin/<prog>
#include <stdlib.h> prinf("Content-Type: text/html; charset=UTF-8"); char * chaine = getenv("QUERY_STRING"); //retourne un pointeur sur une zone mémoire DEJA réservée par l'OS !
C++ dans html par PHP
modifier<?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
modifierMars 2015, c'est au point.
mkdir ./{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS,tmp}
ln -s <chemin>/rpmmacros ~/.rpmmacros
Fichier .rpmmacros :
%packager moi %_topdir <chemin> %_tmppath /var/tmp
Fichier spec :
Name : URL : site web Version : Release : release Packager : le packager Distribution : pour quelle distrib Summary : description en une ligne Group : Applications License : GPL %description description en plusieurs lignes de mon programe %build cd %{_sourcedir}; g++ -o hello hello.cpp %install rm -fR $RPM_BUILD_ROOT; mkdir -p $RPM_BUILD_ROOT/usr/bin; cd %{_sourcedir} mv hello $RPM_BUILD_ROOT/usr/bin/; %clean rm -rf $RPM_BUILD_ROOT/ %files %attr(755,root,root) /usr/bin/hello
rpmbuild -v -bb SPECS/hello.spec
mapping touches clavier
modifier
Septembre 2014
Logitech G11
modifierAncienement aout 2012 et décembre 2013, clavier Logitech G11 : ce clavier n'envoi pas de scancodes distincts pour les touches supplementaires = c'est foutu ou très difficile.
En plus, le clavier commence à lacher => poubelle. Echec.
+ il existait un projet "g15daemon" qui fonctionnait au debut. Or ce projet est mort depuis 2008.
Clavier Sun Microsystems
modifierNouvelle tentative avec clavier Sun Microsystems avec ses 11 touches supplémentaires : succés ! !
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Commands.jpg/200px-Commands.jpg)
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
modifierxbindkeys --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
modifierMars 2014, le Mac bleu boote. Octobre 2014.
dhcpd.conf
modifieroption domain-name "test"; default-lease-time 14400; ddns-update-style none; subnet 192.168.200.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.200.60 192.168.200.65; default-lease-time 14400; max-lease-time 172800; } host clientnameabcd { filename "yaboot"; hardware ethernet 00:05:02:49:77:8b; server-identifier 192.168.200.222; next-server 192.168.200.222; fixed-address 192.168.200.55; allow bootp; allow booting; option routers 192.168.200.1; }
tftp
modifier/etc/xinetd.d/tftp
service tftp { socket_type = dgram protocol = udp wait = yes flags = IPv6 IPv4 user = root server = /usr/sbin/in.tftpd server_args = -u tftp -s /mnt/securecard/pxelinux --verbose disable = no }
/etc/init.d/xinetd restart
yaboot.conf à renommer
modifier/srv/tftpboot/01-00-05-02-49-77-8b sous Debian
default=install root=/dev/ram message=/boot.msg image=/vmlinux label=install initrd=/initrd.gz initrd-size=21806 append="--" read-only image=/vmlinux label=expert initrd=/initrd.gz initrd-size=21806 append="priority=low --" read-only
Problèmes rencontrés
modifier- Le fichier yaboot.conf ou yaboot.cnf doit être renommé !
Sous Debian en "01-adr MAC". Sous Suse de yaboot.cnf en yaboot.conf ET attendre le 1er timeout. Ou mettre yaboot.conf-00-05-02-50-78-7a pour ne pas attendre. - chez Suse, yaboot.cnf ne contient que les entrées pour 64 bits. Peut-être 32 bits pas possible.
- il semblerait, comme lu, que le Bios ("Open Firmware") du Macintosh G3 ne soit pas capable de charger de trop gros fichiers. Message : "allocated 00b00000 bytes for executable" = 11Mo. Debian en dessous ok. Suse largement au dessus ? (48,5Mo pour le fichier initrd32)
Commandes Open Firmware
modifierappuyer Alt-Home-F-O
boot cd:,\\:tbxi
hattrib -b ?
boot ud:,\\:tbxi ?
dev / ls
ctrl+S : stop scroll
ctrl+A : restart scroll (ctrl+Q en qwerty)
boot enet:server_ip,file,client_ip
boot enet:server_ip (avec dhcpd)
Cas Linux-x86 (PC classique)
modifier- aouter "eth0" dans /etc/sysconfig/dhcpd, ligne DHCPD_INTERFACE="eth0"
- Copier pxelinux.0 depuis kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz//bios/core/ ou depuis /usr/share/syslinux/pxelinux.0
- ET bios/com32/elflink/ldlinux/ldlinux.c32
- attention a le pas confondre pxelinux.0 et lpxelinux.0 !
- creer un dossier pxelinux.cfg (obligatoire)
mount /dev/sdc1 /mnt/securecard mount -o noatime /dev/sdc2 /mnt/squidcache/ mount -o loop,ro,noatime /mnt/securecard/isos/openSUSE /mnt/securecard/pxelinux/iso/
- tftp ne prend pas les liens symboliques ! ?
- penser : lancer services xinetd(tftp), dhcpd et squid
dhcpd -f -cf /mnt/securecard/dhcpd.conf & squid -f /mnt/securecard/squid.conf umount /mnt/securecard/isos/openSUSE*.iso ; umount /mnt/securecard/ ; umount /mnt/squidcache/
DEFAULT linux32 SAY Bonjour LABEL linux32 kernel iso/boot/i386/loader/linux append ro initrd=iso/boot/i386/loader/initrd install=http://91.121.188.201/opensuse/distribution/13.1/repo/oss netsetup=dhcp autoyast=tftp://192.168.200.222/autoyast/autoyast.xml nomodeset
Electronique
modifierpulseview
sigrok-cli --driver fx2lafw -C A0 --time 3000 -O csv -o fichier.csv
xrandr
modifierxrandr --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
modifierAvril 2024. Février 2020.
modprobe btusb lsmod | grep bluetooth rfkill unblock bluetooth (éventuelement) systemctl start bluetooth.service bluetoothctl discoverable on/off devices : liste périphériques appairés. remove <mac> blueman
http://www.linux-magazine.com/Issues/2017/197/Command-Line-bluetoothctl
Lecteur d’empreintes finger reader
modifieravril 2024. En cours.
installer fprintd et pam_fprint
systemctl start fprintd.service
Pare-feux restrictif
modifier#!/bin/bash iptables -F iptables -X iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # local iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -i tun0 -j ACCEPT iptables -A OUTPUT -o tun0 -j ACCEPT iptables -A INPUT -i tun1 -j ACCEPT iptables -A OUTPUT -o tun1 -j ACCEPT # Connections etablies iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Ports serveurs # SSH iptables -A INPUT -p tcp --dport <port> -j ACCEPT # VPN iptables -A INPUT -p udp --dport <port>:<port> -j ACCEPT # Radicale iptables -A INPUT -p tcp --dport <port> -j ACCEPT # root iptables -A OUTPUT -p udp -m owner --uid-owner root -j ACCEPT iptables -A OUTPUT -p tcp -m owner --uid-owner root -j ACCEPT # ping ip_serveur=192.168.xxx.xxx iptables -A OUTPUT -p icmp --icmp-type 8 -s $ip_serveur -d 0/0 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p icmp --icmp-type 0 -s 0/0 -d $ip_serveur -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -d $ip_serveur -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type 0 -s $ip_serveur -d 0/0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # DNS iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT sleep 10 # A cause systemd su -c <prog> <user>
Wifi
modifierrfkill list : permet de savoir si interrupteur wifi "materiel"
KDE3
modifierinstaller : 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
modifierifconfig 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
modifierArreter 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
modifiernetwork={ ssid="essid" psk="cle" scan_ssid=1 proto=WPA2 key_mgmt=WPA-PSK group=CCMP TKIP pairwise=CCMP TKIP priority=5 }
systemd
modifierAvril 2024, novembre 2013 et janvier 2014
runlevels nouvelle facon
Lid
modifierComportement à 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
modifiersystemctl 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
modifiervi /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
modifiersystemctl start openvpn@monvpn.service
systemctl enable openvpn@monvpn.service
systemctl is-enabled openvpn@monvpn
OpenCL
modifierEn 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
modifierA TESTER
// nombre de platformes et IDs cl_uint nb_de_Platforms; if( !ClCheck(clGetPlatformIDs(0, NULL, &nb_de_Platforms))) //Nb de plateformes cl_platform_id mesplatformes[nb_de_Platforms]; if( !ClCheck(clGetPlatformIDs(nb_de_Platforms, mesplatformes, NULL))) //Informations sur les plateformes clGetPlatformInfo(mesplatformes[i], CL_PLATFORM_VENDOR, 128, vendor, NULL); clGetPlatformInfo(mesplatformes[i], CL_PLATFORM_NAME, 128, name, NULL); clGetPlatformInfo(mesplatformes[i], CL_PLATFORM_VERSION, 128, version, NULL); cl_device_id devices[100]; cl_uint devices_n = 0; if(!ClCheck(clGetDeviceIDs(mesplatformes[i], CL_DEVICE_TYPE_GPU, NULL, NULL, &nb_devices))) if(!ClCheck(clGetDeviceIDs(mesplatformes[i], CL_DEVICE_TYPE_GPU, nb_devices, devices, NULL)))
status = clGetDeviceIDs(platformIDs[i], CL_DEVICE_TYPE_ALL, 0, NULL, &numDevices);
Mémoires
modifier__private | les datas d'un work-item seul |
__local | les datas des work-items d'un work-group |
__constant | de meme mais read-only pour le GPU |
__global | globale |
Vulkan
modifierEn 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
modifierzypper 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
modifierOctobre 2013
fstab
modifier/dev/... /mnt/... ext4 defaults 0 0
LVM
modifierPV | create |
VG | display |
LV | extend |
remove |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/40/Lvm_simple.svg/220px-Lvm_simple.svg.png)
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
modifieruseradd (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
modifiermount.cifs -o uid=1000,user=Administrateur //<IP>/<partage> /mnt/...
Compilation noyau
modifiermake menuconfig
make gconfig
make xconfig
make
make install
grub2-mkconfig ou update-grub2
crontab
modifierUtiliser kcron ou :
min(0-59) heure(0-23) jour_mois(1-31) mois(1-12) jour_semaine(0-6, 0=dimanche) commande
/etc/cron.daily/script
echo "* * * * * user /prog.sh" > /etc/cron.d/prog : toute les minutes ? Et ligne vide à la fin fichier ?
systemctl restart cron.service ? ?
Commande at
modifier- avoir lancé le service atd
echo "commande" | at $heure:$minutes $jour.$mois.$annee
MuseScore (éditions de partitions musicales)
modifierJuillet 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
modifierEn 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
modifierEn 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
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
modifiergcc -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
modifierDocumentation 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
modifierQT += widgets network sql TEMPLATE = app DEPENDPATH += . INCLUDEPATH += . INCLUDEPATH += /usr/include/qxmpp-qt5/ LIBS += -L/usr/lib64 -L/lib64 -lssl -lcrypto -lgobject-2.0 -lglib-2.0 -lffi -lpcre -lrt -lX11 -ldl -lxcb -lgthread-2.0 -lglapi -lXext -lXdamage -lXfixes -lxcb-glx -lXxf86vm -ldrm -lXau -lX11-xcb -lQt5Network -lasound -lqxmpp TARGET = run FORMS = fichier.ui RESOURCES += fichier.qrc # Si integrer des fichiers (images...) dans l’executable. CONFIG += # Input HEADERS += main.cpp SOURCES += main.cpp
Sans fenetre (nogui)
modifier- QT -= gui
- #include <QCoreApplication>
- QCoreApplication app(argc, argv);
- classe herite de QObject
Fenetres sans Classes
modifierAvec lambda
modifier- Une seule fenetre (complexe), crée avec QtDesigner
- Un bouton de validation pour traitements des champs
https://doc.qt.io/qt-5/designer-using-a-ui-file.html
#include <QApplication> #include "fichier_ui.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow widget; Ui::fenetre_principale ui; ui.setupUi(&widget); QObject::connect( ui.mon_bouton, &QPushButton::clicked, [=]{ma_fonction(ui.ma_qlineedit->text() );} ); widget.showMaximized(); return app.exec(); }
- Ne pas oublier de compléter le fichier .pro
QDialog appelant un autre QDialog
modifierQDialog uipremier; Ui::premier premier; premier.setupUi(&uipremier); QDialog uideuxieme; Ui::deuxieme deuxieme; deuxieme.setupUi(&uideuxieme); QObject::connect(premier.deuxieme, &QPushButton::clicked, &uideuxieme, &QDialog::show); uipremier.showMaximized();
Fenetres avec Classes
modifierFenetre principale
modifier- main :
#include <QApplication>
#include "prog.cpp"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
myApp * Ui = new myApp;
Ui->show();
return app.exec();
}
- .cpp :
#include <QtGui>
#include <iostream>
using namespace std;
#include "prog.h"
myApp::myApp()
{
setupUi(this);
connect( monbouton, SIGNAL( clicked() ), this, SLOT( mafonction() ) ); ?
connect( actionaction, SIGNAL( triggered() ), SLOT( mafonction() ) );
}
void myApp::mafonction()
{
cout << "fonction utile" << endl;
}
- .h :
#include "ui_interface.h"
class myApp : public QMainWindow, public Ui::MainWindow
{
Q_OBJECT
public:
myApp();
public slots:
void mafonction();
};
Fenetres secondaires
modifier- créer la boite de dialogue avec Designer
- .cpp :
#include <iostream>
using namespace std;
#include "ui_win_prog.h"
class Win_prog : public QDialog, public Ui::Element_dans_Designer
{
Q_OBJECT
public:
Win_prog()
{
Widget->setFocus();
}
};
//La ligne qui évite de créer un fichier .h, sinon undefined vtable
#include "moc_fille.cpp"
- Dans la fontion appelante :
Fille * fenetre_fille = new Fille;
fenetre_fille->mon_widget->setText(arg);
uint ret=fenetre_fille->exec();
if(ret==QDialog::Accepted)
cout << "la sortie est=" << fenetre_fille->mon_widget->value() << endl;
- completer le fichier .pro
Qt Wizard (assistants)
modifier- Creer les boites de dialogues avec Designer.
main.cpp :
#include <QApplication>
#include "wizard.cpp"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Wizard_Class wizard;
wizard.show();
return app.exec();
}
wizard.cpp :
#include <QWizard>
#include "ui_page_A.h"
#include "ui_page_B.h"
#include "ui_page_C.h"
class Wizard_Class : public QWizard
{
Q_OBJECT
public:
enum { Page_A_Id, Page_B_Id, Page_C_Id};
QWizardPage * WizardPage_A;
QWizardPage * WizardPage_B;
QWizardPage * WizardPage_C;
Ui::Page_A_Ui * mon_Page_A_Ui;
Wizard_Class() : QWizard()
{
WizardPage_A = new QWizardPage;
WizardPage_B = new QWizardPage;
WizardPage_C = new QWizardPage;
mon_Page_A_Ui=new Ui::Page_A_Ui; //Si arguments à acceder dans la fenetre
mon_Page_A_Ui->setupUi(WizardPage_A);
(new Ui::Page_B_Ui)->setupUi(WizardPage_B); //Si pas d'arguements
(new Ui::Page_C_Ui)->setupUi(WizardPage_C);
setPage(Page_A_Id, WizardPage_A);
setPage(Page_B_Id, WizardPage_B);
setPage(Page_C_Id, WizardPage_C);
setStartId(Page_A_Id);
setWindowTitle(tr("Mon Wizard"));
}
int nextId() const;
};
int Wizard_Class::nextId() const
{
if (mon_Page_A_Ui->monbouton->isChecked())
return Wizard_Class::Page_C_Id;
else
return Wizard_Class::Page_B_Id;
}
#include "moc_wizard.cpp"
Images
modifierQImage monimage(512,512,QImage::Format_RGB32); monimage.load("image.jpg"); monimage.fill(QColor(Qt::white).rgb()); monimage.setPixel(x,y,qRgb(red,green,blue)); QPainter painter(&monimage); //Pour afficher du texte painter.drawText (50, 200, QString("A")); painter.fillRect(X,Y,large,haut,QBrush(QColor(Qt::red))); // ou des formes géométriques ui.monQLABEL->setPixmap(QPixmap("image.jpg")); /* monQLABEL est crée dans Designer. A appeler à chaque rafraichissement ? */
QFile et QDataStream
modifier#include <QFile> QFile fichier("file"); fichier.open(QIODevice::WriteOnly|QIODevice::Truncate); fichier.close();
QString :
#include <QTextStream> QString a("abc"); QTextStream stream(&fichier); stream << a;
QDataStream pour copie de fichier à fichier :
#include <QDataStream> QDataStream stream(&fichier2); stream << fichier1.readAll();
Intégrer des fichiers dans l’exécutable
modifier.pro :
RESOURCES += fichier.qrc
.qrc :
<!DOCTYPE RCC><RCC version="1.0"> <qresource> <file>image.jpg</file> <file alias="fichier.conf">../../dossier/fichier.conf</file> # alias nécessaire si chemin relatif ! </qresource> </RCC>
Dans le fichier source, chemin des fichiers en ":/image.jpg"
Qt Linguist
modifier- Dans le fichier .pro : TRANSLATION=translation_en.ts translation_es.ts
- lupdate project.pro -ts translation_en.ts translation_es.ts
- Release dans linguist
- Dans le main :
QTranslator translator;
translator.load("translation");
app.installTranslator(&translator);
Requete SQL Qt
modifier#include <QtSql>
QSqlDatabase base = QSqlDatabase::addDatabase("QMYSQL");
base.setHostName("localhost");
base.setUserName("user");
base.setPassword("pass");
base.setDatabaseName("base");
if(base.open())
{
QSqlQuery requete(base);
requete.prepare("SELECT champ FROM table WHERE (champ,champ)=(?,?)");
requete.addBindValue(val);
if( ! requete.exec() )
erreur();
while (requete.next())
cout << requete.value(0).toString().toStdString() << endl;
}
Network
modifier#include <QUdpSocket> myApp::myApp() { QUdpSocket * socket = new QUdpSocket(); socket->connectToHost(QHostAddress::LocalHost, Port_serveur); //Si bi-directionel, ouvre port data=QByteArray("abcd"); socket->writeDatagram ( data, QHostAddress::LocalHost, 2600 ); }
myApp::myApp() { udpSocket = new QUdpSocket(this); udpSocket->bind(QHostAddress::LocalHost, 2600); connect(socket, &<nomclasse>::readyRead, this, &<nomclasse>::<fonction>); //fonctions sans parenteses ! //connect(udpSocket, SIGNAL(readyRead()), SLOT(lecture())); } void myApp::lecture() { while (udpSocket->hasPendingDatagrams()) { QByteArray datagram; datagram.resize(udpSocket->pendingDatagramSize()); QHostAddress expediteur_adr; quint16 expediteur_port; udpSocket->readDatagram(datagram.data(), MAX_SIZE,& expediteur_adr, & expediteur_port); cout << datagram.data() << endl; } }
- 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é
modifierwriteDatagramEncrypted : envoi decryptDatagram : reception
Openssl
modifiergcc -lssl -lcrypto -o run prog.cpp
Remplir une liste déroulante
modifierFonction appelante :
QSqlQuery requete(base);
if( ! requete.exec("SELECT nom,id FROM table ORDER BY nom") )
erreur();
while(requete.next())
Classe->Function_addItem(requete.value(0).toString(), requete.value(1));
Fonction appelée :
void Classe::Function_addItem(QString nom, QVariant id)
{
ListeDeroulante->addItem(str,id);
}
Récupérer la valeur : ListeDeroulante->itemData(ListeDeroulante->currentIndex())); (retourne un QVariant)
Forcer la valeur : ListeDeroulante->setCurrentIndex(ListeDeroulante->findData(id));
Événement toute les x secondes
modifierbipper = new QTimer(this); connect(bipper, SIGNAL(timeout()), SLOT(mafonction())); bipper->start(1000); //temps en ms
QSettings
modifierQSettings * 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
modifierQCryptographicHash monHash(QCryptographicHash::Md5); monHash.addData(QByteArray & data) monHash.addData(char * data, int length) QByteArray.append(monHash.result());
Qt 3D
modifierA TESTER...
(En Qt5)
QT += 3dcore 3drenderer 3dinput #include <Qt3DCore> #include <Qt3DRenderer> #include <Qt3DInput>
OpenCV et Qt
modifierA TESTER...
INCLUDEPATH += /usr/local/include/opencv LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui #include <opencv2/opencv.hpp>
Listes tableaux
modifierQList<QString> liste; QList<QList<QString> > tableau2D; liste.append("ajout"); ou : liste << "un" << "deux"; if (liste.at(i) == "Jaune") : lecture seule
Execution programme depuis Qt
modifier//rendre executable QFile bat("fichier"); bat.open(QIODevice::ReadWrite); bat.setPermissions(QFileDevice::ReadOwner|QFileDevice::WriteOwner|QFileDevice::ExeOwner); //Pour des raisons inconnues, il faut redonner le chemin ? ? (absolutePath)... QProcess process; process.start("/bin/bash", QStringList() << "-c" << QFileInfo(bat).absolutePath()+ "/" + fichier"); process.waitForFinished(); bat.close();
Rendre synchrone :
QEventLoop pause; pause.exec(); : pause pause.quit(); : reprise
Racoucis clavier avec Alt
modifier- Nommer les boutons avec "&"
- Lier les <inputs> avec les <Labels> par "Buddies" dans Designer (menu Edit)
QString et cout
modifier- #include <iostream>
- using namespace std;
- .toStdString()
Ou surcharger << :
ostream& operator<<(ostream &flux,const QString &chaine) { flux << chaine.toStdString(); return(flux); }
Pour concaténer des chaines de caractères : commencer par un QString, puis "+".
qstring.toint() | string to int |
QString::number(1) | int to string |
.toStdString().c_str(); | QString to char * |
Listes
modifierQList<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++
modifierTypes 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
modifierOn peut tester avec qmlscene
Fichier .pro
modifierTEMPLATE = app QT += qml quick SOURCES += main.cpp
Imports
modifierAvec QT 5.9.4 :
import QtQuick 2.3 import QtQuick.Window 2.2 import QtQuick.Controls 1.2 import QtQuick.Layouts 1.0
main.cpp
modifier#include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char* argv[]) { QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("fichier.qml"))); return app.exec(); }
Compilation Qt pour Android
modifierjuillet 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
modifierAvril 2012, marche, sauf avec OpenCV. Juin 2015
Sans makefile
modifieri686-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
modifierfichier 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
modifiercd cmake
cmake ..
make
Sous Linux vers Windows
modifiersi 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
modifierJuin 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
modifierNe pas faire ? :
- Voir version de mingw en https://doc.qt.io/qt-5/supported-platforms.html
- Charger les sources de Qt en https://www.qt.io/offline-installers . Dézziper, (Très long 45min).
- Charger et lancer mingw-get-setup.exe en https://osdn.net/projects/mingw/ (Tres long aussi)
- Préparer une VM. MS propose des images de Windows gratuite en https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ Attention, il faut 30Go de place disque.
- Charger et installer Qt-Windows en https://www.qt.io/offline-installers. Penser à cocher "mingw" (ici version 5.3 pour Qt 5.9.4) et "Source". Long.
Scripting bash
modifier$(()) : calculs case $1 in lundi) echo "salade" ;; esac if [[ $nb -gt 1 ]] then echo "match" fi if [ $var = "ab" ] then bla else bla fi for v in *.txt; do echo "$v" ; done IFS=$(echo -en "\n\b") # evite que les espaces et les tabs créent de nouvelles lignes for var in $(cat liste) ; do echo $var ; done var=5 # si variable for ((i=1;i<=var;i++)) do echo $i done while read var1 var2 var3 var4 do done < fichier.csv while true;do ll | wc -l ; sleep 1 ; done find <fichier> -type f -mtime +30 -exec /bin/rm -Rf {} \; awk '/<ligne>/{print $4}' : 4eme element de la ligne contenant <ligne> ? unary operator expected. script : exécute avec variables d’environnement du shell #!/bin/bash : serait obligatoire si perl ect... echo "argument $1" make 2>&1 >/dev/null | less : erreurs dans less clear ; make 2>/tmp/err.txt ; cat /tmp/err.txt | more prog | tee -a out.txt : sortie standard vers ecran et fichier (-a append) echo bc read . /etc/os-release : met les valeurs du fichiers dans les variables ! pdfinfo file.pdf | grep Pages | awk '{print $2}' : nb de pages et awk traitement colones grep -i chipset /var/log/Xorg.0.log : modele de carte graphique AMD sans lspci glxinfo | grep -iE 'vendor:|device:|version:' pareil zypper dup --releasever=15.X ? w3m -dump <url> > fichier.txt : extraire texte d'une page web reset : refait apparaître le curseur
Copie clés
modifier#!/bin/bash echo "nom du fichier (sans extension) :" read fichier if [[ ! -d /mnt/usb ]] then mkdir /mnt/usb fi if [[ ! -f /etc/openvpn/$fichier.conf ]] then echo "le fichier .conf doit exister !" else mount /dev/disk/by-label/usbmove /mnt/usb if [[ ! -f /mnt/usb/$fichier.tar.ssl ]] #teste si fichier existe pas then echo "sens du poste vers cle usb" openssl rand -hex 255 > /mnt/usb/passe.txt openvpn --genkey secret /etc/openvpn/$fichier.key cd /etc/openvpn tar cf $fichier.tar $fichier.key $fichier.conf openssl aes-256-cbc -pbkdf2 -salt -in /etc/openvpn/$fichier.tar -out /mnt/usb/$fichier.tar.ssl -pass file:/mnt/usb/passe.txt rm /etc/openvpn/$fichier.tar else echo "sens de cle usb vers le poste" openssl aes-256-cbc -d -pbkdf2 -in /mnt/usb/$fichier.tar.ssl -out /etc/openvpn/$fichier.tar -pass file:/mnt/usb/passe.txt tar xf /etc/openvpn/$fichier.tar --directory /etc/openvpn/ dd if=/dev/urandom of=/mnt/usb/$fichier.tar.ssl bs=1024 count=100 # effacement rm /mnt/usb/$fichier.tar.ssl rm /etc/openvpn/$fichier.tar openssl rand -hex 255 > /mnt/usb/passe.txt # effacement fi umount /dev/disk/by-label/usbmove fi
Backup depuis SFTP
modifierecho "mot de passe :" read -s SSHPASS mkdir chemin cd chemin sshpass -e sftp user@ip:chemin << ! get fichier bye !
search and remplace
modifier- cat in.txt | sed s/"ancien"/"nouveau"/ > out.txt
- sed -i 's/OLD_VALUE/NEW_VALUE/g' <fichier>
Attention in.txt et out.txt doivent etre differents, sinon 2eme commande (dans ce cas écrase ancien fichier).
Special Windows
modifierecho texte set /p var=texte
Zenity boites de dialogues graphiques depuis bash
modifierzenity --info --text "abc" valeur=$(zenity --entry --title="titre" --text="texte" --entry-text="default" )
Python
modifierdef ma_function(a,b): print("Salut")
Python avec Qt PyQt ou Pyside
modifier- Créer l'interface avec QtDesigner
- pyside-uic interface.ui -o ui.py
import sys from PySide.QtGui import * from PySide.QtCore import * from <fichier> import <Ui_main_classe> # Attention, fichier sans extension .py ! ! class MainWindow(QMainWindow, <Ui_main_classe>): def __init__(self): super(MainWindow, self).__init__() self.setupUi(self) self.show() if __name__ == '__main__': app = QApplication(sys.argv) mainWin = MainWindow() ret = app.exec_() sys.exit( ret )
Inclusion de fonction C dans Python
modifierAjouter 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
modifierLua
modifier#!/usr/bin/env lua
installation automatisé
modifierSeptembre 2021, juin 2018, octobre 2016, mars 2013, Aout 2012.
OpenSuse
modifierfichier xml : yast2 autoyast file filename=/chemin/fichier.xml
Elements
modifier- DHCP
- DNS
- domain name
- clavier fr
- boot loader : chemins /mnt/boot/ + (hd0,0) ou (hd0,1)
- date and time
- Dire ne pas importer anciennes cles ssh
- services : sshd, nfs, nfsserver, rpcbind
- serveur de temps ?
- SSHD configuration + service sshd a activer
- utilisateur + 1er changement ?
- root password + 1er changement ?
- bug : etape 2 freeze si installation minimale sur Leap 42.1. Solution : mettre dêpot de update et meta-paquets :
- bug : sshd n'est lancé qu'a partir du 2eme reboot => prevoir un reboot script en post install si remote ssh ! ou ?
- bug leap 15.0 : clavier SUN détecté comme un clavier Mac ? Editer /etc/vconsole.conf et mettre KEYMAP=fr-latin9 + mkinitrd ?
<final_reboot config:type="boolean">true</final_reboot>
Si meta paquets
modifierzypper 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
modifierdefault install timeout 1 title install root (hd0,0) kernel /boot/suse/linux install=http://195.220.108.108/linux/opensuse/distribution/leap/15.2/repo/oss autoyast=device://sdaZ/boot/suse/autoinst.xml nomodeset initrd /boot/suse/initrd
Grub2
modifier/etc/grub.d/40_custom :
menuentry "suse"{ linux /boot/suse/linux hostip=192.168.1.99/24 gateway=192.168.1.1 proxy=http://192.168.1.1:2476 install=http://195.220.108.108/linux/opensuse/distribution/leap/15.4/repo/oss autoyast=device://disk/by-label/opensuseinstall/distrib/15.4/opensuse15.XX_01.xml initrd /boot/suse/initrd }
+ dans /etc/default/grub changer le ligne GRUB_DEFAULT
+ grub2-mkconfig -o /boot/grub2/grub.cfg
+ Pour donner un label à la partition source si XFS :
xfs_io -c "label -s mylabel" /
Par clé USB avec syslinux
modifierDEFAULT usb LABEL usb SAY Bonjour KERNEL /linux APPEND ro root=/dev/sdb hostip=192.168.1.99 netmask=255.255.255.0 gateway=192.168.1.1 proxy=http://192.168.1.1:2476 initrd=/initrd install=http://91.121.124.139/opensuse/distribution/leap/12.1/repo/oss autoyast=device://disk/by-label/LABEL/chemin/fichier.xml nomodeset
Dans une machine virtuelle (Virtualbox)
modifier- Une seule carte en host-only + Squid
- Penser a inclure yast2-bootloader ?
repasser en querty si systeme anglophone, sinon bug
En bootant depuis une NET install
modifierinstall=http://91.121.124.139/opensuse/distribution/leap/12.1/repo/oss autoyast=ftp://192.168.220.2/autoinst.xml ou depuis une ISO : netsetup=dhcp autoyast=ftp://192.168.220.2/iso.xml
Display manager
modifier<sysconfig config:type="list"> <sysconfig_entry> <!-- Set displaymanager to KDM --> <sysconfig_key>DISPLAYMANAGER</sysconfig_key> <sysconfig_path>/etc/sysconfig/displaymanager</sysconfig_path> <sysconfig_value>kdm</sysconfig_value> </sysconfig_entry> <sysconfig>
Verification image .asc
modifierpackage : 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
modifierJanvier 2020, octobre 2019, janvier 2018
Par Grub2 et loopback si par installation linux deja existante
modifier- Probleme : pas possible de supprimer la partition active ? ?
- e2label /dev/sdaX sdaX : fixe un label à la partition (blkid vérif)
- Copier le fichier iso sur la racine
/etc/grub.d/40_custom :
menuentry "CentOS" { set isofile='/centos.iso' set partition='4' loopback loop (hd0,$partition)$isofile linux (loop)/isolinux/vmlinuz keymap=fr inst.stage2=hd:LABEL=sda$partition:$isofile ro ks=hd:LABEL=sda$partition:/ks.cfg proxy="http://IP:port" initrd (loop)/isolinux/initrd.img }
- grub2-mkconfig -o /boot/grub2/grub.cfg
Par ISO si machine virtuelle
modifiermkdir 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
modifierSAY 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
modifierAttention, cette version efface automatiquement le disque dur.
install bootloader --location=mbr keyboard fr-latin1 lang en_US eula --agreed timezone --utc Europe/Paris network --bootproto=static --ip=192.168.100.44 --netmask=255.255.255.0 --gateway=192.168.100.1 --nameserver=8.8.8.8 --noipv6 --hostname=test reboot selinux --permissive firewall --disabled #authconfig --enableshadow --passalgo=sha256 #utiliser : grub-crypt --sha-256 ? rootpw "pass" group --name=lyon user --name=ds --groups=lyon --password=pass --uid=1000 url --url http://rpmfind.net/linux/centos/7/os/x86_64/ %packages @base @core @Console Internet Tools @X Window system @GNOME Desktop @System Management @Graphical Administration Tools man %end %pre echo "195.220.108.108 rpmfind.net" >> /etc/hosts echo "clearpart --drives=sda --all --initlabel --disklabel=gpt" >> /tmp/partition_layout echo "autopart" >> /tmp/partition_layout # Ou bien : echo "part / --onpart=LABEL="nom_unique_partition" --fstype=ext4" > /tmp/partition_layout echo "part swap --onpart=UUID="d8115362-b5e5-4175-b029-7a756ef515be" --fstype=swap" >> /tmp/partition_layout echo "part /home/ds/atab --onpart=UUID="3ff70295-577f-4ac9-9432-238a0dc61aef" --noformat" >> /tmp/partition_layout %end %post --nochroot #Probleme de licence à valider : systemctl disable initial-setup.service cp /mnt/install/repo/script/postinstall.sh /mnt/sysimage/usr/bin/ echo "/usr/bin/postinstall.sh" >> /mnt/sysimage/etc/rc.d/rc.local %end
Debian
modifierEn cours juin 2018
preseeding par fichier preseed.cfg
Mageia
modifierEn 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
modifierinstall=disk:/opensuse/distribution/leap/12.0/repo/oss?device=sdX
rsync -r -P -t -l --progress rsync://OVH/opensuse/distribution/leap/12.2/ /home/$USER/sdb1/opensuse/distribution/12.2/
rsync -r -P -t -l --progress rsync://OVH/opensuse/update/12.2* /home/$USER/sdb1/opensuse/update/
rootkit detection
modifierIdéalement lancer rkhunter depuis un live CD.
rkhunter --propupd --pkgmgr rpm rkhunter --update rkhunter --check
Squid
modifiersquid -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
modifierjuillet 2021.
/etc/unbound/unbound.conf :
interface: 192.168.100.2 access-control: 192.168.100.0/24 allow
rsync
modifierrsync -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
modifieren cours mai 2024.
Lu sur wikipedia :"TFTP lacks security"
PureFTP
modifierPas 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
modifierNFS
modifier/etc/export :
/data/ 172.16.1.0/24(rw,sync,no_subtree_check)
Plus besoin fsid=0,anonuid=1000,anongid=1000 ?
Attention, l'étoile "*" ne marche plus dans les versions recentes, utiliser "/24"
exportfs -a
Si NFS avec Virtualbox, il faut une seule carte reseau en hostonly + proxy Squid.
showmount -e <IP> : découverte NFS
mount -t nfs4 <dir> <dir>
Si "access denied by server" : ne pas mettre root mais nobody en propriétaire des dossiers.
Samba
modifierinstaller le bureau Trinity
modifierEn cours janvier 2012
http://www.trinitydesktop.org/
Images
modifiervisionneuse : 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
modifierffmpeg
modifierffmpeg -i <fichier_in> <fichier_out.mp3> : extraire son d'une video
ffmpeg -encoders
ffmpeg -i video.mp4 -vf scale=160:120 video.mpg
ffmpeg -i in.mp4 -ss 00:00:00 -to 00:00:00 -strict -2 out.mp4 # Extraire partie d'une video. Attention, ordre arguments important !
ffmpeg -loop 1 -i image.jpg -i son.mp3 -shortest -acodec aac -ar 48000 -vcodec h264 -t 5 out.mp4 : video à partir d'une image
ffmpeg -i in.mp4 -qscale:v 1 -qmin 1 -ss 00:00:00 -to 00:00:00 -f image2 image-%4d.jpeg : extraire images d'une video
ffmpeg -i in.mp4 -qscale 0... Attention, sinon qualité tres reduite moche
ffmpeg -i in.mp4 -qscale 0 -vf "fade=type=in:duration=1,fade=type=out:duration=1:start_time=<duree_film_moins_fade>" -c:a copy out.mp4 #effet transition 1s debut et fin
ffmpeg -f concat -safe 0 -i liste.txt -c copy out.mp4 : concatener videos, avec liste.txt contient lignes : "file <fichier.mp4>"
VLC
modifier- serveur :
cvlc ex1.mp3 --sout udp://<IP client>:1234 --loop --sout-udp-caching=2000
- client :
cvlc udp://<IP serveur> --udp-caching=<mili-secondes>
+ codec installé des 2 cotés !
+ alsa://plughw:0,0 ?
+ arecord -l permet savoir quoi present
vlc --no-video -Z <dossier> : lecture random sans image
vlc --start-time=<debut (s)> --stop-time=<fin (s)> <file.mpg> Attention, temps en secondes !
xine
modifierxine -V none -l=shuffle * : random audio only
Ripper
modifiermé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
modifiervlc 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
modifierSQL
modifiercommandes de base
modifierSHOW DATABASES
USE base
SHOW TABLES
DESCRIBLE table
SELECT champ,champ FROM table WHERE condition;
INSERT INTO table (champ_a,champ_b) VALUES('a','b');
UPDATE table SET champ_a=a WHERE champ_b='b';
DELETE FROM table WHERE champ='a';
TRUNCATE TABLE table;
SOURCE fichier
CREATE/DROP user <user>;
les mots de passe
modifier/usr/bin/mysql_secure_installation
mysqladmin -u root password : initial
mysqladmin -u root -p password : changer. Attention, il demande d'abord l'ancien mot de passe.
backup
modifiermysqldump -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
modifiermysql -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
modifierimpression
modifierlpr -P HPNB -o portrait -o natural-scaling=100 -o media=A4 <fichier>(si image petite)
lpr -P HPNB -o scaling=100 -o orientation-requested=3 -o media=A4 <fichier> (si image grande)
kprinter <fichier> -P <printer> -# <nb>
libreoffice -pt <imprimante> *.odt
libreoffice --print-to-file [-printer-name printer_name] [-outdir ouput_dir] files
Shared printers
modifier- Linux vers Linux :
Dans /etc/cups/cupsd.conf :
- Listen 172.16.XX.1:631 en haut de fichier
- Ajouter sur une nouvelle ligne aux 3 paragraphes <Location /> , <Location /admin> et <Location /admin/conf> : Allow from 172.16.XX.*
- Windows vers Linux :
droits /etc/cups/cupsd.conf + http://192.168.100.1:631/printers/HP
Installation imprimantes
modifierlpadmin -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
modifierobligatoirement 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
modifierip 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
modifierwoof
modifierEn 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
modifierphp -S 0.0.0.0:<port> -t /dossier # attention, pointer le navigateur sur le fichier
Twisted twistd
modifiertwistd --nodaemon web --port tcp:<port> --path <path>
Déprécié :
modifierifconfig 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
modifierExtlinux ext
modifier- mkfs.ext4 -O ^has_journal /dev/sdX (oui, oui, avec un ^)
- ou mkfs.ext2 /dev/sdX -L <label> ?
- mount /dev/sdX /mnt/sdX
- extlinux --install /mnt/sdX/
- y copier au moins les 2 fichiers de demarrage de la distrib
- extlinux.conf
Penser à enlever la clé juste après le chargement de l'installateur afin d'eviter les mélanges de partitions
Syslinux FAT
modifierNe marche pas
Note : le portable Asus ne boote pas sur support USB si pas FAT. Grrr...
Lu dans la doc d'Arch : "Certain motherboard manufacturers have less compatibility for booting from USB devices than others. While an ext4 formatted USB drive may boot on a more recent computer, some computers may hang if the boot partition containing the kernel and initrd are not on a FAT16 partition"
- creer une partition FAT ≤ 2 GB et rendre le flag de fdisk bootable (touche 'a') ?
- fdisk, o : create a new empty DOS partition table ?
- mkfs -t vfat -F 16 -n FAT /dev/sdX1
- fatlabel /dev/sdX1 FAT ?
- Ne dois pas être monté
- syslinux --install /dev/sdX1 ?
- mount /dev/sdX1 /mnt/usb
- y copier les fichiers
- vi /mnt/usb/syslinux.cfg
.conf
modifierà mettre avec le même nom de fichier sur la racine de la clé !
PROMPT 1 SAY Bonjour DEFAULT install LABEL install KERNEL /linux APPEND ro root=/dev/<sdb ou sdb1> initrd=/initrd
SSH
modifieroptions de connection
modifierssh-keygen
PasswordAuthentication no pour désactiver l'accés par mot de passe
ssh-agent
modifierpassword-less :
ssh-agent
ssh-agent -k pour killer
ssh-add .ssh/cle
ssh-add -l
ssh -i <cle> <arg>
vérifier la signature
modifierCoté 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
modifierdroits Can't open display
modifierdistant : xhost +si:localuser:<user> ?
ssh
modifierssh -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
modifiercoté 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
modifierSSH obligatoire a priori.
xpra
modifier- Sur le poste distant :
xpra start :1500 --start-child=/opt/kde3/bin/konsole --bind-tcp=172.16.1.1:1500 --bind-tcp=172.16.2.1:1500 --password-file=/pass.txt
- Pour arreter le serveur :
kill -15 $(ps -edf | grep -v "grep" | grep "/usr/bin/python /usr/bin/xpra" | cut -d " " -f 4)
- Sur le poste local :
xpra attach tcp:<IP>:1500 --password-file=/pass.txt
Attention, port > 1000 (?) sinon "connection refused"
Janvier 2018 : marche avec un utilisateur, pas avec l'autre. POURQUOI ? ? ?
RDP
modifierrdesktop -f -g 800x600 ip:port
(-f fullscreen , Ctrl-Alt-Enter pour sortir)
Depots
modifierOpenSUSE
modifierVoir carte SD.
# opensuse.mirrors.ovh.net #ip_ovh=91.121.124.139 #ip_ovh=91.121.189.201 #ip_ovh=91.121.188.201 ip_ovh=213.32.5.7 # fr2.rpmfind.net Lyon ip_rpmfind=195.220.108.108 # download.opensuse.org ip_opensuse=195.135.221.134 #ip_opensuse=80.237.136.138 #ip_videolan=88.191.250.9 ip_videolan=88.191.250.2 # They say do not mix VLC and packman, really ? #ip_erlangen=131.188.12.212 # ftp.gwdg.de ip_gwdg=134.76.12.6 # download.nvidia.com #ip_trinity=108.166.152.51 ip_trinity=37.205.10.16 echo "$ip_ovh$ip_rpmfind$ip_opensuse$ip_videolan$ip_gwdg$ip_trinity" | sha512sum /etc/zypp/zypp.conf : download.max_silent_tries=0 (30%) et commit.downloadMode = DownloadInHeaps (45%) zypper lr -d zypper rr <numéros existants> suse_ver=12.0 suse_ver=$(cat /etc/SuSE-release | grep VERSION | cut -c11-16) echo $suse_ver #"Ne faites jamais confiance à votre DNS" The Pirate Bay, sur Numerama zypper ar http://$ip_rpmfind/linux/opensuse/distribution/leap/$suse_ver/repo/oss "oss" zypper ar http://$ip_rpmfind/linux/opensuse/update/leap/$suse_ver/oss "update" #zypper ar ftp://$ip_rpmfind/linux/opensuse/distribution/$suse_ver/repo/non-oss "non-oss" zypper ar http://$ip_gwdg/pub/opensuse/repositories/GNOME:/Apps/openSUSE_Leap_$suse_ver "gnome_apps" zypper ar http://$ip_gwdg/pub/opensuse/repositories/KDE:/KDE3/openSUSE_Leap_$suse_ver/ "kde3" zypper ar http://$ip_gwdg/pub/opensuse/repositories/KDE:/Qt5/openSUSE_Leap_$suse_ver/ "Qt5" zypper ar http://$ip_gwdg/pub/opensuse/repositories/hamradio/openSUSE_Leap_$suse_ver/ "hamradio" zypper ar http://$ip_gwdg/pub/opensuse/repositories/electronics/openSUSE_Leap_$suse_ver/ "electronics" #zypper ar http://$ip_gwdg/pub/opensuse/repositories/X11:/QtDesktop/openSUSE_Leap_$suse_ver/ "X11" zypper ar http://$ip_gwdg/pub/opensuse/repositories/LibreOffice:/5.4/openSUSE_Leap_$suse_ver "libreoffice" zypper ar http://$ip_gwdg/pub/opensuse/repositories/network/openSUSE_Leap_$suse_ver/ "network" #zypper ar http://$ip_opensuse/pub/opensuse/repositories/openSUSE:/Factory:/Contrib/openSUSE_$suse_ver/ "contrib" #zypper ar http://$ip_gwdg/pub/opensuse/repositories/openSUSE:/$suse_ver:/Contrib/standard/ "contrib" zypper ar http://$ip_gwdg/pub/opensuse/repositories/Education/openSUSE_Leap_$suse_ver/ "education" zypper ar http://$ip_gwdg/pub/opensuse/repositories/windows:/mingw:/win32/openSUSE_Leap_$suse_ver/ mingw zypper ar http://$ip_gwdg/pub/opensuse/repositories/games/openSUSE_Leap_$suse_ver/ jeux zypper ar http://$ip_gwdg/pub/opensuse/repositories/science/openSUSE_Leap_$suse_ver/ science zypper ar http://$ip_gwdg/pub/opensuse/repositories/CrossToolchain:/avr/openSUSE_Leap_$suse_ver cross #zypper ar http://$ip_gwdg/pub/opensuse/repositories/X11:/XOrg/openSUSE_$suse_ver x11 #zypper ar http://$ip_gwdg/pub/opensuse/repositories/mozilla/openSUSE_$suse_ver/mozilla.repo mozilla mozilla zypper ar http://$ip_gwdg/pub/opensuse/repositories/Virtualization/openSUSE_Leap_$suse_ver/ "virtualization" zypper ar http://$ip_gwdg/pub/opensuse/repositories/utilities/openSUSE_Leap_$suse_ver/ "utilities" #zypper ar http://$ip_gwdg/pub/opensuse/repositories/Documentation:/Tools/openSUSE_Leap_$suse_ver/ "documentation_tools" #zypper ar http://$ip_gwdg/pub/opensuse/repositories/X11:/Utilities/openSUSE_Leap_$suse_ver x11util #zypper ar http://$ip_gwdg/pub/opensuse/repositories/server:/monitoring/openSUSE_Leap_$suse_ver/ monitoring #zypper ar http://$ip_gwdg/pub/opensuse/repositories/X11:RemoteDesktop:x2go/openSUSE_Leap_$suse_ver/ x2go zypper ar http://$ip_gwdg/pub/opensuse/repositories/hardware/openSUSE_Leap_$suse_ver/ hardware zypper ar http://$ip_gwdg/pub/opensuse/repositories/devel:/languages:/ocaml/openSUSE_Leap_$suse_ver/ ocaml #zypper ar http://$ip_erlangen/pub/mirrors/packman/suse/$suse_ver/ packman #zypper ar http://$ip_gwdg_packman/pub/linux/misc/packman/suse/$suse_ver/ packman zypper ar http://$ip_gwdg/pub/linux/misc/packman/suse/openSUSE_Leap_$suse_ver/ packman zypper ar http://$ip_gwdg/pub/opensuse/repositories/devel:/languages:/python/openSUSE_Leap_$suse_ver/ python zypper ar http://$ip_gwdg/pub/opensuse/repositories/KDE:/Qt/openSUSE_Leap_$suse_ver/ KDE_QT # download.videolan.org #zypper ar ftp://$ip_videolan/pub/vlc/SuSE/$suse_ver vlc #free.org Free fondation VLC #zypper ar ftp://88.191.250.131/mirrors/videolan/vlc/SuSE/$suse_ver "vlc" # ftp.uni-erlangen.de #zypper ar ftp://$ip_nvidia/opensuse/leap/$suse_ver "nvidia" #zypper ar http://www2.ati.com/suse/$suse_ver "ati" # Google Earth http://dl.google.com #zypper ar http://dl.google.com/linux/earth/rpm/stable/i386 "GoogleEarth" # trinity #zypper ar -t YUM -G http://$ip_trinity/trinity/trinity/rpm/opensuse$suse_ver/trinity-3.5.13/RPMS/$(uname -i) trinity #zypper ar -t YUM -G http://$ip_trinity/trinity/trinity/rpm/opensuse$suse_ver/trinity-3.5.13/RPMS/noarch trinity-noarch zypper mr -r -p 15 "mozilla" zypper mr -r -p 15 "X11" zypper mr -r -p 15 "x11util" zypper mr -r -p 15 "virtualization" zypper mr -r -p 15 "libreoffice" zypper mr -r -p 16 "vlc" zypper mr -r -p 18 "packman" zypper mr -r -p 30 "update" zypper mr -r -p 30 "gnome_apps" zypper mr -r -p 35 "python" zypper mr -r -p 35 "KDE_QT" zypper mr -r -p 35 "mingw" zypper mr -r -p 35 "ocaml" zypper mr -r -p 35 "x2go" zypper mr -r -p 35 "hardware" zypper mr -r -p 40 "X11" zypper mr -r -p 40 "network" zypper mr -r -p 40 "Qt5" zypper mr -r -p 50 "non-oss" zypper mr -r -p 60 "oss" zypper mr -r -p 70 "education" zypper mr -r -p 70 "x2go" zypper mr -r -p 70 "cross" zypper mr -r -p 70 "monitoring" zypper mr -r -p 91 "science" zypper mr -r -p 91 "documentation_tools" zypper mr -r -p 92 "jeux" #zypper mr -r -p 94 "contrib" zypper mr -r -p 94 "utilities" zypper mr -r -p 95 "hamradio" zypper mr -r -p 95 "electronics" #zypper mr -r -p 96 "nvidia" #zypper mr -r -p 96 "ati" #zypper mr -r -p 95 "GoogleEarth" zypper mr -r -p 38 "kde3" zypper mr -r -p 96 trinity zypper mr -r -p 96 trinity-noarch #rpm --import ftp://$ip_ovh/opensuse/distribution/leap/$suse_ver/repo/oss/suse/repodata/repomd.xml.key #rpm --import ftp://$ip_ovh/opensuse/update/leap/$suse_ver/oss/repodata/repomd.xml.key #rpm --import ftp://$ip_videolan/pub/vlc/SuSE/Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/games/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/hamradio/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/electronics/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/science/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/CrossToolchain:/avr/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/X11:/XOrg/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/LibreOffice:/5.4/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/Virtualization/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/utilities/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/X11:/RemoteDesktop:/x2go/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/network/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/server:/monitoring/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/KDE:/KDE3/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/GNOME:/Apps/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/hardware/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/devel:/languages:/ocaml/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/devel:/languages:/python/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/KDE:Qt/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm --import https://download.opensuse.org/repositories/Education/openSUSE_Leap_$suse_ver/repodata/repomd.xml.key rpm -qi gpg-pubkey : version longue rpm -qa gpg-pubkey* > "$fic" md5sum $fic sha512sum $fic echo " " > "$fic" zypper ref zypper dup --from packman : depot prioritaire zypper up
CentOS
modifiergpg --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
[base] name=CentOS-$releasever - Base baseurl=https://rpmfind.net/linux/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=10 #released updates [updates] name=CentOS-$releasever - Updates baseurl=https://rpmfind.net/linux/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=10 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus baseurl=https://rpmfind.net/linux/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=14 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras baseurl=https://rpmfind.net/linux/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=16 [epelrpms] name=epelrpms baseurl=https://rpmfind.net/linux/epel/$releasever/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=20 [epelsrpms] name=epelsrpms baseurl=https://rpmfind.net/linux/epel/$releasever/SRPMS gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=20 [rpmfusionrpms] name=rpmfusion baseurl=https://rpmfind.net/linux/rpmfusion/free/el/updates/$releasever/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RPMFUSION priority=20 [rpmfusionsrpms] name=rpmfusion baseurl=https://rpmfind.net/linux/rpmfusion/free/el/updates/$releasever/SRPMS/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-RPMFUSION priority=20 [virtualbox] name=virtualbox baseurl=https://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch enabled=0 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc priority=25 #Debut Trinity [nuxrpms] name=nuxrpms baseurl=https://li.nux.ro/download/nux/dextop/el$releasever/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=30 [nuxsrpms] name=nuxsrpms baseurl=https://li.nux.ro/download/nux/dextop/el$releasever/SRPMS/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=30 [trinityrpms] name=trinityrpms #Attention changer version 14 baseurl=https://ftp.fau.de/trinity/trinity/rpm/el$releasever/trinity-r14/RPMS/x86_64/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=50 [trinitysrpms] name=trinitysrpms #Attention changer version 14 baseurl=https://ftp.fau.de/trinity/trinity/rpm/el$releasever/trinity-r14/SRPMS/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=50
- yum makecache
- yum repolist -v
- yum repolist all
Fedora
modifieryum 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
[base] name=fedorabase baseurl=https://rpmfind.net/linux/fedora/linux/releases/$releasever/Everything/$basearch/os/ #repo_gpgcheck=1 gpgcheck=1 type=rpm gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch priority=10 [updates] name=fedoraupdate baseurl=https://rpmfind.net/linux/fedora/linux/updates/$releasever/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch priority=10 [rpmfusionfree] name=rpmfusionfree baseurl=https://rpmfind.net/linux/rpmfusion/free/fedora/releases/$releasever/Everything/$basearch/os/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-$releasever priority=30
Mageia
modifierEn 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
modifierxmodmap -e "keycode 66 =" / xmodmap -e "keycode 66 = Caps_Lock" : désactive la touche majuscule
mkisofs -r -T -joliet-long -relaxed-filenames -o fichier.iso ./
find ./ -type f -mtime +100 -exec ls {} \; : execute la commande "ls" sur les fichiers plus anciens que 100 jours
tune2fs -L disk /dev/sdX : A tester
sudo /usr/sbin/pm-hibernate : hibernation
rpm2cpio rpm.rpm | cpio -idmv : unpack rpm
LD_LIBRARY_PATH=/install/zoom ./zoom : lancement sans installation prealable
ghex / okteta : editeurs hexadecimals
rpm -qa --queryformat '%{SIZE}\n' | awk '{sum += $1} END {printf("Total size in packages = %4.1f GB\n", sum/1024**3)}' : taille totale des paquets installés
/etc/os-release : Savoir quelle version de Linux c'est
xset s off -dpms ( old : xset s noblank ; xset s off ) : disable blank screen ?
echo $var | xsel -i : copier ; xsel -o = coller
base64 --wrap=0 in.dat > out.txt : converti fichier binaire en texte ascii
cat file.txt | base64 -d > out.jpg : converti texte ascii en fichier binaire
soffice --headless --convert-to csv:"Text - txt - csv (StarCalc)":"59,ANSI,1" --outdir /chemin fichier.csv : converti fichier ods en csv avec separateur ";"
dd if=fichierN of=dest bs=1 count=taille_fichierN seek=decalage : concaténation de fichiers
runuser -l user -c 'commande' : depuis root
disable lid : paquet acpi + xfce4-power-manager-settings
lxappearance
chmod -R g=rwX /dossier : X=que sur les dossiers
chmod u+rwX,g+rwX,o-rwx /path
convert -resize 50%
xortool-xor -n -f source -s "chaine" > dest
mount -t ramfs -o size=10m ramfs /mnt/ram/ ; chown XXX.root /mnt/ram/ ; chmod 700 /mnt/ram/ : disque en mémoire vive. Attention, "df" ne voit rien.
grub2 ajouter : "rw init=/bin/bash": lost password mot de passe perdu
fuser -vm <dev> : voir quoi bloque
echo "00:20:30" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }' : conversion secondes
clavier francais
modifier- loadkeys /usr/share/kbd/keymaps/i386/azerty/fr.kmap.gz
- En mode texte :loadkeys fr
- En mode graphique : setxkbmap -layout fr
Benchmark
modifiernexuiz-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
modifiertar | 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
modifierA tester
- Charger l'installateur Windows de 7-zip en https://www.7-zip.org/
- le décompresser (!) : 7z x 7zXXXX-x64.exe
- Trouver le fichier 7z.sfx
- Fichier de configuration a faire
;!@Install@!UTF-8! Title="Titre de la fenêtre" BeginPrompt=yes BeginPrompt="Voulez-vous installer la programme ?" ExecuteFile="cmd.exe" ExecuteParameters="https://fr.m.wikipedia.org/c ex2.bat" ;!@InstallEnd@!
- Faire un cat comme : Copy /b 7zS.sfx + config.txt + archive.7z archive.exe
- 7z a -mhe=on -p -sfx7z.sfx prog.exe data
MSDOS emulation
modifierdosbox
modifierdosbox -c "mount E ~/atab/install/windows/gog"
keyb fr
fichier de configuration :
fullresolution=desktop windowresolution=desktop keyboardlayout=fr
google anciene mode
modifierhttp://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
modifierdns1.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
modifierType IMAP
ssl0.ovh.net
port :993
SSL/TLS
SMTP : ssl0.ovh.net
port : 465
SSL/TLS
si pas de son sous OpenSuse
modifiermettre 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
modifierCommands: 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
modifiertaille 14
- qtconfig
- gtk-chtheme
- à faire en root et non root
- 120 dpi dans kcontrol, fonts
Désactiver l'Automount
modifierA 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
modifierradios
modifierBBC : 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
modifierAntenne 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
modifierKTO : 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
modifierhttps://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
modifiertimeout 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
modifierhttp://packman.links2linux.org/package/libdvdcss2
https://download.videolan.org/pub/libdvdcss/last/
xorg.conf
modifierSection "Files" EndSection Section "InputDevice" # generated from default Identifier "Mouse0" Driver "mouse" Option "Protocol" "USB" Option "Device" "/dev/input/mouse0" Option "Emulate3Buttons" "no" Option "ButtonMapping" "1 2 3 5 4" #dans kcontrol en fait #Option "ZAxisMapping" "5 4" EndSection Section "InputDevice" # generated from default Identifier "Keyboard0" Driver "kbd" EndSection Section "Device" Identifier "device1" VendorName "nVidia Corporation" BoardName "NVIDIA GeForce GT240" Driver "nvidia" #Driver "nv" BusID "PCI:1:0:0" #Option "DPMS" #Option "UseEvents" "false" #Option "XaaNoOffscreenPixmaps" Screen 0 #Option "Rotate" "inverted" #Option "monitor-VGA-0" "samsung" EndSection Section "Device" Identifier "device2" VendorName "nVidia Corporation" BoardName "NVIDIA GeForce GT240" #Driver "nv" Driver "nvidia" BusID "PCI:1:0:0" #Option "DPMS" #Option "UseEvents" "false" #Option "XaaNoOffscreenPixmaps" Screen 1 #Option "Rotate" "inverted" #Option "Rotate" "Left" #Option "monitor-DVI-0" "vertical" #Option "RandRRotation" "on" EndSection Section "Device" Identifier "device3" VendorName "ATI" BoardName "ATI" #Driver "vga" Driver "radeon" BusID "PCI:2:0:0" #Option "DPMS" #Option "UseEvents" "false" #Option "XaaNoOffscreenPixmaps" Screen 0 #Option "monitor-VGA-0" "vertical" #Option "Rotate" "inverted" #Option "Rotate" "Left" EndSection Section "Device" Identifier "device4" VendorName "ATI" BoardName "ATI" #Driver "vga" Driver "radeon" BusID "PCI:2:0:0" #Option "DPMS" #Option "UseEvents" "false" #Option "XaaNoOffscreenPixmaps" Screen 1 #Option "monitor-DVI-0" "vertical" #Option "Rotate" "inverted" #Option "Rotate" "Left" EndSection Section "Monitor" Identifier "iillama" VendorName "Generic" ModelName "iillama" #HorizSync 64-79 #VertRefresh 60-75 Option "PreferredMode" "1920x1080" EndSection Section "Monitor" Identifier "dellvertical" VendorName "Generic" #ModelName "640x480 @ 60 Hz" #HorizSync 31.5-37.9 #VertRefresh 50.0-70.0 #Option "PreferredMode" "640x480" # TV fullscreen mode or DVD fullscreen output. # 768x576 @ 79 Hz, 50 kHz hsync #ModeLine "768x576" 50.00 768 832 846 1000 576 590 595 630 # 768x576 @ 100 Hz, 61.6 kHz hsync #ModeLine "768x576" 63.07 768 800 960 1024 576 578 590 616 #Option "ShadowFB" #Option "dpms" #Option "Rotate" "left" EndSection Section "Monitor" Identifier "videoproj" VendorName "Generic" ModelName "dell" #HorizSync 64-79 #VertRefresh 60-75 Option "PreferredMode" "1024x768" EndSection Section "Monitor" Identifier "hanns" VendorName "Generic" ModelName "hanns" #HorizSync 64-79 #VertRefresh 60-75 Option "PreferredMode" "1024x768" EndSection Section "Screen" Identifier "screena" Device "device1" Monitor "iillama" DefaultDepth 24 Subsection "Display" Depth 24 Modes "1920x1080" # #Virtual 640 480 EndSubsection EndSection Section "Screen" Identifier "screenb" Device "device2" Monitor "dellvertical" DefaultDepth 24 Subsection "Display" Depth 24 Modes "1280x1024" #Virtual 1366 1200 EndSubsection EndSection Section "Screen" Identifier "screenc" Device "device3" Monitor "videoproj" DefaultDepth 24 Subsection "Display" Depth 24 Modes "1024x768" #Virtual 640 512 EndSubsection #Option "TwinView" "Off" #Option "Stereo" "0" #Option "metamodes" "DFP-0: 1280x1024 +0+0 { Rotation=Left }" EndSection Section "Screen" Identifier "screend" Device "device4" Monitor "hanns" DefaultDepth 24 Subsection "Display" Depth 24 Modes "1024x768" # #Virtual 640 480 EndSubsection EndSection Section "ServerLayout" Identifier "layout1" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" Screen "screena" Screen "screenb" Rightof "screena" Screen "screenc" Below "screena" Screen "screend" Rightof "screenc" Option "Xinerama" "on" EndSection
liste des paquets à installer
modifierOpenSUSE
modifierqt5ct 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
modifierkernel-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
modifierzypper 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
modifierffmpeg 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
modifiercharger 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
modifierlutris 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
modifierxboard -fcp 'crafty xboard'
xboard -ics -icshost freechess.org
CentOS/Fedora
modifierPaquets
modifiergcc make cmake perl kernel-devel dkms acpi buildsys-build-rpmfusion-kerneldevpkgs-current.x86_64 libva-intel-driver openvpn grub-customizer wget wireless-tools nfs-utils radicale radicale-httpd nmap
yum groupes
modifier- yum grouplist
- yum groupinstall --setopt=group_package_types=mandatory,default,optional
- yum list --showduplicates kernel
"X Window system" "xfce" "GNOME Desktop" "MySQL Database client" "MySQL Database server" "NFS file server" "Network Storage Server" "development" @kde-desktop-environment
Mageia
modifiertask-lxqt kfind qt5ct