Bidules freebsd

farid_h

<defunct>
Contributeur
Ce que j'aime bien sous FreeBSD 10+, c'est que clang a remplace gcc comme compiler de base. Les messages d'erreur sont surtout avec c++ (clang++) et templates immensement plus lisibles. :)
 

Nalinux

It's not a bug, it's a feature.
Je me suis vite rendu compte que les bash isms sont un problème :)
Des trucs très simples que j avais écrits ne fonctionnaient plus, a cause de bêtes tests if .
C est rageant de chercher des heures pour ca, a revoir toutes les docs et modifier.
J aime la complétion. Mais si c est pour ne pas être portable, ça perd de son intérêt ..

Un truc #!/bin/sh qui fonctionne sous Debian, mais plus sous FreeBSD, c'est parfait pour perdre du temps :)
 

farid_h

<defunct>
Contributeur
Je me suis vite rendu compte que les bash isms sont un problème :)
Des trucs très simples que j avais écrits ne fonctionnaient plus, a cause de bêtes tests if .
C est rageant de chercher des heures pour ca, a revoir toutes les docs et modifier.
J aime la complétion. Mais si c est pour ne pas être portable, ça perd de son intérêt ..
Dans quelques jail(8), j'ai simplement installe bash et ajoute a /etc/shells. Mais t'as raison, c'est plus propre de de-bash-iser ses scripts. ;)
 

Nalinux

It's not a bug, it's a feature.
A tout hasard ...
Le port du plugin flash /usr/ports/www]$ cd linux-f10-flashplugin11/ était cassé.
J ai bricolé les fichiers, récup a la main pour mettre dans distfiles, modif pour avoir le bon sha256, et ca a fini par s installer.

Le problème, c est que sur Youtube, ça affiche en permanence les "Stats for nerds", même si je ferme cette fenêtre. Ca revient au bout de 3 a 4 secondes.
Aucun pb sur Dailymotion ou autres sites.

J ai fouillé dans la config, dans le panneau de config, dans about:config, about:plugins, je ne trouve nulle part ou désactiver ça.
Vu que je cherche de la doc pour un truc, c est assez désagréable :)
On peut toujours passer par VLC, mais c est pas souple.
Ça te dit un truc ?

Edit : ca ne le fait que sous Firefox, pas sous Chromium.

76512
 

Pièces jointes

  • Capture-3.png
    Capture-3.png
    38.2 KB · Affichages: 9
Dernière édition:

farid_h

<defunct>
Contributeur
Strange... Comme je n'utilise pas flash sur mon desktop (je ne veux pas polluer mon installation avec tous les fichiers du linuxulator), je ne peux meme pas confimer que c'est pareil ici. :(
 

Nalinux

It's not a bug, it's a feature.
Découvert un truc pratique pour les scripts.
Comment générer un ou plusieurs nombres aléatoires entre 2 valeurs limites:
Exemple, 5 valeurs au hasard entre 10 et 100
Code:
$ jot -r 5 10 100
35
51
100
79
33
C est une bonne alternative a $RANDOM, qui n existe que sous bash.
Ça parait un détail, mais en utilisant du code portable, pas besoin de ré écrire selon la version d Unix du moment.
Même entre 2 Linux, puisque on peut avoir /bin/bash ou /bin/dash selon la distribution quand on appelle /bin/sh.
 

Nalinux

It's not a bug, it's a feature.
Je viens de voir que jot est spécifique a BSD ...
Pas grave, enum sous Linux fait pareil, la syntaxe semble compatible dans mon utilisation.
Mais pas a 100 % ! Gaffe.
 

Nalinux

It's not a bug, it's a feature.
Peut etre que openssl(1) peut creer des nombres au hasard d'une facon portable? (j'ai pas verifie)

Edit:

https://www.openssl.org/docs/apps/rand.html
Je n arrive pas a ouvrir, j ai des soucis de connexion ici.
Mais j ai trouvé ici :
http://www.tech-recipes.com/rx/1264/generate-passwords-with-openssl/

Trop complexe pour mon usage.
En fait, je vérifie régulièrement avec crontab une page web pour loguer qd le compteur de visites change.
Le gars s en ai rendu compte et mon IP est bloquée.

Alors j ai modifié.
Alors au lieu de faire a heure fixe , je lance a heure aléatoire, et ensuite j ai une liste de proxy un peu partout dans le monde, et un parmi eux est choisi aléatoirement pour récupérer la page avec wget :)
Si un proxy ne fonctionne pas, ça en choisi un autre dans la liste.
Ça devient déjà plus compliqué a bloquer :D

A vrai dire, c est tellement aléatoire que moi même je ne sais même pas quand mon script va se lancer, et par quel pays il va passer ...
 

farid_h

<defunct>
Contributeur
openssl produit un nombre configurable de bytes. Produits en 2, tu as un short int aleatoire. Il suffit de convertir vers un nombre dans le domaine qui t'interesses. Pareil pour 1 byte, 4 bytes... Ou, alternativement, lis ces bytes de /dev/random.
 

Nalinux

It's not a bug, it's a feature.
openssl produit un nombre configurable de bytes. Produits en 2, tu as un short int aleatoire. Il suffit de convertir vers un nombre dans le domaine qui t'interesses. Pareil pour 1 byte, 4 bytes... Ou, alternativement, lis ces bytes de /dev/random.
Je ne doutes pas qu il soit performant, surtout pour du random vu son utilisation :)
Mais parfois faut pas se casser la tete.
Il faut que l outil soit adapté au besoin.
Je pensai devoir ecrire un truc maison, pour rester dans des nombres limites que j ai besoin de respecter, et enum ou jot sont parfaits pour ca.
Exemple, j ai actuellement 107 proxy possibles dans mon fichier de liste. Si je tire avec openssl ou autre un chiffre supérieur a 107, il faut calculer pour rester en base 107. Tout un boulot ...
Si demain je mets une autre liste de proxy avec 174 differents, ca change tout.
On peut, mais ca deviens usine a gaz :)
La je recup le nombre disponibles avec wc -l, et pif paf je met ca dans une variable et ca roule tout seul .
Magique ! Et feignasse ... :D
 

Nalinux

It's not a bug, it's a feature.
Y a des trucs sympas, en effet :)
Déjà un simple date | md5sum c est dur a improviser si c est pour un passwd :)
A l origine, j avais en tête de partir de l utilisation de la mémoire et bricoler a partir de ça.
C est ça qui est marrant, il y a toujours 50 solutions pour un problème donné.
 

Nalinux

It's not a bug, it's a feature.
Question a la noix ...
J ai un fichier qui contient une liste de 110 proxy, et je veux compter le nombre de lignes.
Exemple d une ligne :
Code:
58.114.124.249:8088#TW<br />
64.31.22.143:3127#US<br />
175.182.176.51:9064#TW<br />
212.175.17.238:8080#TR<br />
107.182.16.221:8089#US<br />

Le script commence par
#!/bin/sh
Code:
$ls -l /bin/sh
lrwxrwxrwx 1 root root 4 nov  2 12:42 /bin/sh -> dash

Sous Linux, on a ceci :
Code:
$ wc -l liste_proxy.txt
110 liste_proxy.txt
Donc, pour récupérer le chiffre 110 uniquement, la commande complète est :
Code:
$NBRE_PROXY=`wc -l liste_proxy.txt | cut -d' ' -f1`

$"Nombre de proxy: $NBRE_PROXY"
Nombre de proxy: 110

Maintenant, meme manip sous FreeBSD :

Code:
$ ls -l /bin/sh
-r-xr-xr-x  1 root  wheel  141696 16 jan  2014 /bin/sh

Code:
$ wc -l liste_proxy.txt
     110 liste_proxy.txt
Il y a 6 espaces avant le nombre !!!

Donc, je doit faire le ménage ainsi :
Code:
$NBRE_PROXY=`wc -l liste_proxy.txt | cut -d' ' -f6`

C est quoi la blague ? :)
 

farid_h

<defunct>
Contributeur
Tu peux enlever les leading whitespaces avec sed(1), le regexp est qqchose comme /^[ \t]*//

Code:
wc file.txt | sed -e 's/^[ \t]*//' | cut ...
 

Nalinux

It's not a bug, it's a feature.
Tu peux enlever les leading whitespaces avec sed(1), le regexp est qqchose comme /^[ \t]*//

Code:
wc file.txt | sed -e 's/^[ \t]*//' | cut ...
On peut contourner le pb, c est ce que j ai fait avec 2 versions.
C est juste que je ne comprend pas pourquoi wc me met des espaces en début de ligne dans un cas et pas dans l autre.
 

farid_h

<defunct>
Contributeur
On peut contourner le pb, c est ce que j ai fait avec 2 versions.
C est juste que je ne comprend pas pourquoi wc me met des espaces en début de ligne dans un cas et pas dans l autre.
Dans le source code wc.c, il y a des

Code:
/* ... */

(void)printf(" %7ju", linect);

/* ... */

(void)printf(" %7ju", wordct);

/* ... */

(void)printf(" %7ju", charct);

https://svnweb.freebsd.org/base/stable/10/usr.bin/wc/wc.c?revision=256281&view=co

Je suppose que c'est pour aligner les colonnes quand il y a plusieurs lignes.

Le code est vieux, on pourrait ajouter une option (-r, pour machine-readable), et si cette option est utilisee, imprimer les resultats differament. Pour les fans du XML (que je ne suis pas), ajoutons aussi l'option -x pour produire:

Code:
<wc>
  <file name="file.txt"/>
  <lines>131</lines>
  <words>23</words>
  <chars>1231</chars>
</wc>

Mais ca, c'est vraiment de l'overkill... :D
 
Dernière édition:

farid_h

<defunct>
Contributeur
Et ne codes pas le 6 dans cut, c'est instable s'il y a plus que 999 lignes ou moins que 100 lignes. Utilises l'astuce avec sed pour enlever tous les leading spaces, qu'ils soient 7, 6, 5, 4, ...
 

Nalinux

It's not a bug, it's a feature.
Et ne codes pas le 6 dans cut, c'est instable s'il y a plus que 999 lignes ou moins que 100 lignes. Utilises l'astuce avec sed pour enlever tous les leading spaces, qu'ils soient 7, 6, 5, 4, ...
Excellente remarque !
Mais les espaces sont au début du résultat, je ne sais pas si avec un résultat supérieur a 999 il n y en aurai que 5 ...
Le problème ne se posera pas dans mon cas, je doute dépasser ce chiffre un jour, mais ça serait en effet plus propre et rigoureux.
A noter que si j en ai moins que 100, on retombe en fait sur le même souci éventuel ...
J écrit au fur et a mesure que je réfléchi :)
Et me rend compte que j avais lu vite et que tu évoque aussi ce cas :)

Après test, moins de 100 ça ne fonctionne plus, en effet.
Il faut cut -d' ' -f8

Vendu, je vais modifier ça :)
 

Nalinux

It's not a bug, it's a feature.
C est pas neuf comme programme, mais ça rend service.
On peut facilement assigner des touches du clavier a un programme / script.
Il suffit d utiliser xbindkeys.
Dans mon cas, je ne me sers jamais des touches Home et End du portable, les touches dédiées Fn + xx ne fonctionnent pas toujours, alors je les ai assignées au contrôle du volume.

Contenu de mon .xbindkeysrc
Code:
"aumix -v -"
Home

"aumix -v +"
End
L appui sur Home lance le mixer console "aumix -v +" de manière non interactive, afin de monter le volume.
Et je baisse avec End.

Il faut bien évidemment lancer xbindkeys au démarrage, et le redemander après modif du fichier de config.
Sous Linux, il existe un utilitaire pour faciliter la configuration : xbindkeys-config .
Pour une raison inconnue, j ai déjà vu xbindkeys entrer en conflit avec le déplacement des fenêtres en utilisant simplement Alt + clic gauche .
A savoir en cas de souci de ce coté la.

Autre usage pratique : capture d écran directement dans un fichier avec la date.

Je lance dans un terminal "xbindkeys --key" (voir xbindkeys -h pour les options ), puis appuie sur la touche de mon choix afin d en connaitre le nom :
Code:
$ xbindkeys --key
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"(Scheme function)"
  m:0x0 + c:105
  Next
On voit que j ai appuyé sur la touche "Next"
J ajoute donc dans le fichier de configuration $HOME/.xbindkeysrc :
Code:
"import -window root `date +%F-%R`.png"
Next
Suffit de tuer le process actuel et le relancer :
Code:
$ killall -9 xbindkeys
$ xbindkeys &
$ disown  (éventuellement, apparemment ça dépend des versions)
En supposant l existence d un dossier "Images" dans le répertoire utilisateur, ça fait une capture de tout l écran sous le nom de :
/home/phil/Images/2014-11-27-19:37.png
 

Nalinux

It's not a bug, it's a feature.
Je suis faineant, et j avais des images iso a monter.
Alors hop, j ai bricolé 2 petits nautilus-script.
Pour être "propre", j ai mis Zenity pour le pass , mais chez moi le user a du sudo sans passwd :)

Montage avec un clic droit sur le fichier.iso
Code:
#!/bin/sh
# Nautilus script pour monter image iso sous FreeBSD
# $HOME/.gnome2/nautilus-scripts/mount_iso

# Creation du repertoire de montage si il n existe pas
if [ ! -d $HOME/Media ]; then
    mkdir $HOME/Media
fi

# Nom du point de montage du nomdu fichier .iso
POINT_DE_MONTAGE=`basename $* .iso`

# Creation du repertoire de montage cette image .iso
if [ ! -d $HOME/Media/$POINT_DE_MONTAGE ]; then
    mkdir $HOME/Media/$POINT_DE_MONTAGE
fi

# On prend les droits root avec sudo
zenity --password | sudo -S -s

# On crée le périphériqu dans /dev en récupérant son identifiant
DEV_MD=`sudo mdconfig -a -t vnode -f $*`

# Montage de l iso
sudo mount_cd9660 /dev/$DEV_MD $HOME/Media/$POINT_DE_MONTAGE

Démontage avec un cli droit sur le repertoire de montage, par defaut $HOME/Media/$Nom de l image
Code:
#!/bin/sh
#$HOME/.gnome2/nautilus-scripts/umount_iso

# Récuperer des infos sur le point demontage.
# On en a besoin pour libérer le périphérique /dev/md*

POINT_DE_MONTAGE=`mount | grep md | grep $* | cut -w -f3`

DEV_MD=`mount | grep md | grep $* | cut -d' ' -f1 | sed -e 's/\/dev\/md//g'`

# On prend les droits root avec sudo
zenity --password | sudo -S -s

# Demontage de l image
sudo umount $POINT_DE_MONTAGE

# Suppression du /dev/md
sudo mdconfig -d -u $DEV_MD

# Suppression du repertoire de montage
rmdir $*
 

Nalinux

It's not a bug, it's a feature.
@farid_h : tu connais autre chose que recordmydesktop pour des videos de l écran ?
Le résultat est moche, avec des carrés, et je n arrive pas ni a compiler SimpleScreenRecorder (http://www.maartenbaert.be/simplescreenrecorder/ ), ni a faire fonctioner le binaire static Linux.

C est pas vraiment important, c est le plaisir d essayer de tout avoir fonctionnel.
Les "manques" pour le moment :
- skype
- webcam
- Google Hangouts
- pas de Java dans OpenOffice (pas trop grave)
- parfois mencoder segfault a la fin d un travail, mais sans incidence sur le résultat.
- gkrellm-volume compile mais ne trouve pas les périphériques
- pas pratique en wifi si on se déplace. J ai testé wpa_gui , sans trop de succès :)
- applis OpenGL Linux plantent
$ /compat/linux/usr/bin/glxgears
MESA-LOADER: could not create udev device for fd 4
J ai pourtant recup la libudev 32 bits. Semble être un pb de la i915 Intel

Suivi dans les log de X par
[ 4141.252] [mi] EQ overflow continuing. 100 events have been dropped.
[ 4142.219] (EE) intel(0): Detected a hung GPU, disabling acceleration.
[ 4142.219] (EE) intel(0): When reporting this, please include i915_error_state from debugfs and the full dmesg.
[ 4142.219] [mi] Increasing EQ size to 512 to prevent dropped events.
[ 4142.220] [mi] EQ processing has resumed after 149 dropped events.
[ 4142.220] [mi] This may be caused my a misbehaving driver monopolizing the server's resources.

Ça va mal :p
- y a plus nslookup ... Faut faire avec drill. Et a cause de Mowgli, j ai peur des Mandrills
- polices de caractères moins"lisses", toujours pas compris pourquoi ... Elles sont la dans xog.conf pourtant ..

Ce qui va bien :
- tout le reste :D
- compiz impeccable !!! Dans la série "ça sers a rien".

Truc introuvable : comment obtenir les infos au sujet d un paquet avec pkg ?
L équivalent de "apt-cache show" ?
 
Dernière édition:

Nalinux

It's not a bug, it's a feature.
Ça sers a rien mais c est joli :D
En fait, je ne joue jamais ou presque.
Uniquement en réseau avec mes fils.

Si c est saccadé, c est parce que j ai enregistré avec Vlc, il a un peu de mal.

 

Nalinux

It's not a bug, it's a feature.
Y a trop de grave dans mes hauts parleurs, mais ils n ont pas de réglage grave/aigu.
Pas grave ..
On ajoute ce qu il faut dans /boot/loader.conf
Code:
$ less /boot/loader.conf
hint.pcm.0.eq=1
hint.pcm.1.eq=1
................
Et on reboot.

Suffit ensuite d utiliser mixer :
Code:
[phil@yoshi ~]$ mixer
Mixer vol      is currently set to  65:65
Mixer bass     is currently set to  60:60
Mixer treble   is currently set to  50:50
Mixer pcm      is currently set to 100:100
Mixer speaker  is currently set to 100:100
Mixer mic      is currently set to  50:50
Mixer rec      is currently set to  93:93
Recording source: mic

[phil@yoshi ~]$ mixer bass 40
Setting the mixer bass from 60:60 to 40:40.

[phil@yoshi ~]$ mixer
Mixer vol      is currently set to  65:65
Mixer bass     is currently set to  40:40
..............
 
Haut