Utilisateur:Dsant/Linux
Page Perso | Linux |
Avant, je gardais mes notes dans un cahier papier...
OpenSUSE sur VPS modifier
Septembre 2021.
Mon hébergeur ne propose pas OpenSUSE sur ses VPS (pas assez connu en France probablement...). Qu'a cela ne tienne !
- Installer une CentOS8 (ou autre).
- Décompacter une iso de OpenSUSE, et recopier le contenu du dossier /boot/x86_64/loader/ en /boot/suse/
- Copier le fichier xml de autoyast en /root
- Copier le fichier de la clé publique en /root
- Renommer (label) l’ancienne partition en "centos"
- Dans /etc/grub.d/40_custom : linux /boot/suse/linux install=http://195.220.108.108/linux/opensuse/distribution/leap/15.2/repo/oss autoyast=device://disk/by-label/centos/root/suse.xml
- Contrairement à ce qui est écrit, les clés ssh ne sont pas copiées automatiquement ? (Probablement une incompatibilité Centos-Suse). Marche par scripts :
<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 modifier
Janvier 2020, Novembre 2017, Juillet 2016.
Raid5 evolutif modifier
En cours.
Nécessite 9 slots.
Unité : relative au plus petit disque=1.
Mes besoins de stockage doublant tout les 1½ ans, cela correspond à l'achat d'un disque par grappe tout les 6 mois.
Création modifier
- Créer les partitions en type "Linux raid auto" "fd" ? ?
mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
Tests modifier
- mdadm --detail /dev/mdX
- smartctl -a /dev/sdX : informations
- smartctl -t short /dev/sdX : lance test court (20 min en fait)
- smartctl -l selftest /dev/sdX : voir resultat
Ajout modifier
umount <partition> mdadm --manage /dev/mdX --add /dev/sdX1 mdadm --grow /dev/mdX --raid-devices=N <Attendre> e2fsck -f /dev/mdX resize2fs /dev/mdX mount <partition>
Compter environ 4h/To de reshape.
Réduire le nombre de disques modifier
en cours
umount /mnt/folder resize2fs -M /dev/mdX ? mdadm --manage /dev/mdX --fail /dev/loopX mdadm --manage /dev/mdX --remove /dev/loopX e2fsck -f /dev/mdX : verification
Changement de disque modifier
En cours
mdadm --fail /dev/md0 /dev/sdaX mdadm --manage /dev/md0 --remove /dev/sdaX <éteindre le PC et changer le disque> mdadm --stop /dev/md0 mdadm --assemble --scan mdadm --manage /dev/md0 --add /dev/sdbY
Customisation modifier
Programmes par default modifier
en cours juillet 2019
Editer /home/user/.local/share/applications/XXX.desktop , ligne InitialPreference=99
update-desktop-database pour valider
types de fichiers :
mp4 mkv avi mpg flv webm
images
A creer : webm et flv, cpp, h, ui
scripts modifier
ssh :
port sshd rootaccess=no ssh VisualHostKey=yes PasswordAuthentication=no
commande ll (LL)
enlever proxy dans yum si proxy
KDE3 for ever modifier
En cours avril 2023, septembre 2022, juillet 2019, novembre 2014, aout 2012.
kreadconfig --file kdesktoprc --group ScreenSaver --key Saver
kwriteconfig --file kdesktoprc --group ScreenSaver --key Saver pacman.desktop
Methode : configurer à la main un poste la premiere fois, puis noter les groupes/clés qui ont été insérées dans le fichier /home/user/.kde/share/config/XXX. Pour trouver les arguments, mettre une valeur arbitraire puis la rechercher dans contenu avec konqueror.
Ca marche !
sed -i 's/Synchronize=false/Synchronize=true/g' /home/$USER/.kde/share/config/klipperrc #copier coller synchronisé sed -i 's/Lock=true/Lock=false/g' /home/$USER/.kde/share/config/kdesktoprc #Pas lock economiseur d'ecran sed -i 's/Backup Config Flags=1/Backup Config Flags=0/g' /home/$USER/.kde/share/config/kwriterc #Pas fichier de backup kwrite
- menu K
- konqueror texte
- racourcis clavier
[$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 modifier
kwriteconfig --file kickerrc --group General --key LegacyKMenu true dcop kicker kicker restart # relance kicker kwriteconfig --file klipperrc --group General --key Synchronize --type bool true dcop klipper klipper quitProcess # relancer klipper klipper dcop kwin KWinInterface reconfigure # relance look fenetres
- Configuration fixe
- ajouter un bureau
KDE4 modifier
Task switcher
Firefox modifier
page demarrage
lieu de sauvegarde
don't remember passwords
Auto Tab Discard ?
about:config modifier
dom.ipc.processCount = 200 browser.urlbar.maxRichResults = false
Chromium modifier
Extentions :
- AdblockPlus
- CrossFire Plus ou CrossFire
- Shortkeys
- Don't Close Window With Last Tab
Opera customisation modifier
installation manuelle modifier
mkdir /tmp/operainstall cp opera-1*.rpm /tmp/operainstall/opera.rpm cd /tmp/operainstall rpm2cpio opera.rpm | cpio -idmv
barre d'adresse modifier
Dans keyboard shortcuts, dans Application, créer : F8 ctrl | Set alignment, "document toolbar", 6 | Set alignment, "document toolbar", 0
enlever moteur de recherche de Speed Dial modifier
Preferences, Search, Edit, Details, and uncheck "Use as speed dial search engine."
Vivaldi modifier
Mars 2024
Appearance modifier
- Open settings in a tab
- Menu, horizontal
- zoom 200%
Tabs modifier
- décocher "keep window open when last tab is closed"
recherche rapide modifier
- 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 modifier
Aller en Settings > Privacy > Tracker and Ad Blocking; Cocher "Block Trackers and Ads" Cliquer sur "Manage Sources" Dans "Ad Blocking Sources", cocher “Remove cookie warnings (Easylist Cookie List)” et “Remove cookie warnings (I don’t care about cookies)”.
Kwrite modifier
barre d'outils
Pas sauvegarde automatique
Dolphin modifier
Page d’accueil
Use common properties
icones
couleur
police (general) taille 14
double clic
konsole sous KDE5 modifier
menu
barre bas
taille police
couleur police #1504fa
couleur fond #fdfda4
pour installer KDE3 ou LXQt modifier
Contrairement à ce qui est écrit dans la doc, il re-faut le dépôt spécialisé KDE:/KDE3
zypper in -t pattern KDE-DEFAULT (ben oui, KDE3 est caché là ! ! )
ou bien zypper in kdebase3-session kdebase3-kdm
zypper in -t pattern lxqt
/etc/sysconfig/windowmanager :
DEFAULT_WM="startkde3" / "openbox"
Displaymanager :
update-alternatives --config default-displaymanager
Icones Crystal (kde3 style) modifier
sous kde4 modifier
- chercher "Crystalsvg for kde 4"
- gtk-update-icon-cache -f -t ~/.icons/<dossier> ?
- Couleurs : systemsettings, "colors used in applications", "Colors", "Colors", "View", "Alternate background" = 235;248;255 + Sauver le Scheme (1ere onglet) ? + relancer Dolphin
- Task switcher : systemsettings, Window Behavior,
- Chemin Konsole : dans konsole, manage profile, edit profile, tabs, "%D %u@%h" et dans Environment : <PS1=\u@\h:\`$(pwd)\` $ >
sous LxQT modifier
- Passer en Window Manager : lxqt-config, sessons settings : kwin_x11
- CrystalRemix : https://store.kde.org/p/1226130/
- Couleurs : systemsettings5, Colors, Edit Scheme, Colors, Color set : View, Alternate background = 235;248;255 + Sauver le Scheme ? + relancer Dolphin
- Task switcher : compact
- qt5ct et export QT_QPA_PLATFORMTHEME="qt5ct" ?
Dolphin5 modifier
- 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 modifier
alttab -theme crystalSVG -i 128x128 -s 1 -bg white -fg black -vertical
Wayland modifier
~/.config/weston.ini :
[core] backend=drm-backend.so [shell] client=weston-terminal
debranding de distribution modifier
En cours juin 2018.
Personalisation du boot de CentOS modifier
Avril 2018.
Isolinux modifier
- Pour les accents, le fichier isolinux.cfg doit etre sauvé en IBM850
- Image en taille 1024x768 format png
- Si format ISO9660 (CDROM), les noms de fichiers sont limités à 8 caracteres+3. Donc mkisofs tronque, mais ne dit rien.
Grub 2 modifier
vi /etc/default/grub :
GRUB_TERMINAL_OUTPUT="gfxterm" GRUB_BACKGROUND=/image.jpg GRUB_GFXMODE=1024x768
grub2-mkconfig -o /boot/grub2/grub.cfg
Plymouth modifier
plymouth-set-default-theme --list plymouth-set-default-theme -R charge dracut -f
NE MARCHE PAS avec Virtualbox.
SUSE modifier
En cours juin 2018.
kiwi modifier
Voir dossier /usr/share/kiwi/image/
prepare+create=build
kiwi --prepare <syntaxhighlight lang="text"> --root <dest1> kiwi --create <dest1> --destdir <dest2>
changer ? : <syntaxhighlight path='obs://server:/http/openSUSE_Leap_42.3'/> <syntaxhighlight path='https://download.opensuse.org/distribution/leap/42.3/repo/oss/'/> <repository> <syntaxhighlight path='http://rpmfind.net/linux/opensuse/distribution/leap/42.3/repo/oss/'/> </repository> commenter : <package name="openSUSE-release-dvd"/> ?
config.xml
Doc en /usr/share/doc/packages/kiwi/pdf/kiwi.pdf
Yast2 modifier
https://en.opensuse.org/SDB:YaST_tricks#Branding_the_installation
https://en.opensuse.org/Archive:Making_an_openSUSE_based_distribution
https://en.opensuse.org/openSUSE:YaST_quick_tutorial
Machines virtuelles modifier
Septembre 2021, Juin 2021, Janvier 2018, octobre 2012
VirtualBox modifier
usermod -a -G vboxusers user
Création par VBoxManage modifier
VBoxManage list vms VBoxManage showvminfo <vm> VBoxManage controlvm <vm> acpipowerbutton / poweroff VBoxManage guestcontrol <machine> stat : etat VBoxManage -nologo startvm <machine> --type headless VBoxManage convertdd fichier.raw disque.vdi --format VDI VBoxManage convertdd fichier.raw disque.vdi --format VDI VBoxManage modifyhd disque.vdi --resize 50000 VBoxManage controlvm <machine> keyboardputstring <chaine> : envoi une chaine de caractere sleep 2 ; VBoxManage controlvm <machine> keyboardputfile <file> : envoi contenu du fichier. sleep sinon bug ! !
poste="test" chemin="chemin/" #attention, tilde ~ n'est pas reconnu VBoxManage hostonlyif create # Créer Network Host only. Une seule fois par host ! VBoxManage createvm --name $poste --ostype OpenSUSE_64 --register VBoxManage modifyvm $poste --memory 1024 --acpi on --boot1 dvd --audio none #VBoxManage modifyvm $poste --nic1 nat VBoxManage modifyvm $poste --nic2 hostonly VBoxManage createhd --filename $chemin/vm/$poste/$poste.vdi --size 10 (en Mo) VBoxManage storagectl $poste --name "IDE Controller" --add ide --controller PIIX4 VBoxManage storageattach $poste --storagectl "IDE" --port 0 --device 0 --type hdd --medium $chemin/vm/$poste/$poste.vdi VBoxManage storageattach $poste --storagectl "IDE" --port 0 --device 0 --type dvddrive --medium $chemin/iso/file.iso VBoxManage modifyvm $poste --vrde on VBoxHeadless --startvm $poste
ostypes : VBoxManage list ostypes
OpenSUSE_64 |
Debian_64 |
RedHat_64 |
ArchLinux_64 |
Linux_64 |
rdesktop -f -g 800x600 ip:port
(-f fullscreen , Ctrl-Alt-Enter pour sortir)
Extensions modifier
Télécharger en http://download.virtualbox.org/virtualbox/ :
Oracle_VM_VirtualBox_Extension_Pack.x.x
et VBoxGuestAdditions_x.x.iso :
VBoxManage guestcontrol reactos updateadditions --source /home/$(echo $USER)/atab/virtual/iso/VBoxGuestAdditions_XXX.iso --verbose ? ?
ou monter l'iso dans le lecteur de CD.
cp /home/<user>/atab/virtual/iso/VBoxGuestAdditions_6.0.10.iso /usr/share/virtualbox
Monter l'iso VBoxGuestAdditions_5.0.YY.iso sous Windows (autorun)
et (pour le mode RDP):
VBoxManage extpack install Oracle_VM_VirtualBox_Extension... (en root)
VBoxManage modifyvm <ma_vm> --vrde on : active le mode RDP
Installation en virtuel vers reel modifier
En cours juin 2021.
vboxmanage clonehd image.vdi disque.img --output=raw ?
RemoteBox modifier
En cours.
/etc/default/virtualbox :
VBOXWEB_USER="moi" VBOXWEB_TIMEOUT=0 VBOXWEB_LOGFILE="https://fr.m.wikipedia.org/var/log/vboxwebservice.log" VBOXWEB_HOST="IP"
touch /var/log/vboxwebservice.log
chown moi:vboxusers /var/log/vboxwebservice.log
systemctl start vboxweb-service
A suivre...
Limite de debit modifier
VBoxManage list vms VBoxManage bandwidthctl <VM> add Limite --type network --limit 100k # En mo/s VBoxManage bandwidthctl <VM> set Limite --limit 100k VBoxManage bandwidthctl <VM> remove Limite
Bug modifier
Si au moment de changer l'IP du reseau interne : access denied :
créer /etc/vbox/networks.conf :
* 10.0.0.0/8 192.168.0.0/16 * 2001::/64
Android-x86 modifier
Bug : affichage tout petit -> ajouter en option du kernel de grub : vga=839
Qemu modifier
Mai 2015. Ca marche.
qemu-img create -f qcow2 image.img 20G créer un dossier de travail <arbre> cp /usr/lib/grub/stage2_eltorito <arbre>/boot/grub/ copier les fichiers linux et initrd en <arbre>/boot
<arbre>/boot/grub/menu.lst :
timeout 0 title installsuse root (cd) kernel /boot/linux showopts initrd /boot/initrd
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o newcdrom.iso <arbre>
qemu-system-x86_64 -m 256 -drive file=disque.img,format=qcow2 -drive file=newcdrom.iso,format=raw,media=cdrom -boot d
Notes :
- Si system 64 bits, lancer qemu-system-x86_64 sinon problemes ?
Qemu Montage de disques modifier
Ne pas faire à chaud. A faire en root :
modprobe nbd max_part=8 qemu-nbd -c /dev/nbd0 <fichier image> faire une partition avec fdisk. nbd0p1 est crée. La formater ? ? mount /dev/nbd0p1 /mnt/qemu
Qemu réseau modifier
En cours
coté host :
tunctl -u <utilisateur> -t tap0 Ajouter au lancement de qemu : -net nic -net tap,ifname=tap0,script=no ifconfig tap0 192.168.99.1 netmask 255.255.255.0 up
Coté guest :
ifconfig interface_machine_virtuelle 192.168.0.10 netmask 255.255.255.0 up
Si NAT :
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -I FORWARD 1 -i tap0 -j ACCEPT iptables -I FORWARD 1 -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT
KVM modifier
Septembre 2021
- zypper in -t pattern kvm_server kvm_tools
- lancer service libvirtd
- virt-manager -c 'qemu+ssh://user@ip:port/system?keyfile=/cle.key' en non root
- virt-viewer -c qemu:///system ? : VNC like
- Si erreur sur usb : supprimer l'usb de la VM
nom=nom chemin=/virtual version=15.2 virt-install --virt-type=kvm --name=$nom --os-variant=opensuse$version --disk size=10,path=$chemin/vm/$nom.img --vcpu=1 --ram=2048 --location=$chemin/iso/openSUSE-Leap-$version-NET-x86_64.iso --network bridge:dsnet,model=virtio --graphics=none --console pty,target_type=serial --extra-args="console=ttyS0,115200n8 serial hostname=<nom> hostip=192.168.1. netmask=255.255.255.0 gateway=192.168.1.1 proxy=http://192.168.1.1:2476 install=http://195.220.108.108/linux/opensuse/distribution/leap/$version/repo/oss autoyast=http://192.168.1.1/suse.xml"
Pour sortir : ctrl + Alt_gr + ]
Si utilisateur non root modifier
- se mettre dans les groupes libvirt et kvm. Sinon "Unable to connect to libvirt qemu:///system" ou "unsupported configuration: CPU mode 'custom' for x86_64"
#Sinon l’utilisateur est isolé avec son environnement cp /etc/libvirt/libvirt.conf /home/$USER/.config/libvirt/ vi /home/$USER/.config/libvirt/libvirt.conf # décommenter uri_default = "qemu:///system"
virsh modifier
list --all start reboot shutdown console : se connecter undefine : supprimer proprement destroy : supprimer façon brutale
Réseau modifier
virsh net-list --all virsh net-info <reseau> #Si rien, creation en root : virsh net-edit <reseau> virsh net-define /usr/share/libvirt/networks/default.xml virsh net-autostart <reseau> virsh net-start <reseau> virsh net-undefine <reseau> virsh net-destroy <reseau>
/usr/share/libvirt/networks/dsnet.xml :
<network> <name>dsnet</name> <bridge name='dsnet' stp='on' delay='0'/> <ip address="192.168.1.1" netmask="255.255.255.0"> </ip> </network>
Port forward modifier
firewall-cmd --permanent --add-forward-port=port=<port>:proto=udp:toport=<port>:toaddr=<IP> firewall-cmd --list-forward-ports firewall-cmd --remove-forward-port=... firewall-cmd --runtime-to-permanent ?
Duplication modifier
Penser à changer :
- nom
- IP
- mots de passe
- clé ssh
- clé VPN
Xen modifier
Lu dans la doc d'Arch-Linux : "KVM is similar to Xen in purpose but much simpler to get running".
LXC linux containers modifier
Je comprends pas tout. Il s'affiche :
Message from package liblxc1: Due to your /etc/permissions configuration (which might be caused by an outdated permissions package), the lxc-user-nic helper binary has been installed with a missing setuid bit. This setuid helper is required in order for LXC unprivileged containers to operate, and has already been reviewed by the SUSE security team and added to the Factory permissions setuid whitelist[1]. No action has been taken to fix this configuration problem (in case this was intentional, and to avoid breaking openSUSE packaging guidelines), so your administrator will have to fix this manually. In order to fix this, add the following line to /etc/permissions.local (this is necessary to avoid losing the setuid bit during package updates or causing audit warnings): /usr/lib/lxc/lxc-user-nic root:kvm 04750 and then add the setuid bit to the helper: chmod u+s /usr/lib/lxc/lxc-user-nic ... or you can re-install liblxc1. Source : /var/adm/update-messages/liblxc1-3.1.0-lp150.2.13.1-missing_setuid.txt
De plus, je lit sur la doc officielle SUSE : "Security depends on the host system. LXC is not secure. If you need a secure system, use KVM."
UML User Mode Linux modifier
cryptage modifier
Avril 2024, Aout 2021, decembre 2017
par GPG modifier
Désactiver gpg-agent graphique par :
echo "pinentry-program /usr/bin/pinentry-tty" >> /root/.gnupg/gpg-agent.conf gpgconf --kill gpg-agent
- gpg -c <file>
décryptage :
- gpg <file.gpg>
Client sous windows : http://www.gpg4win.org
par OpenSSL modifier
openssl aes-256-cbc -pbkdf2 -salt -in in.txt > out.dat
(umask u+rw,g=,o=; openssl xxx ou tar xxx)
openssl aes-256-cbc -d -pbkdf2 -in out.dat > in2.txt #ajouter -md md5 si CentOS (vieille version)
openssl aes-256-cbc -salt -in in.txt -out out.dat -pass file:<fichier mot de passe>
Note : ajouter -md sha256 si vielle version
Clé privée : openssl genrsa -out private.key 2048 clé publique à partir de la clé précédente : openssl rsa -in private.key -outform PEM -pubout -out public.key
openssl rand -hex/-base64 <taille> | tr -d '\n' : creation chaine random
openssl passwd -6 -salt <sel> | tr -d '\n' | xsel -i : crée le hash d'un mot de passe.
Par openssh modifier
ssh-keygen -f Cle.key -t ssh-ed25519 -C "cle_$(date +%C%y%m%d)" : creation ssh-keygen -lv -f cle.pub : voir random art de la clé (publique ou privée pareil) cat *.key.pub | xsel -i : pour interface OVH
Attention, chez OVH sur les VPS il faut 15 minutes avant que les clés ne soient misent en place, sinon "Permission denied".
Longueur de clés modifier
Centos8 :
ssh-ed25519 : 256 (recommandé)
ecdsa-sha2-nistp256 : 256
rsa-sha2-512,rsa-sha2-256 : 3072
Pseudo partition modifier
dd if=/dev/zero of=<file> bs=1024 count=4096 (attention, 4Mo au moins sinon erreurs)
losetup -f : savoir prochain /dev/loop disponible
losetup -P /dev/loopX ex1.dat : option -P force re-chargement
losetup -d /dev/loopX : detacher
partprobe : reload des partitions dans le kernel
Puis paragraphe suivant.
par luks cryptsetup partition modifier
cryptsetup luksFormat /dev/sdbX
cryptsetup luksOpen /dev/sdbX cry
mkfs.ext4 /dev/mapper/cry
mount /dev/mapper/cry /mnt/cry
cryptsetup luksChangeKey /dev/loopX : changer le mot de passe
cryptage distant par NBD (network block device) modifier
Décembre 2017.
2 bugs sur Suse (à mon avis) :
- modprobe nbd pas automatique
- Pas d’utilisateur et groupe nbd par defaut. Les créer à la main.
Serveur :
/etc/nbd-server/config :
[generic] port=<port> listenaddr=<IP> user=nbd group=nbd allowlist=true [partage] exportname=/tmp/fichier.dat
Client :
nbd-client -name partage <IP> <port> /dev/nbdX nbd-client -d /dev/nbdX : détache
Puis utiliser cryptsetup comme d'habitude.
Tunnels modifier
OpenVPN modifier
easyrsa clés publiques clés privées modifier
en cours avril 2024
installer easy-rsa cp /etc/easy-rsa/vars.example /chemin/vars changer les variables EASYRSA_REQ_ easyrsa init-pki easyrsa build-ca easyrsa gen-dh #long easyrsa --days=578 build-server-full <nom_serveur> easyrsa --days=578 build-client-full <nom_client>
- ca.crt en : pki/ # Autorité de Certification
- dh.pem en : pki/ # Diffie-Hellman
- clés publiques, certificats et autre en : pki/issued/
- clés privées en : pki/private/
fichier .conf modifier
remote <IP> #client uniquement #ifconfig <IP> <IP> #serveur uniquement #push "route x.x.x.0 255.255.255.0" #serveur uniquement server 172.16.85.0 255.255.255.0 port 1234 client tls-server ca /etc/openvpn/pki/ca.crt dh /etc/openvpn/pki/dh.pem cert /etc/openvpn/pki/issued/file.crt key /etc/openvpn/pki/private/file.key dev tun dev-type tun cipher AES-256-CBC #comp-lzo #"Compression has been used in the past to break encryption" keepalive 10 60 #ping-timer-rem #persist-tun #persist-key proto udp float #tun-mtu 1350
Clés partagées modifier
Avril 2024 : Shared key mode has been deprecated by OpenVPN. Shared key mode will be removed from future versions of OpenVPN.
openvpn --genkey secret .key
openvpn --show-tls : protocole (PSK, RSA...)
openvpn --show-ciphers : cipher (BF, Camellia, AES...)
Si la destination est un reseau entier modifier
Ajouter sur le fichier de conf coté client :
route 192.168.reseau_destination.0 255.255.255.0
Et coté serveur :
script-security 2 route-up /chemin/openvpn_bridge.sh
Script openvpn_bridge.sh :
#!/bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward /usr/sbin/iptables -t nat -A POSTROUTING -s 172.16.XX.0/24 -o ethXX -j MASQUERADE
Installation sur poste client modifier
- installer le tunnel. "En non-enabled".
- /usr/bin/tunnel.sh :
#!/bin/bash service sshd start systemctl start openvpn@<monvpn>.service
- Ajouter sudo par yast2, ou "utilisateur ALL = (root) NOPASSWD:/usr/bin/tunnel.sh"
- racourci KDE3 avec : sudo /usr/bin/tunnel.sh
- Si sudo vers un autre utilisateur que root, ne pas oublier l'option "-u user" de sudo.
Si Windows modifier
En cours
- fichiers de conf en .ovpn
- Double quotes dans chemins (!)
- Win ne sait pas decompacter dans dossier systeme directement
- Si auto, mettre fichiers de conf dans OpenVPN\config-auto
- attention, le chemin des clé est donc aussi changé
par SSH modifier
avril 2013
coté distant :
ssh -p 1975 -R 1532:127.0.0.1:22 support@ip_support
coté local :
ssh -p 1532 user@127.0.0.1
Automatisation modifier
sshd -D -f <fichier_config> -p <port>
#!/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 modifier
Decembre 2017, septembre 2019
xdotool windowminimize $(xdotool getactivewindow) : minimise la fenetre active
xdotool windowsize $(xdotool getactivewindow) 100% 100% : maximise
xdotool search --onlyvisible --name "KCalc" : trouver id fenetre
wmctrl -l : voir liste des fenetres
wmctrl -a "kcalc" : amene la calculatrice au premier plan
wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz : maximise la fenetre active (":ACTIVE:" très utile en scripts)
DISPLAY=:1 wmctrl -c momdocument.odt : ferme propremement document distant (doit etre préalablement sauvé, et se connecter avec ssh -X)
kstart
Libreoffice modifier
bug (enfin, ça se discute) : fontes URW ne sont plus disponibles dans LO (uniquement) pour des raisons d’obsolescence. Remplacées par fontes Tex-Gyre.
création fichier ODT en script modifier
Mars 2018
cd <dossier> rm ../out.odt zip -0 -X ../out.odt mimetype zip -r ../out.odt * -x mimetype
Supression doublons modifier
Juillet 2019
- Sélectionner la colonne
- Data/Filter/Standard filter
- Field name = none
- options :
- No duplication
- Copy result to
Calendrier partagé modifier
Mai 2024. Octobre 2019. Février 2018. Janvier 2014.
logiciel serveur Radicale http://radicale.org/
Vacances scolaires en : https://www.data.gouv.fr/fr/datasets/le-calendrier-scolaire/
Pièges :
- Radicale ne trouve pas le fichier de conf seul sous CentOS, et ne dit rien ! Utiliser l'option "-C /etc/radicale/config".
- hosts = 172.16.XX.X:<port>,172.16.XX.X:<port> : limite l'acces ?
- chown -R radicale.radicale /var/log/radicale : plus la peine ?
- Je n'arrive pas a créer un calendrier avec Thunderbird, alors que ca marche avec la page du serveur web intégré à Radicale ! ?
htpasswd /etc/radicale/users <user>
/etc/radicale/config : modifier
hosts = <IP>:<port> type = htpasswd htpasswd_filename = /etc/radicale/users htpasswd_encryption = md5 filesystem_folder = /home/radicale/calendrier [rights] type=owner_only
/etc/systemd/system/radicale.service : modifier
[Unit] Description=A simple CalDAV (calendar) and CardDAV (contact) server After=network.target Requires=network.target [Service] ExecStart=/usr/bin/radicale -d -C /etc/radicale/config #Restart=on-failure User=radicale Group=radicale Type=forking #PIDFile=%h/pid.pid #WorkingDirectory= # Deny other users access to the calendar data #UMask=0027 # Optional security settings PrivateTmp=true ProtectSystem=strict ProtectHome=true PrivateDevices=true ProtectKernelTunables=true ProtectKernelModules=true ProtectControlGroups=true NoNewPrivileges=true ReadWritePaths=/chemin/radicale [Install] WantedBy=multi-user.target
Clients modifier
- Evolution/Thunderbird/Lightning :
- type CalDav, avec authentification, user radicale
- Sur http://<IP>:<port>/radicale/caldav (le fichier est crée automatiquement)
- type CalDav, avec authentification, user radicale
- KOrganizer : pas réussit sous KDE3
Requete sur Openstreetmap modifier
Septembre 2019
On remarquera que l'ordre des "coordonnés géographiques" de Lyon n'est pas le même sur les 2 outils. Super naze...
Par tools.wmflabs.org modifier
Par overpass-turbo.eu modifier
node [leisure=playground] (45.6867243,4.7504157,45.8332862,4.9837133); out;
publipostage modifier
En ligne de commande avec Abiword modifier
novembre 2017, mars 2012.
- Créer le fichier csv, avec 1ere ligne noms de colonnes.
- Créer le document maître, puis menu Insert/Mail merge Field, cliquer sur "Open File".
- Re-cliquer sur Insert/Mail merge Field, inserer les champs.
- Fermer Abiword
- abiword -m <data.csv> --to=pdf --to=<out.pdf> <maitre.abw>
Avec Libreoffice modifier
- Le fichier source doit etre de type ods et 1ere ligne a les titres
- File / Wizard / Address data source
- attention : Other data source
- type : spreadsheet
- Ne pas cliquer sur "Field Assignement" = noms de colonnes pre-choisis !
- ctrl-shift-F4 / drag and drop
- Ne pas rentrer à la mains les champs par < >
- Imprimer pour lancer le publipostage
Envoi de mails en script modifier
Octobre 2017, aout 2014.
Pas besoin de configurer Postfix si envoi uniquement.
Par mutt modifier
user="" domaine="" surnom="" sujet="" echo "Entrez le mot de passe" read -s pass echo "texte" | mutt -e "set from=$user@$domaine($surnom)" -e "set smtp_pass=\"$pass\"" -e "set smtp_url=\"smtps://smtp@$domaine@ssl0.ovh.net:465\"" -s "$sujet" -a /home/fichier.txt -- "$user@$domaine" pass="-"
Par mailx modifier
expediteur="" destinataire="" domaine="" surnom="" sujet="" echo "Entrez le mot de passe" read -s pass cat monmail_01.txt | mailx -a 'Content-Type: text/html' -S smtp="smtps://ssl0.ovh.net:465" -S smtp-auth=login -S smtp-auth-user=smtp@votreservice.com -S smtp-auth-password=$pass -S from="$surnom <$expediteur@$domaine>" -s $sujet $destinataire@$domaine
Par PHP modifier
- Installer les packages pear-mail ou php-pear
<?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 modifier
En cours septembre 2017
- Ajouter le dépot ocaml
- zypper in ocaml opam git hg make m4 patch
Non root:
- opam init
- opam update
- opam upgrade
- eval `opam env`
- opam install depext
- opam depext google-drive-ocamlfuse
HTML/PHP modifier
juin 2020. Septembre 2017
Apache pièges modifier
- Le service, c'est "apache2", pas "apache". Naze...
- Pour désactiver la page de bienvenue, il faut commenter toutes les lignes de /etc/httpd/conf.d/welcome.conf
- Ne pas changer le DocumentRoot, mais créer un lien symbolique depuis /srv/www/htdocs (sur OpenSUSE).
PHP pièges modifier
- Si classes, l'accès aux variables de la classe se fait par "$this->variable" Sans "$" devant variable
Apache htaccess modifier
Dans /etc/httpd/conf/httpd.conf, mettre "AllowOverride AuthConfig" dans chapitre "<Directory "/var/www/html">". Ne pas se tromper de chapitre
.htaccess :
AuthName "blabla" AuthType Basic AuthUserFile "/home/<chemin_FTP_OVH>/www/.htpasswd" Require valid-user
.htpasswd :
htpasswd -n <user> > .htpasswd
phpmyadmin modifier
Si accès distant, dans /etc/httpd/conf.d/phpMyAdmin.conf remplacer "Require ip 127.0.0.1" par "Require ip <IP>" dans les deux chapitres "Apache 2.4".
Et relancer Apache.
Inclure du html dans du html modifier
<object type="text/html" align="middle" width="200" height="200" type="text/html" data="https://fr.m.wikipedia.org/fichier.php">Warning: html file could not be included.</object>
C++ compilé dans Apache modifier
- Mettre l'executable ELF dans /srv/www/cgi-bin/
- Appeller en http://<IP>/cgi-bin/<prog>
#include <stdlib.h> prinf("Content-Type: text/html; charset=UTF-8"); char * chaine = getenv("QUERY_STRING"); //retourne un pointeur sur une zone mémoire DEJA réservée par l'OS !
C++ dans html par PHP modifier
Coté PHP :<?php putenv("var=abcd"); putenv("PATH=<chemin>:<chemin>"); //Si PATH non renseigné, exécutable non trouvé. //Et attention, doit être accessible par user Apache ? ! $sortie=shell_exec("prog"); ?>Coté C++ si une seule chaîne en retour:
#include <stdlib.h> char * chaine = getenv("var"); cout << "sortie" << endl;
Si plusieurs chaînes en retour :
utiliser proc_open()
produire ses propre fichiers RPM modifier
Mars 2015, c'est au point.
mkdir ./{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS,tmp}
ln -s <chemin>/rpmmacros ~/.rpmmacros
Fichier .rpmmacros :
%packager moi %_topdir <chemin> %_tmppath /var/tmp
Fichier spec :
Name : URL : site web Version : Release : release Packager : le packager Distribution : pour quelle distrib Summary : description en une ligne Group : Applications License : GPL %description description en plusieurs lignes de mon programe %build cd %{_sourcedir}; g++ -o hello hello.cpp %install rm -fR $RPM_BUILD_ROOT; mkdir -p $RPM_BUILD_ROOT/usr/bin; cd %{_sourcedir} mv hello $RPM_BUILD_ROOT/usr/bin/; %clean rm -rf $RPM_BUILD_ROOT/ %files %attr(755,root,root) /usr/bin/hello
rpmbuild -v -bb SPECS/hello.spec
mapping touches clavier modifier
Septembre 2014
Logitech G11 modifier
Ancienement 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 modifier
Nouvelle tentative avec clavier Sun Microsystems avec ses 11 touches supplémentaires : succés ! !
xev : fourni le code des touches (en graphique)
1 keycode, plusieurs keysyms
xmodmap -pke : print current configuration
setxkbmap -layout fr : reset
xmodmap -e "keycode 146=Escape" # Touche clavier Sun "Aide" devient Esc xmodmap -e "keycode 49=at EuroSign" # Touche puissance 2 = @ et Euro xmodmap -e "keycode 59=46 59" # ';' et '.' inversés xmodmap -e "keycode 61=47 33" # touche '!' = '/' et '!' xmodmap -e "keycode 94=quotedbl" # touche <> = guillemets xmodmap -e "keycode 20=plus" # ')' = '+' xmodmap -e "keycode 136=35" # Touche Sun Stop = # xmodmap -e "keycode 137=124" # Encore = | xmodmap -e "keycode 138=91" # Props = [ xmodmap -e "keycode 139=93" # Annuler = ] xmodmap -e "keycode 140=123" # Devant = { xmodmap -e "keycode 141=125" # Copier = } xmodmap -e "keycode 142=60" # Ouvrir = < xmodmap -e "keycode 143=62" # Coller = > xmodmap -e "keycode 144=40" # Chercher = ( xmodmap -e "keycode 145=41" # Couper = ) xmodmap -e "keycode 106=61" # touche / pavé numérique devient '=' xmodmap -e "keycode 134=Menu" # Home droite = Menu contextuel
# 37 # ctrl gauche # 133 # Home gauche # 64 # Alt gauche # 108 # Alt Graphique # 134 # Home droite # 135 # Touche Menu droite # 105 # ctrl droite
affectation d'une chaine de caractères à une touche modifier
xbindkeys --defaults > /home/user/.xbindkeysrc : la première fois
xbindkeys -k : voir code de touche (en graphique)
Lancer xbindkeys, après avoir complété /home/user/.xbindkeysrc :
"sleep 0.1 && xdotool type --clearmodifiers '2do,qin:co,'" # @domain.com en qwerty ! m:0x10 + c:9
- Si on ne met pas la commande sleep, ça bug ! :(
Boot réseau PXE sur Macintosh PowerPC G3 Bleu modifier
Mars 2014, le Mac bleu boote. Octobre 2014.
dhcpd.conf modifier
option 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 modifier
appuyer Alt-Home-F-O
boot cd:,\\:tbxi
hattrib -b ?
boot ud:,\\:tbxi ?
dev / ls
ctrl+S : stop scroll
ctrl+A : restart scroll (ctrl+Q en qwerty)
boot enet:server_ip,file,client_ip
boot enet:server_ip (avec dhcpd)
Cas Linux-x86 (PC classique) modifier
- aouter "eth0" dans /etc/sysconfig/dhcpd, ligne DHCPD_INTERFACE="eth0"
- Copier pxelinux.0 depuis kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz//bios/core/ ou depuis /usr/share/syslinux/pxelinux.0
- ET bios/com32/elflink/ldlinux/ldlinux.c32
- attention a le pas confondre pxelinux.0 et lpxelinux.0 !
- creer un dossier pxelinux.cfg (obligatoire)
mount /dev/sdc1 /mnt/securecard mount -o noatime /dev/sdc2 /mnt/squidcache/ mount -o loop,ro,noatime /mnt/securecard/isos/openSUSE /mnt/securecard/pxelinux/iso/
- tftp ne prend pas les liens symboliques ! ?
- penser : lancer services xinetd(tftp), dhcpd et squid
dhcpd -f -cf /mnt/securecard/dhcpd.conf & squid -f /mnt/securecard/squid.conf umount /mnt/securecard/isos/openSUSE*.iso ; umount /mnt/securecard/ ; umount /mnt/squidcache/
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 modifier
pulseview
sigrok-cli --driver fx2lafw -C A0 --time 3000 -O csv -o fichier.csv
xrandr modifier
xrandr --output LVDS1 --mode 1024x600
xrandr --output VGA1 --mode 1024x768 --below LVDS1
xrandr --output VGA-2-0 --mode 1024x768 --same-as DVI-D-1
xrandr --output VGA-2-0 --off
bluetooth modifier
Avril 2024. Février 2020.
modprobe btusb lsmod | grep bluetooth systemctl start bluetooth.service bluetoothctl discoverable on/off devices : liste périphériques appairés. remove <mac> blueman
http://www.linux-magazine.com/Issues/2017/197/Command-Line-bluetoothctl
Lecteur d’empreintes finger reader modifier
avril 2024. En cours.
installer fprintd et pam_fprint
systemctl start fprintd.service
Pare-feux restrictif modifier
#!/bin/bash iptables -F iptables -X iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # local iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -i tun0 -j ACCEPT iptables -A OUTPUT -o tun0 -j ACCEPT iptables -A INPUT -i tun1 -j ACCEPT iptables -A OUTPUT -o tun1 -j ACCEPT # Connections etablies iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Ports serveurs # SSH iptables -A INPUT -p tcp --dport <port> -j ACCEPT # VPN iptables -A INPUT -p udp --dport <port>:<port> -j ACCEPT # Radicale iptables -A INPUT -p tcp --dport <port> -j ACCEPT # root iptables -A OUTPUT -p udp -m owner --uid-owner root -j ACCEPT iptables -A OUTPUT -p tcp -m owner --uid-owner root -j ACCEPT # ping ip_serveur=192.168.xxx.xxx iptables -A OUTPUT -p icmp --icmp-type 8 -s $ip_serveur -d 0/0 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p icmp --icmp-type 0 -s 0/0 -d $ip_serveur -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -d $ip_serveur -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type 0 -s $ip_serveur -d 0/0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # DNS iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT sleep 10 # A cause systemd su -c <prog> <user>
Wifi modifier
rfkill list : permet de savoir si interrupteur wifi "materiel"
KDE3 modifier
installer : kdenetwork3-wireless knetworkmanager-kde3
lancer kwifimanager ?
lancer service NetworkManager (avec majuscules !)
icone en bas a droite
Pas reussit. Passé par Yast2 lan ?
ou :
nmcli device wifi list
nmcli device wifi connect <SSID> password $(cat /fichier)
nmcli connection delete <SSID>
Attention : depuis peu, pour accéder à l'interface d'administration de la BBox, il faut ajouter l'adresse l'IP de la box à mabbox.bytel.fr dans le fichier /etc/hosts . Sinon site inaccessible !
Sans cryptage ou avec WEP modifier
ifconfig wlan0 up iwlist wlan0 scan | grep ESSID : voir réseau iwconfig wlan0 key open essid "McDonald's France" #iwconfig wlan0 mode managed key <cle> # Si WEP iwconfig wlan0 enc on key "<cle>" essid "<essid>" à l'hotel mettre dans /etc/hosts : 217.167.130.188 wifi.hotelbb.com (pb DNS donc)
Avec cryptage WPA modifier
Arreter le service NetworkManager
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=wheel network={ ssid="essid" psk="cle" }
ip link set wlan0 up
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf &
dhclient wlan0
wpa_cli status doit donner COMPLETED ?
WPA2 modifier
network={ ssid="essid" psk="cle" scan_ssid=1 proto=WPA2 key_mgmt=WPA-PSK group=CCMP TKIP pairwise=CCMP TKIP priority=5 }
systemd modifier
Avril 2024, novembre 2013 et janvier 2014
runlevels nouvelle facon
Lid modifier
Comportement à la fermeture de l'écran d'ordinateur portable en mode texte uniquement.
Copier /usr/lib/systemd/logind.conf en /etc/systemd/logind.conf si fichier inexistant.
HandleLidSwitchExternalPower=lock
systemctl restart systemd-logind.service ?
démarrage en texte ou graphique modifier
systemctl isolate multi-user.target
systemctl isolate graphical.target : change le runlevel
systemctl set-default <name of target>.target
systemctl enable nfs.service
systemctl start nfs.service
Nouveau service modifier
vi /usr/lib/systemd/system/<service>.service
[Service] Type=simple ExecStart=/usr/bin/monexecutable [Install] WantedBy=multi-user.target
Ne pas oublier de rendre "monexecutable" executable
systemctl daemon-reload
systemctl start monexecutable.service
systemctl enable monexecutable.service
OpenVPN modifier
systemctl start openvpn@monvpn.service
systemctl enable openvpn@monvpn.service
systemctl is-enabled openvpn@monvpn
OpenCL modifier
En cours, octobre 2013, juin 2015, janvier 2018, juin 2018, juillet 2018.
zypper in --from science Mesa-libOpenCL libOpenCL1 libopencl opencl-headers opencl-cpp-headers ocl-icd-devel clinfo
Bug : ln -s /usr/lib64/libOpenCL.so.1 /usr/lib64/libOpenCL.so
ICDs dans /etc/OpenCL/vendors/ comme mesa-opencl-icd ? + un ICD loader /usr/lib64/libOpenCL.so ?
https://github.com/flanaras/opencl-examples
#include <CL/cl.h> g++ -lOpenCL -o run prog.cpp ou LIBS += -lOpenCL dans fichier .pro
cl_device_id, cl_kernel, cl_program, cl_command_queue et cl_context
Hardware | Software | Mémoire |
---|---|---|
Processing Element (PE) | Work-item | Private Memory |
Compute Unit | Workgroup | Local Memory |
Context ? | ||
GPU | Device | Global Memory |
Platform |
Initialisations modifier
A TESTER
// nombre de platformes et IDs cl_uint nb_de_Platforms; if( !ClCheck(clGetPlatformIDs(0, NULL, &nb_de_Platforms))) //Nb de plateformes cl_platform_id mesplatformes[nb_de_Platforms]; if( !ClCheck(clGetPlatformIDs(nb_de_Platforms, mesplatformes, NULL))) //Informations sur les plateformes clGetPlatformInfo(mesplatformes[i], CL_PLATFORM_VENDOR, 128, vendor, NULL); clGetPlatformInfo(mesplatformes[i], CL_PLATFORM_NAME, 128, name, NULL); clGetPlatformInfo(mesplatformes[i], CL_PLATFORM_VERSION, 128, version, NULL); cl_device_id devices[100]; cl_uint devices_n = 0; if(!ClCheck(clGetDeviceIDs(mesplatformes[i], CL_DEVICE_TYPE_GPU, NULL, NULL, &nb_devices))) if(!ClCheck(clGetDeviceIDs(mesplatformes[i], CL_DEVICE_TYPE_GPU, nb_devices, devices, NULL)))
status = clGetDeviceIDs(platformIDs[i], CL_DEVICE_TYPE_ALL, 0, NULL, &numDevices);
Mémoires modifier
__private | les datas d'un work-item seul |
__local | les datas des work-items d'un work-group |
__constant | de meme mais read-only pour le GPU |
__global | globale |
Vulkan modifier
En cours avril 2023, juin 2018
zypper in vulkan vulkan-devel
g++ -std=c++11 -lvulkan -I/usr/include/vulkan/ -L/usr/lib64/ -o run prog.cpp
vulkaninfo
Jeux modifier
zypper addrepo https://download.opensuse.org/repositories/Emulators:/Wine/openSUSE_Leap_15.4/ wine zypper in wine-devel wine-mono wine-32bit-devel protontricks proton-native
Divers formation modifier
Octobre 2013
fstab modifier
/dev/... /mnt/... ext4 defaults 0 0
LVM modifier
PV | create |
VG | display |
LV | extend |
remove |
pvcreate /dev/
vgcreate nomvg /dev
lvcreate -L <taille> -n namelv namevg
ou : -l 100%FREE si tout
vgextend monvg /dev
lvextend -L +<taille> /dev/
+ resize2fs /dev/
divers modifier
useradd (simple) != adduser (complet)
id
cal
grep chaine fichier
ls -S
file fichier : dit type de fichier
which=whereis
less : more plus evolue
sort : tri
tail, head : la queue et la tête d'un fichier ligne par ligne
2> : redirige la sortie d'erreur standard
$? : code dernière erreur
pgrep (-l) <nom programme>
wall : broadcast de texte
locate : recherche de fichier indexee
hostnamectl set-hostname <nom>
ps --forest : foret
SMB modifier
mount.cifs -o uid=1000,user=Administrateur //<IP>/<partage> /mnt/...
Compilation noyau modifier
make menuconfig
make gconfig
make xconfig
make
make install
grub2-mkconfig ou update-grub2
crontab modifier
Utiliser kcron ou :
min(0-59) heure(0-23) jour_mois(1-31) mois(1-12) jour_semaine(0-6, 0=dimanche) commande
/etc/cron.daily/script
echo "* * * * * user /prog.sh" > /etc/cron.d/prog : toute les minutes ? Et ligne vide à la fin fichier ?
systemctl restart cron.service ? ?
Commande at modifier
- avoir lancé le service atd
echo "commande" | at $heure:$minutes $jour.$mois.$annee
MuseScore (éditions de partitions musicales) modifier
Juillet 2013 http://musescore.org/fr
N : mode édition
CTRL + L : Texte + espace + maj-espace + '-' + return
CTRL + T : Tempo + F2 (caractères spéciaux)
x / maj-x : sens hampe
CTRL + haut/bas : +/- octave
Webcam avec enregistrement distant modifier
En cours mars 2013
streamer -c /dev/video1 -s 1280x1024 -t 2 -r 1 -o img0.jpeg
openssl aes-256-cbc -salt -a -in img1.jpeg -out img.ssl -pass file:pas.txt
gzip img.ssl
mv img1.jpeg $(TZ=CET date +%C%y%m%d_%Hh%M_%S).jpeg
programmation de pilote USB par rétro-ingénierie modifier
En cours mars 2013
constructeur original et pilote Win$:
http://www.maplin.co.uk/robotic-arm-kit-with-usb-pc-interface-266257
lsusb : Bus 002 Device 008: ID 1267:0000 Logic3 / SpectraVideo plc
modprobe usbmon
tshark -D (en root) pour voir lequel
usb-devices (en root) pour voir lequel
tshark -i <interface> -w <file> (en root)
wireshark <file> (non-root)
http://nagaraj-embedded.blogspot.fr/2012/03/capturing-usb-data-through-wireshark.html
http://creativeyann.free.fr/ksr.php
http://notbrainsurgery.livejournal.com/38622.html
endpoints < interface < configuration
http://julien.danjou.info/blog/2012/logitech-k750-linux-support
http://wiki.wireshark.org/CaptureSetup/USB
http://info.fs.tum.de/images/8/86/2011-06-08-usb.pdf
http://uvtutorial.blogspot.fr/2011/10/reverse-engineering-usb-device.html
http://matthias.vallentin.net/blog/2007/04/writing-a-linux-kernel-driver-for-an-unknown-usb-device/
http://www.reactivated.net/weblog-content/20050806-reverse-0.2.txt
https://tequals0.wordpress.com/2011/11/01/reverse-engineering-logitech-unifying-usb-protocol/
http://notbrainsurgery.livejournal.com/38622.html
http://biot.com/blog/usb-sniffing-on-linux
http://www.simong.eu/projects/dlc300/
ncurses modifier
gcc -lncurses -ltinfo <prog.cpp>
#include <ncurses.h> int main() { int maxX,maxY; initscr(); getmaxyx(stdscr,maxY,maxX); //taille de la console move(maxY-1,maxX-1); //commence en (0,0) addch('A'); //affiche caractere refresh(); getch(); // input endwin(); return 0; }
Qt modifier
Documentation hors-ligne : lancer "assistant-qt5" (ne pas oublier installer libqt5-qtdoc-qch)
QtDesigner = taper designer-qt5 (Tordu !)
- qmake-qt5 -project (jamais utilisé en fait)
- qmake-qt5
- Ajouter QT += widgets dans fichier .pro
- uic-qt5 window.ui -o window.h
- make
+ mettre Q_OBJECT en debut de classe
+ Qt exige un .h pour compiler sinon "undefined vtable", ou inclure fichier .cpp de la classe dans le fichier .pro sur ligne HEADERS (oui, oui !) et mettre #include "moc_xxx.cpp" à la fin du fichier .cpp. Ca marche !
Fichiers .pro modifier
QT += 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 modifier
Avec lambda modifier
- Une seule fenetre (complexe), crée avec QtDesigner
- Un bouton de validation pour traitements des champs
https://doc.qt.io/qt-5/designer-using-a-ui-file.html
#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 modifier
QDialog 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 modifier
Fenetre 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 modifier
QImage monimage(512,512,QImage::Format_RGB32); monimage.load("image.jpg"); monimage.fill(QColor(Qt::white).rgb()); monimage.setPixel(x,y,qRgb(red,green,blue)); QPainter painter(&monimage); //Pour afficher du texte painter.drawText (50, 200, QString("A")); painter.fillRect(X,Y,large,haut,QBrush(QColor(Qt::red))); // ou des formes géométriques ui.monQLABEL->setPixmap(QPixmap("image.jpg")); /* monQLABEL est crée dans Designer. A appeler à chaque rafraichissement ? */
QFile et QDataStream modifier
#include <QFile> QFile fichier("file"); fichier.open(QIODevice::WriteOnly|QIODevice::Truncate); fichier.close();
QString :
#include <QTextStream> QString a("abc"); QTextStream stream(&fichier); stream << a;
QDataStream pour copie de fichier à fichier :
#include <QDataStream> QDataStream stream(&fichier2); stream << fichier1.readAll();
Intégrer des fichiers dans l’exécutable modifier
.pro :
RESOURCES += fichier.qrc
.qrc :
<!DOCTYPE RCC><RCC version="1.0"> <qresource> <file>image.jpg</file> <file alias="fichier.conf">../../dossier/fichier.conf</file> # alias nécessaire si chemin relatif ! </qresource> </RCC>
Dans le fichier source, chemin des fichiers en ":/image.jpg"
Qt Linguist modifier
- Dans le fichier .pro : TRANSLATION=translation_en.ts translation_es.ts
- lupdate project.pro -ts translation_en.ts translation_es.ts
- Release dans linguist
- Dans le main :
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é modifier
writeDatagramEncrypted : envoi decryptDatagram : reception
Openssl modifier
gcc -lssl -lcrypto -o run prog.cpp
Remplir une liste déroulante modifier
Fonction 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 modifier
bipper = new QTimer(this); connect(bipper, SIGNAL(timeout()), SLOT(mafonction())); bipper->start(1000); //temps en ms
QSettings modifier
QSettings * settings=new QSettings("MaCompagnie", "MonProgramme"); settings->setValue("chapitre/cle",10); int val = settings->value("chapitre/cle").toInt();
Fichier : $HOME/.config/MaCompagnie/MonProgramme.conf
Hash MD5 modifier
QCryptographicHash monHash(QCryptographicHash::Md5); monHash.addData(QByteArray & data) monHash.addData(char * data, int length) QByteArray.append(monHash.result());
Qt 3D modifier
A TESTER...
(En Qt5)
QT += 3dcore 3drenderer 3dinput #include <Qt3DCore> #include <Qt3DRenderer> #include <Qt3DInput>
OpenCV et Qt modifier
A TESTER...
INCLUDEPATH += /usr/local/include/opencv LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_highgui #include <opencv2/opencv.hpp>
Listes tableaux modifier
QList<QString> liste; QList<QList<QString> > tableau2D; liste.append("ajout"); ou : liste << "un" << "deux"; if (liste.at(i) == "Jaune") : lecture seule
Execution programme depuis Qt modifier
//rendre executable QFile bat("fichier"); bat.open(QIODevice::ReadWrite); bat.setPermissions(QFileDevice::ReadOwner|QFileDevice::WriteOwner|QFileDevice::ExeOwner); //Pour des raisons inconnues, il faut redonner le chemin ? ? (absolutePath)... QProcess process; process.start("/bin/bash", QStringList() << "-c" << QFileInfo(bat).absolutePath()+ "/" + fichier"); process.waitForFinished(); bat.close();
Rendre synchrone :
QEventLoop pause; pause.exec(); : pause pause.quit(); : reprise
Racoucis clavier avec Alt modifier
- Nommer les boutons avec "&"
- Lier les <inputs> avec les <Labels> par "Buddies" dans Designer (menu Edit)
QString et cout modifier
- #include <iostream>
- using namespace std;
- .toStdString()
Ou surcharger << :
ostream& operator<<(ostream &flux,const QString &chaine) { flux << chaine.toStdString(); return(flux); }
Pour concaténer des chaines de caractères : commencer par un QString, puis "+".
qstring.toint() | string to int |
QString::number(1) | int to string |
.toStdString().c_str(); | QString to char * |
Listes modifier
QList<QPair<double,quint32> > liste; QPair<double,quint32> paire; foreach(paire, liste) { ... }
// espace obligatoire dans "> >" car pas ">>" et paire doit être déclaré avant !
Divers Qt et C++ modifier
Types de tailles fixes : uint32_t avec : g++ -std=gnu++11 prog.cpp
ou qint16, quint32...
enum Couleur:quint8 {rouge, vert, bleu}; Couleur coul=bleu; enum class Couleur:quint8 {rouge, vert, bleu}; Couleur coul=Couleur::bleu;
Conversions enum :
var_enum = static_cast<Couleur>(var_numerique); var_numerique = static_cast<int>(var_enum);
Pas besoin de conversion si pas de class et prendre les types Qt (quint8...) !
QtQuick et QML modifier
On peut tester avec qmlscene
Fichier .pro modifier
TEMPLATE = app QT += qml quick SOURCES += main.cpp
Imports modifier
Avec QT 5.9.4 :
import QtQuick 2.3 import QtQuick.Window 2.2 import QtQuick.Controls 1.2 import QtQuick.Layouts 1.0
main.cpp modifier
#include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char* argv[]) { QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("fichier.qml"))); return app.exec(); }
Compilation Qt pour Android modifier
juillet 2013, ça marche !
http://guillaumebelz.wordpress.com/2013/07/04/developpez-en-natif-pour-android-avec-qt-5-1/ Excellent !
attention, créer un projet ARM et gcc 4.7
sdk_android/adt-bundle-linux-x86-xxx/sdk/platform-tools/adb devices (adb est dans le SDK) : nom du device
adb -s <nom> install fichier.apk
commandes MTP :
mtp-detect
mtp-connect
mtpfs -o allow_other /mnt/mtp
fusermount -u /mnt/android pour demonter ?
Ou passer par pcmanfm
Cross-Compilation de Linux vers Windows modifier
Avril 2012, marche, sauf avec OpenCV. Juin 2015
Sans makefile modifier
i686-w64-mingw32-g++ -o run.exe prog.cpp
DLLs à fournir pour Wine (au moins) :
/usr/i686-w64-mingw32/sys-root/mingw/bin/libgcc_s_sjlj-1.dll
Avec cmake + OpenCV modifier
fichier CMakeLists.txt :
#set (BINNAME dieselGenerator) #set(EXECUTABLE_OUTPUT_PATH bin) include_directories(/home/moi/install/opencv/include) link_directories(/home/moi/install/opencv/lib) #file (src/*) set(EXECUTABLE_OUTPUT_PATH ../bin/${CMAKE_BUILD_TYPE}) SET( PROJECT_NAME monprojet ) PROJECT( ${PROJECT_NAME} ) CMAKE_MINIMUM_REQUIRED(VERSION 2.8) FIND_PACKAGE( OpenCV REQUIRED ) ADD_EXECUTABLE( run src/prog.cpp ) TARGET_LINK_LIBRARIES( run ${OpenCV_LIBS} )
Fichier win32.cmake :
NOTE : non fonctionnel avec OpenCV, j'ai pas réussi.
# voir http://www.cmake.org/Wiki/CmakeMingw # the name of the target operating system SET(CMAKE_SYSTEM_NAME Windows) # which compilers to use for C and C++ SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc) SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++) SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres) # here is the target environment located SET(CMAKE_FIND_ROOT_PATH /usr/i586-suse-linux ) # adjust the default behaviour of the FIND_XXX() commands: # search headers and libraries in the target environment, search # programs in the host environment set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
puis :
Sous Linux vers Linux modifier
cd cmake
cmake ..
make
Sous Linux vers Windows modifier
si erreur "cc1: execvp: No such file or directory" : export PATH=/usr/lib64/gcc/i686-w64-mingw32/5.1.0/:$PATH
cd make
cmake -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_TOOLCHAIN_FILE=win32.cmake ..
make
Sous Linux vers Windows avec Qt sous Wine modifier
Juin 2020 en cours - Juin 2015 ca marchait
Ne marche sous Wine que pour les tout petits projets. Sinon utiliser une machine virtuelle.
- Installer sous wine Qt-Windows (MinGW est inclut, dossier Tools).
- Attention, certaines versions trop récentes (?) de Qt-installer plantent sous wine (la faute à wine).
- Ajouter "CONFIG += c++11" au fichier .pro si Windows avec mingw uniquement
- wine cmd ou wineconsole
- au lieu de "make" lancer "mingw32-make" avec le bon PATH:
manuel :
WINEPATH="$(expr $(cat $(find /home/$(echo $USER)/.wine/drive_c/Qt/ -name qtenv2.bat) | grep set | cut -d "=" -f 2) : "\(.*\);%PATH%")" wine cmd qmake mingw32-make
ou automatique :
wine cmd /C "$(cat $(find /home/$(echo $USER)/.wine/drive_c/Qt/ -name qtenv2.bat) | grep set) && mingw32-make 2>&1 >/dev/null | less"
- Attention, pour tester l'executable sous wine, il faut aussi donner WINEPATH
Compiler Qt-Windows en statique modifier
Ne pas faire ? :
- 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 modifier
echo "mot de passe :" read -s SSHPASS mkdir chemin cd chemin sshpass -e sftp user@ip:chemin << ! get fichier bye !
search and remplace modifier
- cat in.txt | sed s/"ancien"/"nouveau"/ > out.txt
- sed -i 's/OLD_VALUE/NEW_VALUE/g' <fichier>
Attention in.txt et out.txt doivent etre differents, sinon 2eme commande (dans ce cas écrase ancien fichier).
Special Windows modifier
echo texte set /p var=texte
Zenity boites de dialogues graphiques depuis bash modifier
zenity --info --text "abc" valeur=$(zenity --entry --title="titre" --text="texte" --entry-text="default" )
Python modifier
def ma_function(a,b): print("Salut")
Python avec Qt PyQt ou Pyside modifier
- Créer l'interface avec QtDesigner
- pyside-uic interface.ui -o ui.py
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 modifier
Ajouter dans le code C/C++ :
extern "C" { void fonction(unsigned int arg); }
Compiler la librairie C avec :
g++ -shared -fPIC -o fichier.so fichier.c ou dans fichier .pro : TEMPLATE = lib CONFIG += unversioned_libname
Code dans Python :
import ctypes fichier = ctypes.cdll.LoadLibrary("./fichier.so") fichier.ma_fonction(arg)
Rust modifier
Lua modifier
#!/usr/bin/env lua
installation automatisé modifier
Septembre 2021, juin 2018, octobre 2016, mars 2013, Aout 2012.
OpenSuse modifier
fichier xml : yast2 autoyast file filename=/chemin/fichier.xml
Elements modifier
- DHCP
- DNS
- domain name
- clavier fr
- boot loader : chemins /mnt/boot/ + (hd0,0) ou (hd0,1)
- date and time
- Dire ne pas importer anciennes cles ssh
- services : sshd, nfs, nfsserver, rpcbind
- serveur de temps ?
- SSHD configuration + service sshd a activer
- utilisateur + 1er changement ?
- root password + 1er changement ?
- bug : etape 2 freeze si installation minimale sur Leap 42.1. Solution : mettre dêpot de update et meta-paquets :
- bug : sshd n'est lancé qu'a partir du 2eme reboot => prevoir un reboot script en post install si remote ssh ! ou ?
- bug leap 15.0 : clavier SUN détecté comme un clavier Mac ? Editer /etc/vconsole.conf et mettre KEYMAP=fr-latin9 + mkinitrd ?
<final_reboot config:type="boolean">true</final_reboot>
Si meta paquets modifier
zypper search -t pattern : savoir liste des patterns
zypper info --requires <pattern> : voir contenu
zypper --from : change vendor
Si erreur "File <nom a ralonge> not found on medium" : dépot en cours de mise à jour. Attendre.
<package>patterns-openSUSE-lxde</package> patterns-openSUSE-remote_desktop patterns-openSUSE-base-12.2-5.5.1.i586 patterns-openSUSE-x11_yast-12.2-5.5.1.i586 patterns-openSUSE-enhanced_base-12.2-5.5.1.i586 patterns-openSUSE-x11_opt-12.2-5.5.1.i586 patterns-openSUSE-sw_management-12.2-5.5.1.i586 patterns-openSUSE-x11-12.2-5.5.1.i586 patterns-openSUSE-enhanced_base_opt-12.2-5.5.1.i586 patterns-openSUSE-yast2_basis-12.2-5.5.1.i586
Depuis disque dur Grub modifier
default install timeout 1 title install root (hd0,0) kernel /boot/suse/linux install=http://195.220.108.108/linux/opensuse/distribution/leap/15.2/repo/oss autoyast=device://sdaZ/boot/suse/autoinst.xml nomodeset initrd /boot/suse/initrd
Grub2 modifier
/etc/grub.d/40_custom :
menuentry "suse"{ linux /boot/suse/linux hostip=192.168.1.99/24 gateway=192.168.1.1 proxy=http://192.168.1.1:2476 install=http://195.220.108.108/linux/opensuse/distribution/leap/15.4/repo/oss autoyast=device://disk/by-label/opensuseinstall/distrib/15.4/opensuse15.XX_01.xml initrd /boot/suse/initrd }
+ dans /etc/default/grub changer le ligne GRUB_DEFAULT
+ grub2-mkconfig -o /boot/grub2/grub.cfg
+ Pour donner un label à la partition source si XFS :
xfs_io -c "label -s mylabel" /
Par clé USB avec syslinux modifier
DEFAULT usb LABEL usb SAY Bonjour KERNEL /linux APPEND ro root=/dev/sdb hostip=192.168.1.99 netmask=255.255.255.0 gateway=192.168.1.1 proxy=http://192.168.1.1:2476 initrd=/initrd install=http://91.121.124.139/opensuse/distribution/leap/12.1/repo/oss autoyast=device://disk/by-label/LABEL/chemin/fichier.xml nomodeset
Dans une machine virtuelle (Virtualbox) modifier
- Une seule carte en host-only + Squid
- Penser a inclure yast2-bootloader ?
repasser en querty si systeme anglophone, sinon bug
En bootant depuis une NET install modifier
install=http://91.121.124.139/opensuse/distribution/leap/12.1/repo/oss autoyast=ftp://192.168.220.2/autoinst.xml ou depuis une ISO : netsetup=dhcp autoyast=ftp://192.168.220.2/iso.xml
Display manager modifier
<sysconfig config:type="list"> <sysconfig_entry> <!-- Set displaymanager to KDM --> <sysconfig_key>DISPLAYMANAGER</sysconfig_key> <sysconfig_path>/etc/sysconfig/displaymanager</sysconfig_path> <sysconfig_value>kdm</sysconfig_value> </sysconfig_entry> <sysconfig>
Verification image .asc modifier
package : openSUSE-build-key /usr/lib/rpm/gnupg/keys/gpg-pubkey-29b700a4-62b07e22.asc : mQINBGKwfiIBEAD... gpg --import /usr/lib/rpm/gnupg/keys/gpg-pubkey-29b700a4-62b07e22.asc gpg --list-keys : AD485664E901B867051AB15F35A2F86E29B700A4 gpg --verify openSUSE.iso.sha256.asc openSUSE.iso.sha256 cat openSUSE.iso.sha256 sha256sum openSUSE.iso
CentOS modifier
Janvier 2020, octobre 2019, janvier 2018
Par Grub2 et loopback si par installation linux deja existante modifier
- Probleme : pas possible de supprimer la partition active ? ?
- e2label /dev/sdaX sdaX : fixe un label à la partition (blkid vérif)
- Copier le fichier iso sur la racine
/etc/grub.d/40_custom :
menuentry "CentOS" { set isofile='/centos.iso' set partition='4' loopback loop (hd0,$partition)$isofile linux (loop)/isolinux/vmlinuz keymap=fr inst.stage2=hd:LABEL=sda$partition:$isofile ro ks=hd:LABEL=sda$partition:/ks.cfg proxy="http://IP:port" initrd (loop)/isolinux/initrd.img }
- grub2-mkconfig -o /boot/grub2/grub.cfg
Par ISO si machine virtuelle modifier
mkdir isolinux cp -R /mnt/loop/* /chemin/isolinux/ mv isolinux/isolinux/* isolinux/ mkisofs -o moniso.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-info-table -V 'CentOS 7 x86_64' -boot-load-size 4 -boot-info-table -R -J -v -T isolinux/
isolinux.cfg modifier
SAY Bonjour DEFAULT centos7 PROMPT 0 TIMEOUT 30 UI vesamenu.c32 LABEL centos7 MENU TITLE centos7 kernel isolinux/vmlinuz append initrd=isolinux/initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64:<path> quiet ks=cdrom:/ks.cfg proxy="http://IP:port"
ks.cfg modifier
Attention, cette version efface automatiquement le disque dur.
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 modifier
En cours juin 2018
preseeding par fichier preseed.cfg
Mageia modifier
En cours avril 2018.
auto_install= ? automatic=method:disk,disk:sdb,partition:sdb1,directory:/isolinux/auto_inst.cfg.pl ?
chmod 644 iso/isolinux/isolinux.bin
mkisofs -o moniso.iso -b isolinux/isolinux.bin -c boot.cat -no-emul-boot -V 'Mageia' -boot-load-size 4 -boot-info-table -R -J -v -T iso/
http://gitweb.mageia.org/software/drakx/tree/mdk-stage1/doc/TECH-INFOS
label leia_nfs kernel images/leia/isolinux/alt0/vmlinuz append initrd=images/leia/isolinux/alt0/all.rdz vga=788 kickstart=install/auto_inst.cfg.pl automatic=method:nfs,network:dhcp,server:192.168.100.39,directory:/export,int:wired ?
mirroring de dépôt modifier
install=disk:/opensuse/distribution/leap/12.0/repo/oss?device=sdX
rsync -r -P -t -l --progress rsync://OVH/opensuse/distribution/leap/12.2/ /home/$USER/sdb1/opensuse/distribution/12.2/
rsync -r -P -t -l --progress rsync://OVH/opensuse/update/12.2* /home/$USER/sdb1/opensuse/update/
Squid modifier
squid -z -f <fichier de conf> : créer le cache squid
squid -N -d1 -f <fichier de conf> : verboze
Penser à :
- changer l'adresse IP du cache dans les DEUX fichiers de confs !
- enlever le proxy ensuite si proxy
tail -f /var/log/squid/access.log
kill -TERM $(cat /var/run/squid.pid) + Attendre 30s
Unbound service DNS modifier
juillet 2021.
/etc/unbound/unbound.conf :
interface: 192.168.100.2 access-control: 192.168.100.0/24 allow
rsync modifier
rsync -rlptP --dry-run --delete --exclude squidcache --exclude virtual --exclude .Trash-1000 source dest (recusive, permissions, time, links, Progress)
rsync -n -r -v --checksum --delete source/ dest/ | grep -v "sending incremental file list" | grep -v "bytes received" | grep -v "total size is" : vérifier "sans oublier les /"
FTP modifier
en cours mai 2024.
Lu sur wikipedia :"TFTP lacks security"
PureFTP modifier
Pas trouvé comment changer le path de anonymous !
L’utilisateur virtuel de pureftp ne doit pas déjà exister dans l'OS.
groupadd ftpgroup useradd -c "utilisateur pureftpd" -g ftpgroup --system ftpuser pure-pw useradd <user> -u ftpuser -g ftpgroup -d /chemin pure-pw passwd <user> pure-pw usermod <user> -r '172.16.X.1/24' -m : filtrage par IP ? pure-pw mkdb UnixAuthentication yes systemctl start pure-ftpd.service
décommenter la ligne PureDB /etc/pure-ftpd/pureftpd.pdb
vsftp modifier
NFS modifier
/etc/export :
/data/ 172.16.1.0/24(rw,sync,no_subtree_check)
Plus besoin fsid=0,anonuid=1000,anongid=1000 ?
Attention, l'étoile "*" ne marche plus dans les versions recentes, utiliser "/24"
exportfs -a
Si NFS avec Virtualbox, il faut une seule carte reseau en hostonly + proxy Squid.
showmount -e <IP> : découverte NFS
mount -t nfs4 <dir> <dir>
Si "access denied by server" : ne pas mettre root mais nobody en propriétaire des dossiers.
Samba modifier
installer le bureau Trinity modifier
En cours janvier 2012
http://www.trinitydesktop.org/
Images modifier
visionneuse : geeqie -t -f %F
convert in.jpg -print "%w\n" /dev/null : largeur / hauteur (%h) image
mogrify -format tiff *.jpg
convert -resize 50% source.jpg dest.jpg
mogrify -rotate 180 fichier.jpeg
montage in.jpg -duplicate <Nb-1> -geometry 100%x100% out.jpg : planche d'images identités
convert -crop <taille_new_X>x<taille_new_Y> source.jpg out_%d.jpg : posterisation
pdfjoin fichier1.pdf fichier2.pdf --suffix sortie : concatene 2 fichiers pdf
convert -layers merge image.xcf image.jpg
convert sources*.* -page A4 dest.pdf : images en pdf
pdftoppm -r 300 -jpeg in.pdf out : pdf en images
convert -append img1.jpg img2.jpg out.jpg : empile des images verticalement
convert \( f1.jpg f2.jpg -append \) \( f3.jpg f4.jpg -append \) +append out.jpg : 4x4 images cette fois ci
gs -o out.pdf -sDEVICE=pdfwrite -dFILTERIMAGE -dFILTERVECTOR in.pdf : enleve images et pavés du fichier pdf
import -window root image.jpg : copie d'ecran screenshot
ORC : tesseract -psm 6 <image.tiff> <texte.txt> -l fra : si "Unrecognized image type" -> passer image en tiff !
glabels : 4.13x;2.755y;0;0;0;0.118 pouces + 2etq;4etq;0;0.295;4.130;2.755
Video modifier
ffmpeg modifier
ffmpeg -i <fichier_in> <fichier_out.mp3> : extraire son d'une video
ffmpeg -encoders
ffmpeg -i video.mp4 -vf scale=160:120 video.mpg
ffmpeg -i in.mp4 -ss 00:00:00 -to 00:00:00 -strict -2 out.mp4 # Extraire partie d'une video. Attention, ordre arguments important !
ffmpeg -loop 1 -i image.jpg -i son.mp3 -shortest -acodec aac -ar 48000 -vcodec h264 -t 5 out.mp4 : video à partir d'une image
ffmpeg -i in.mp4 -qscale:v 1 -qmin 1 -ss 00:00:00 -to 00:00:00 -f image2 image-%4d.jpeg : extraire images d'une video
ffmpeg -i in.mp4 -qscale 0... Attention, sinon qualité tres reduite moche
ffmpeg -i in.mp4 -qscale 0 -vf "fade=type=in:duration=1,fade=type=out:duration=1:start_time=<duree_film_moins_fade>" -c:a copy out.mp4 #effet transition 1s debut et fin
ffmpeg -f concat -safe 0 -i liste.txt -c copy out.mp4 : concatener videos, avec liste.txt contient lignes : "file <fichier.mp4>"
VLC modifier
- serveur :
cvlc ex1.mp3 --sout udp://<IP client>:1234 --loop --sout-udp-caching=2000
- client :
cvlc udp://<IP serveur> --udp-caching=<mili-secondes>
+ codec installé des 2 cotés !
+ alsa://plughw:0,0 ?
+ arecord -l permet savoir quoi present
vlc --no-video -Z <dossier> : lecture random sans image
vlc --start-time=<debut (s)> --stop-time=<fin (s)> <file.mpg> Attention, temps en secondes !
xine modifier
xine -V none -l=shuffle * : random audio only
Ripper modifier
média | commande |
---|---|
CD audio | ripit -o <dossier sortie> |
DVD | vlc dvdsimple:///dev/dvd --audio-language=fr --sout="#transcode{vcodec=mp4v,scale=1,acodec=mp4a}:duplicate{dst=std{access=file,mux=mp4,dst=out.mp4}}" vlc://quit vlc dvd:// --sout "#transcode{vcodec=none,acodec=vorb,ab=128,channels=2,samplerate=44100}:std{access=file,mux=ogg,dst='chemin/vers/dossier/nom_de_fichier.ogg'}" --dvd-device /dev/sr0 |
Bluray |
Webcam modifier
vlc v4l2:///dev/video1 (3 "/" !)
kopete
ou :
luvcview -d /dev/video0 -f yuv -s 640x480 : provoque bug d'affichage kde3
streamer -c /dev/video1 -b 32 -o image000.jpeg : 1 image
streamer -c /dev/video1 -s 800x600 -t 10 -r 1 -o image000.jpeg : 10 images
vlc v4l2:///dev/video0 :input-slave=alsa://hw:0,0 --sout="#duplicate{dst=display,dst=std{access=file,mux=mp4,dst=out.mp4}}" : enregistre et affiche
ajouter transcode{vcodec=mp4v,scale=1,acodec=mp4a}: ?
guvcview : enregistreur
luvcview -d /dev/video0 -L -> interroge capacités de la webcam
gphoto modifier
SQL modifier
commandes de base modifier
SHOW DATABASES
USE base
SHOW TABLES
DESCRIBLE table
SELECT champ,champ FROM table WHERE condition;
INSERT INTO table (champ_a,champ_b) VALUES('a','b');
UPDATE table SET champ_a=a WHERE champ_b='b';
DELETE FROM table WHERE champ='a';
TRUNCATE TABLE table;
SOURCE fichier
CREATE/DROP user <user>;
les mots de passe modifier
/usr/bin/mysql_secure_installation
mysqladmin -u root password : initial
mysqladmin -u root -p password : changer. Attention, il demande d'abord l'ancien mot de passe.
backup modifier
mysqldump -u root -p <database> --password=<pass> -h <host> <base?> > dump.sql : backup en sql
mysql -B -u root -p <database> -e "SELECT * FROM table;" > dump.csv : backup en csv
mysql -u root -p <database> < dump.sql : restore (non testé)
Divers modifier
mysql -p -u root -h 127.0.0.1 (!)
lancer mysql_secure_installation la 1ere fois et mettre un mot de passe pour les 3 (!) utilisateurs root.
phpmyadmin : http://127.0.0.1/phpMyAdmin/ + déplacer les fichiers de /var/www au bon endroit (!). ou /srv/www finalement ?
collation : utf8_bin sensible ou utf8_unicode_ci insensible ?
impression modifier
impression modifier
lpr -P HPNB -o portrait -o natural-scaling=100 -o media=A4 <fichier>(si image petite)
lpr -P HPNB -o scaling=100 -o orientation-requested=3 -o media=A4 <fichier> (si image grande)
kprinter <fichier> -P <printer> -# <nb>
libreoffice -pt <imprimante> *.odt
libreoffice --print-to-file [-printer-name printer_name] [-outdir ouput_dir] files
modifier
- Linux vers Linux :
Dans /etc/cups/cupsd.conf :
- Listen 172.16.XX.1:631 en haut de fichier
- Ajouter sur une nouvelle ligne aux 3 paragraphes <Location /> , <Location /admin> et <Location /admin/conf> : Allow from 172.16.XX.*
- Windows vers Linux :
droits /etc/cups/cupsd.conf + http://192.168.100.1:631/printers/HP
Installation imprimantes modifier
lpadmin -p HPNB -v socket://HPNB:9100/ -P /usr/share/cups/model/manufacturer-PPDs/hplip-hpps/hp-color_laserjet_cp1515n-ps.ppd.gz -o printer-is-shared=false -E lpadmin -p HPCL -v socket://HPCL:9100/ -P /usr/share/cups/model/manufacturer-PPDs/hplip-hpps/hp-color_laserjet_cp1515n-ps.ppd.gz -o printer-is-shared=false -E lpoptions -d HPNB lpoptions -p HPNB -o PageSize=A4 lpoptions -p HPNB -o HPServicesWeb=ProductManuals lpoptions -p HPNB -o HPTextNeutralGrays=Black lpoptions -p HPNB -o HPGraphicsNeutralGrays=Black lpoptions -p HPNB -o HPPhotoNeutralGrays=Black lpoptions -p HPNB -o CMAndResolution=Gray600x600dpi lpoptions -p HPCL -o PageSize=A4 lpoptions -p HPCL -o HPServicesWeb=ProductManuals lpoptions -p HPCL -o HPTextNeutralGrays=ProcessBlack lpoptions -p HPCL -o HPGraphicsNeutralGrays=ProcessBlack lpoptions -p HPCL -o HPPhotoNeutralGrays=ProcessBlack lpoptions -p HPCL -o CMAndResolution=CMYKImageRET3600 echo "ErrorPolicy retry-current-job" >> /etc/cups/cupsd.conf # désactive la mise hors ligne des imprimantes systemctl restart cups.service
lpstat -p : voir la liste des imprimantes
lpstat -v : voir les url
lpoptions -p <nom_imprimante> -l : voir options de l'imprimante (selon pilote)
lpoptions -d <nom_imprimante> : par defaut
lpadmin -x <nom_imprimante> : supprimer
scanner modifier
obligatoirement ajouter l'imprimante HP multifonction (pas le fax)
vi /etc/sane.d/dll.conf
décommenter :
hpaio (à la fin)
relancer service cups
(sinon "fichier ppd non trouvé" par hp-setup)
hp-setup -i 192.168.xx.22 --printer=INKJET -x --type=printer
Installer le scanner par pilote escl par yast2 sinon resolution à 300dpi
escl:http://192.168.XX.22:8080
xsane hpaio:/net/Officejet_J6400_series?ip=<IP> &
kooka
scanimage -L : voir url
scanimage -x 210 -y 297 -p -d $(scanimage -L | grep Officejet | grep escl | cut -d "\`" -f 2 | cut -d "'" -f 1) --format=jpeg --mode Gray/Color --resolution 600 > ex1.jpg
scanimage -x 210 -y 297 --progress --batch=page%d.jpg --batch-start=1 --batch-increment=1 --format=jpeg --source ADF --mode Gray --resolution 600 -d $(scanimage -L | grep Officejet | grep escl | cut -d "\`" -f 2 | cut -d "'" -f 1)
Reseau modifier
ip a
ip r
smbclient -L <IP> -U <User> -W <Workgroup> : découverte samba
wget -r -k -E -np -x --limit-rate <ko/s> <url> : aspirer un site (recursif, liens, php, pas remonter arbo, pas suivre robot)
trickle -d 50 youtube-dl... : limite la vitesse à 50ko/s à tester
socat TCP:212.27.48.10:80 TCP-LISTEN:643 : redirige 127.0.0.1:643 vers http://free.fr
dig
nslookup
dhclient eth0
aria2c : telechargement comme wget en mieux ?
Redirection du service DNS :
reseau=192.168.100.0 dns_dest=8.8.8.8 iptables -t nat -A PREROUTING ! -s $reseau/24 ! -d $reseau/24 -p tcp -m tcp --dport 53 -j DNAT --to-destination $dns_dest:53 iptables -t nat -A PREROUTING ! -s $reseau/24 ! -d $reseau/24 -p udp -m udp --dport 53 -j DNAT --to-destination $dns_dest:53
Serveur http simple modifier
woof modifier
En cours juin 2021
zypper addrepo https://download.opensuse.org/repositories/network:utilities/openSUSE_Leap_15.1/network:utilities.repo zypper install woof woof -c 999 <fichier> puis wget 127.0.0.1:8080
avec Php modifier
php -S 0.0.0.0:<port> -t /dossier # attention, pointer le navigateur sur le fichier
Twisted twistd modifier
twistd --nodaemon web --port tcp:<port> --path <path>
Déprécié : modifier
ifconfig eth0 <IP> netmask 255.255.255.0 up
ifconfig eth0 down
route add -net 192.168.2.2 -net IP netmask mask gw IP
route del -net 0.0.0.0 gw <IP> netmask 0.0.0.0
arp -a <IP> : get MAC addr
route add default gw <IP>
Booter une installation Linux depuis une clé USB modifier
Extlinux ext modifier
- mkfs.ext4 -O ^has_journal /dev/sdX (oui, oui, avec un ^)
- ou mkfs.ext2 /dev/sdX -L <label> ?
- mount /dev/sdX /mnt/sdX
- extlinux --install /mnt/sdX/
- y copier au moins les 2 fichiers de demarrage de la distrib
- extlinux.conf
Penser à enlever la clé juste après le chargement de l'installateur afin d'eviter les mélanges de partitions
Syslinux FAT modifier
Ne marche pas
Note : le portable Asus ne boote pas sur support USB si pas FAT. Grrr...
Lu dans la doc d'Arch : "Certain motherboard manufacturers have less compatibility for booting from USB devices than others. While an ext4 formatted USB drive may boot on a more recent computer, some computers may hang if the boot partition containing the kernel and initrd are not on a FAT16 partition"
- creer une partition FAT ≤ 2 GB et rendre le flag de fdisk bootable (touche 'a') ?
- fdisk, o : create a new empty DOS partition table ?
- mkfs -t vfat -F 16 -n FAT /dev/sdX1
- fatlabel /dev/sdX1 FAT ?
- Ne dois pas être monté
- syslinux --install /dev/sdX1 ?
- mount /dev/sdX1 /mnt/usb
- y copier les fichiers
- vi /mnt/usb/syslinux.cfg
.conf modifier
à mettre avec le même nom de fichier sur la racine de la clé !
PROMPT 1 SAY Bonjour DEFAULT install LABEL install KERNEL /linux APPEND ro root=/dev/<sdb ou sdb1> initrd=/initrd
SSH modifier
options de connection modifier
ssh-keygen
PasswordAuthentication no pour désactiver l'accés par mot de passe
ssh-agent modifier
password-less :
ssh-agent
ssh-agent -k pour killer
ssh-add .ssh/cle
ssh-add -l
ssh -i <cle> <arg>
vérifier la signature modifier
Coté distant :
ssh -p <port> user@IP -o VisualHostKey=yes -o FingerprintHash=md5
Coté local :
ssh-keygen -lvf /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -lv -E md5 -f /etc/ssh/ssh_host_ed25519_key
Execution d'un programme graphique sur un poste distant modifier
droits Can't open display modifier
distant : xhost +si:localuser:<user> ?
ssh modifier
ssh -p port user@IP 'kdialog --display :0 --msgbox "texte"'
ssh -p port user@IP 'konsole --display :0 -e <programme>'
ou encore plus simple
ssh -p port user@IP
export DISPLAY=:0
<programme>
VNC modifier
coté distant :
x11vnc -display :0 -auth /home/USER/.Xauthority -ncache --forever
si personne n'est encore loggué :
ps wwwwaux | grep auth
puis x11vnc -display :0 -ncache -auth <chemin trouvé> EN ROOT
coté local :
vinagre <ip>
vncviewer -viewonly <ip> ?
x2go modifier
SSH obligatoire a priori.
xpra modifier
- Sur le poste distant :
xpra start :1500 --start-child=/opt/kde3/bin/konsole --bind-tcp=172.16.1.1:1500 --bind-tcp=172.16.2.1:1500 --password-file=/pass.txt
- Pour arreter le serveur :
kill -15 $(ps -edf | grep -v "grep" | grep "/usr/bin/python /usr/bin/xpra" | cut -d " " -f 4)
- Sur le poste local :
xpra attach tcp:<IP>:1500 --password-file=/pass.txt
Attention, port > 1000 (?) sinon "connection refused"
Janvier 2018 : marche avec un utilisateur, pas avec l'autre. POURQUOI ? ? ?
RDP modifier
rdesktop -f -g 800x600 ip:port
(-f fullscreen , Ctrl-Alt-Enter pour sortir)
Depots modifier
OpenSUSE modifier
Voir carte SD.
# 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 modifier
gpg --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 # check https://www.centos.org/keys/#centos-7-signing-key rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 echo "proxy=http://192.168.XXX.XX:8080/" >> /etc/yum.conf # Si proxy wget -P /etc/pki/rpm-gpg/ https://rpmfind.net/linux/epel/RPM-GPG-KEY-EPEL-7 -e use_proxy=yes -e https_proxy=<IP>:<PORT> rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 #rpmfusion mkdir /tmp/rpmfusion wget -P /tmp/rpmfusion https://rpmfind.net/linux/rpmfusion/free/el/rpmfusion-free-release-7.noarch.rpm -e use_proxy=yes -e https_proxy=<IP>:<PORT> cd /tmp/rpmfusion/ rpm2cpio rpmfusion-free-release-7.noarch.rpm | cpio -idmv mv /tmp/rpmfusion/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-el-7 /etc/pki/rpm-gpg/ gpg --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-el-7 # check https://rpmfusion.org/keys rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-el-7 #VirtualBox wget -P /etc/pki/rpm-gpg/ https://www.virtualbox.org/download/oracle_vbox.asc gpg --with-fingerprint /etc/pki/rpm-gpg/oracle_vbox.asc rpm --import /etc/pki/rpm-gpg/oracle_vbox.asc yum --enablerepo=virtualbox search VirtualBox | grep "Oracle VM" yum --enablerepo=virtualbox install VirtualBox-5.X /usr/lib/virtualbox/vboxdrv.sh setup
- yum install yum-plugin-priorities
- rm -Rf /etc/yum.repos.d/*
Désactiver selinux et service firewalld
[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 modifier
yum install yum-plugin-priorities rm -Rf /etc/yum.repos.d/* releasever=$(cat /etc/os-release | grep VERSION_ID | cut -d "=" -f 2) #base gpg --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-x86_64 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-x86_64 #RPMfusion wget -P /etc/pki/rpm-gpg/ -O RPM-GPG-KEY-rpmfusion-free-fedora-$releasever "https://rpmfusion.org/keys?action=AttachFile&do=get&target=RPM-GPG-KEY-rpmfusion-free-fedora-$releasever" gpg --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-$releasever rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-$releasever
Vérifications des signatures en : https://getfedora.org/en/keys/ https://rpmfusion.org/keys https://www.virtualbox.org/wiki/Linux_Downloads
[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 modifier
En cours...
urpmi.removemedia -a urpmq --list-media urpmi.addmedia core_release https://fr2.rpmfind.net/linux/mageia/distrib/6/x86_64/media/core/release urpmi.addmedia --update core_update https://fr2.rpmfind.net/linux/mageia/distrib/6/x86_64/media/core/updates urpmi.addmedia tainted_release https://fr2.rpmfind.net/linux/mageia/distrib/6/x86_64/media/tainted/release urpmi.addmedia --update tainted_update https://fr2.rpmfind.net/linux/mageia/distrib/6/x86_64/media/tainted/updates urpmi --auto-update
Divers modifier
xmodmap -e "keycode 66 =" / xmodmap -e "keycode 66 = Caps_Lock" : désactive la touche majuscule
mkisofs -r -T -joliet-long -relaxed-filenames -o fichier.iso ./
find ./ -type f -mtime +100 -exec ls {} \; : execute la commande "ls" sur les fichiers plus anciens que 100 jours
tune2fs -L disk /dev/sdX : A tester
sudo /usr/sbin/pm-hibernate : hibernation
rpm2cpio rpm.rpm | cpio -idmv : unpack rpm
LD_LIBRARY_PATH=/install/zoom ./zoom : lancement sans installation prealable
ghex / okteta : editeurs hexadecimals
rpm -qa --queryformat '%{SIZE}\n' | awk '{sum += $1} END {printf("Total size in packages = %4.1f GB\n", sum/1024**3)}' : taille totale des paquets installés
/etc/os-release : Savoir quelle version de Linux c'est
xset s off -dpms ( old : xset s noblank ; xset s off ) : disable blank screen ?
echo $var | xsel -i : copier ; xsel -o = coller
base64 --wrap=0 in.dat > out.txt : converti fichier binaire en texte ascii
cat file.txt | base64 -d > out.jpg : converti texte ascii en fichier binaire
soffice --headless --convert-to csv:"Text - txt - csv (StarCalc)":"59,ANSI,1" --outdir /chemin fichier.csv : converti fichier ods en csv avec separateur ";"
dd if=fichierN of=dest bs=1 count=taille_fichierN seek=decalage : concaténation de fichiers
runuser -l user -c 'commande' : depuis root
disable lid : paquet acpi + xfce4-power-manager-settings
lxappearance
chmod -R g=rwX /dossier : X=que sur les dossiers
chmod u+rwX,g+rwX,o-rwx /path
convert -resize 50%
xortool-xor -n -f source -s "chaine" > dest
mount -t ramfs -o size=10m ramfs /mnt/ram/ ; chown XXX.root /mnt/ram/ ; chmod 700 /mnt/ram/ : disque en mémoire vive. Attention, "df" ne voit rien.
grub2 ajouter : "rw init=/bin/bash": lost password mot de passe perdu
fuser -vm <dev> : voir quoi bloque
echo "00:20:30" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }' : conversion secondes
clavier francais modifier
- loadkeys /usr/share/kbd/keymaps/i386/azerty/fr.kmap.gz
- En mode texte :loadkeys fr
- En mode graphique : setxkbmap -layout fr
Benchmark modifier
nexuiz-glx -benchmark demos/demo1 -nosound 2>&1 | egrep -e '[0-9]+ frames'
NVIDIA Corporation GT215 [GeForce GT 240] (rev a2) Nouveau 76.9fps
NVIDIA Corporation GF116 [GeForce GTX 550 Ti] Nividia 59.74 fps
AMD 5450 : 80 cores / ?
compression / décompression modifier
tar | c | _ | v | f | fichier_dest | répertoire |
x | z (zip) | fichier.tar.gz |
tar cfzv out.tar.gz /dossier1 /dossier2
tar zcf dest.tar.gz -C <dossier> . (ne pas oublier le point !)
rar x <fichier1>
zip -r output.zip *
Executable auto-extractible pour Windows sous Linux modifier
A tester
- Charger l'installateur Windows de 7-zip en https://www.7-zip.org/
- le décompresser (!) : 7z x 7zXXXX-x64.exe
- Trouver le fichier 7z.sfx
- Fichier de configuration a faire
;!@Install@!UTF-8! Title="Titre de la fenêtre" BeginPrompt=yes BeginPrompt="Voulez-vous installer la programme ?" ExecuteFile="cmd.exe" ExecuteParameters="https://fr.m.wikipedia.org/c ex2.bat" ;!@InstallEnd@!
- Faire un cat comme : Copy /b 7zS.sfx + config.txt + archive.7z archive.exe
- 7z a -mhe=on -p -sfx7z.sfx prog.exe data
MSDOS emulation modifier
dosbox modifier
dosbox -c "mount E ~/atab/install/windows/gog"
keyb fr
fichier de configuration :
fullresolution=desktop windowresolution=desktop keyboardlayout=fr
google anciene mode modifier
http://www.google.com/search?q=%s&sourceid=opera&num=%i&ie=utf-8&oe=utf-8&hl=fr&complete=0
google.fr/?complete=0
images.google.com/images?q=""&sout=1
news.google.fr/?complete=0
video.google.fr/?complete=0&tbas=1&q=""&source=lnt&tbs=hq:h
DNS modifier
dns1.isp.ovh.net/dns2.isp.ovh.net :
nameserver 91.121.161.184
nameserver 91.121.164.227
OpenDNS :
208.67.222.222
208.67.220.220
208.67.222.123 208.67.220.123 : DNS parental (à tester)
conf email IMAP modifier
Type IMAP
ssl0.ovh.net
port :993
SSL/TLS
SMTP : ssl0.ovh.net
port : 465
SSL/TLS
si pas de son sous OpenSuse modifier
mettre le user dans le groupe audio + reboot !
soit :
usermod -a -G audio <utilisateur>
- kmix
- gnome-volume-control
- gnome-control-center
- gmixer
- pavucontrol
- modprobe snd_hda_intel
- alsamixer
- pulseaudio &
- alsaconf (en root)
- alsactl kill rescan (en root)
- rcalsasound restart
- lsof /dev/dsp* /dev/audio* /dev/mixer* /dev/snd/* ?
- essayer avec audacity
commandes yast2 sound modifier
Commands: add Add sound card. Without parameters, add first one detected. channels List available volume channels of given card. modules List all available sound kernel modules. playtest Play test sound on given sound card remove Remove sound cards set Set the new values for given card parameters. show Show the information of given sound card summary Configuration summary of sound cards volume Set the volume of specific channels of the given card.
si polices trop petites modifier
taille 14
- qtconfig
- gtk-chtheme
- à faire en root et non root
- 120 dpi dans kcontrol, fonts
Désactiver l'Automount modifier
A TESTER :
/etc/hal/fdi/policy/95userpolicy :
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- This .fdi file prevents automount for every media (storage devices) e.g. floppy, CD/DVD, USB-Stick, USB-Disk, external hard disk. The original SuSE SDB supplied version was modified to meet Brownout needs. --> <deviceinfo version="0.2"> <device> <match key="storage.policy.should_mount" bool="true"> <merge key="storage.policy.should_mount" type="bool">false</merge> </match> <match key="storage.automount_enabled_hint" bool="true"> <merge key="storage.automount_enabled_hint" type="bool">false</merge> </match> <match key="storage.media_check_enabled" bool="true"> <merge key="storage.media_check_enabled" type="bool">false</merge> </match> <match key="volume.policy.should_mount" bool="true"> <merge key="volume.policy.should_mount" type="bool">false</merge> </match> <match key="volume.ignore" bool="false"> <merge key="volume.ignore" type="bool">true</merge> </match> </device> </deviceinfo>
Flux modifier
radios modifier
BBC : http://stream.live.vc.bbcmedia.co.uk/bbc_world_service
RTL2 : http://streaming.radio.rtl2.fr:80/rtl2-1-44-96?.wma
Radio Polonaise 1 : http://stream3.polskieradio.pl:8900/listen.pls
Radio Polonaise international : http://mp3.polskieradio.pl:8914/
RCF : http://www.streamakaci.com/radios/rcf.pls
Radio Maria : http://heberg.radioludo.com:8003/stream
Radio Notre Dame : http://windu.radionotredame.net/RadioNotreDame-Fm.mp3
Radio Cause Commune : https://icecast.libre-a-toi.org:8444/voixdulat_mp3
Libre à toi (Radio associative pro logiciel libre) : http://audio.libre-a-toi.org:8000/voixdulat_ogg
Radio Doudou : http://www.radioking.com/play/radio-doudou
Radio Esperance modifier
Antenne principale : http://stream.radio-esperance.net/esperance.mp3
Evangiles : https://esperance.streamakaci.com/parole-de-dieu.mp3
Image video en direct : https://www.youtube.com/embed/Z6_-kbEgqWM
TV modifier
KTO : m3u8 :
#EXTM3U #EXT-X-VERSION:4 #EXT-X-INDEPENDENT-SEGMENTS #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="flux",DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="FRA",URI="https://live-kto.akamaized.net/hls/live/2033284/KTO/04.m3u8" #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1927961,RESOLUTION=853x480,FRAME-RATE=25.000,AUDIO="audio" https://live-kto.akamaized.net/hls/live/2033284/KTO/03.m3u8
sources URLs modifier
https://github.com/junguler/m3u-radio-music-playlists/tree/main/allradio.net https://raw.githubusercontent.com/Free-TV/IPTV/master/playlist.m3u8 http://fluxradios.blogspot.com/ https://iptvcat.com/
Enregistrement modifier
timeout 10m cvlc <url> --sout file/ts:<file.mpg> timeout 10m cvlc <url> --sout file/mp3:<file.mp3> timeout 10m livestreamer -o <fichier.mpg> --player "vlc " "hds://http://livehdkto-lh.akamaihd.net/z/LiveStream_1@178944/manifest.f4m?g=KUSBXBWADFBA&hdcore=3.4.0" best mplayer -vf swapuv -dumpstream rtmp:// -dumpfile <fichier>
libdvdcss2 modifier
http://packman.links2linux.org/package/libdvdcss2
https://download.videolan.org/pub/libdvdcss/last/
xorg.conf modifier
Section "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 modifier
OpenSUSE modifier
qt5ct libXmu-devel-32bit libXmu6-32bit dolphin systemsettings-kde3 systemsettings5 i3 dmenu i3status alttab gnumeric abiword xdotool-devel neovim kde3-quanta perl-XML-Simple perl-XML-LibXML-Simple perl-MP3-Tag geany woof python3-PyJWT python3-blinker python3-ecdsa python3-fake-useragent python3-mohawk python3-ntlm-auth python3-oauthlib python3-parse python3-progressbar python3-pyee python3-pykerberos python3-pyppeteer python3-pyquery python3-requestbuilder python3-requests-aws python3-requests-cache python3-requests-download python3-requests-file python3-requests-ftp python3-requests-futures python3-requests-hawk python3-requests-html python3-requests-kerberos python3-requests-mock python3-requests-oauthlib python3-requests-toolbelt python3-requests-unixsocket python3-requests_ntlm python3-requestsexceptions python3-w3lib python3-websockets aria2 aria2-devel xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-gtk-lang xdg-desktop-portal-lang chromium-ffmpeg-extra wine scribus libgpgmepp6-32bit fastboot android-tools android-tools-mkbootimg android-tools-partition fprintd pam_fprint easy-rsa vsftpd
installation minimale modifier
kernel-source gcc gcc-c++ make dkms yast2-sshd clicfs openvpn acpi qupzilla mut squid rfkill kernel-source-vanilla rpm-build sparse rar cpanspec perl-MP3-Info perl-MP3-Tag git
patterns modifier
zypper in -t pattern KDE-DEFAULT devel_qt5 games gnome_games kde_games laptop 64bit EducationDesktopapplications KidsEducationDesktopSoftware YouthEducationDesktopSoftware base books console devel_C_C++ devel_basis devel_gnome devel_ide devel_java devel_kde devel_kde_frameworks devel_mono devel_qt4 devel_qt5 devel_rpm_build devel_web devel_yast dhcp_dns_server directory_server enhanced_base enlightenment file_server fonts games gateway_server generic_server gnome gnome_basis imaging kde kde_plasma kvm_server lamp_server lxde lxqt mail_server mate mate_basis misc_server multimedia network_admin office print_server remote_desktop sw_management tabletpc technical_writing voip x11 x86 xen_server xfce xfce_basis yast2_basis yast2_install_wf
Multimedia modifier
ffmpeg libavcodec-full vlc-codecs gstreamer-plugins-good gstreamer-plugins-libav
zypper in --repo packman ffmpeg lame gstreamer-plugins-bad gstreamer-plugins-ugly gstreamer-plugins-ugly-orig-addon gstreamer-plugins-libav libavdevice56 libavdevice58 libdvdcss2 vlc-codecs
zypper dup --allow-vendor-change --from packman
zypper in vlc vlc-codecs
zypper dup --from packman --allow-vendor-change
DVD modifier
charger https://download.videolan.org/pub/libdvdcss/last/XXX ./configure --prefix=/home/user/chemin make En root : cp -r /chemin/lib64/* /usr/lib64/ mkdir /usr/include/dvdcss cp -r /chemin/include/dvdcss/* /usr/include/dvdcss/
Si jeux modifier
lutris innoextract FlightGear bzflag nexuiz abe blobby csmash emilia extreme-tuxracer gnuchess gtetrinet hedgewars jumpnbump lincity micropolis neverball nogravity OpenTTD ppracer Sauerbraten scorched3d torcs smc trigger-rally toycars ufoai worminator vdrift stuntrally gl-117 tremulous OpenArena Teeworlds 0ad supertux supertux2 lugaru warzone2100 supertuxkart frogatto Foobillard xmoto lbreakout2 Enigma gcompris gcompris-voices-en gcompris-voices-fr chromium-bsu ioquake3 openarena xonotic Reaction warsow smokin-guns urbanterror worldofpadman cubosphere neverball bomber dustrac dreamchess ksirk kolf minetest mrrescue naev teeworlds bitfighter knights xboard fairymax gnome-chess gnome-chess-lang eboard scid crafty gnuchess stockfish cutechess domination chickens pongix endless-sky assaultcube doomsday doomretro
Echec modifier
xboard -fcp 'crafty xboard'
xboard -ics -icshost freechess.org
CentOS/Fedora modifier
Paquets modifier
gcc make cmake perl kernel-devel dkms acpi buildsys-build-rpmfusion-kerneldevpkgs-current.x86_64 libva-intel-driver openvpn grub-customizer wget wireless-tools nfs-utils radicale radicale-httpd nmap
yum groupes modifier
- yum grouplist
- yum groupinstall --setopt=group_package_types=mandatory,default,optional
- yum list --showduplicates kernel
"X Window system" "xfce" "GNOME Desktop" "MySQL Database client" "MySQL Database server" "NFS file server" "Network Storage Server" "development" @kde-desktop-environment
Mageia modifier
task-lxqt kfind qt5ct