On peut le raccourcir un tout petit peu en omettant le label, puisque d'après le man (et confirmé par mes tests), lorsqu'il est omis, ça branche en fin de script.
Sinon, avec sed, on peut aussi travailler par bloc de lignes (pas seulement en ligne à ligne), et ça permet de simplfier :
sed -n '/TIMESTAMP/,/OUT/{
/IN\|OUT\|TIMESTAMP/{
p
}
}' /path/to/file
à noter que dans ces deux versions, on affiche le début du dernier bloc TIMESTAMP/IN/OUT même s'il est incomplet.
par "requête SQL plus courte", tu parles de la longueur de la chaîne de caractères qui contient la requête ? ou de la conso mémoire lors de son exécution ?
C'est mieux?
En mettant de côté le "petit" problème opérationnel avec RMS (le clônage n'existe pas ;-), envisageons un logiciel pas libre qui forge des captures d'écran de logiciel libre et qui les envoie toutes les secondes (au lieu d'une seule fois).
Quand l'utilisateur veut se connecter, le serveur lui envoie la fameuse fonction d'authentification générée pseudo-aléatoirement. Là l'utilisateur dispose de 3 minutes pour compiler le client et se connecter avec. Le role de la fonction c'est qu'elle doit être réputée très difficile a analyser et réimplémenter en 3 minutes. Donc l'utilisateur ne pourra en 3 munites n'utiliser que celle là.
Je pense qu'en quelques dizaines de connexion, un attaquant aura suffisamment de billes pour distinguer les quelques classes de ces fonctions (vu comme c'est déjà pas simple d'en fabriquer ne serait-ce qu'une seule, je ne suis pas convaincu que ça soit très faisable d'en générer pleins à la volée), analyser tranquillement et écrire du code pour gérer tous les cas.
Sinon, pas la peine de s'embêter, suffit de s'en servir une fois dans un client libre dans la plage des 3 min, en espionnant la mémoire ou les traces réseaux, et les quelques informations utiles sont accessibles.
Vu tout ce que tu lui demandes de faire à cette fameuse fonction, c'est plus une fonction, c'est un logiciel ! Ce qui nous ramène au cas précédent. Il suffit de comprendre le protocole entre cette fonction et le serveur pour la ré implémenter sans l'utiliser.
Le problème fondamental, c'est que tu dois donner au client des moyens pour se connecter, et, tu peux essayer tout ce que tu veux pour essayer d'obscurcir le mécanisme d'authentification, in fine, la machine cliente dispose toujours des informations nécessaires à la connexion. Du coup, ça sera toujours contournable par quelqu'un d'expérimenté (cf toutes les majs d'Itunes).
La liberté n'a pas de prix!
En même temps, il me semblait que pour la GPL, l'idée, c'était de protéger les liberté tant des développeurs que des utilisateurs. Si on ne s'occupe de protéger la liberté que d'un point de vue dogmatique (il faut que ça doit libre parce qu'il faut que ça soit libre), ça perd un peu de son sens.
En fait, on mélange un peu deux choses dans ce débat j'ai l'impression : la liberté du code et l'ouverture d'un service. Et là, on n'essaie de calquer les notions de liberté (qu'on a l'habitude de voir pour le code) sur un hybride code/service, et amha, ça marche pas bien :)
précaution d'usage : IANAL (je ne suis pas juriste)
Par conséquent, j'imaginais qu'une donnée (au sens large), nécessaire pour se connecter au service, licenciée en gplv3, s'apparentait à du code source et donc ne pouvait être "fermée".
sauf qu'en droit, y a pas beaucoup de place pour l'imagination (ni pour l'imprécision d'ailleurs).
"Une donnée s'apparentant à du code source", j'avoue avoir du mal à cerner ce que ça veut dire :)
Le code source est protégé, pas ce qu'il fait (il n'y a pas de brevets logiciels en Europe). Du coup, réimplémenter un algorithme utile à une interaction avec du soft GPL n'en fait pas (à mon avis) une violation de la GPL.
Pour finir, en dehors du fait qu'on peut s'interroger sur ce que signifie le mot libre dans un tel contexte, à part des conditions d'utilisations strictes, l'enregistrement de tous les utilisateurs, des mécanisme techniques (pas très fiables) pour détecter les violations des conditions et des mécanismes de fermeture de compte, je ne vois pas trop.
Mais là, ça sort du cadre de la technique.
bon, je répond un peu en vrac, mais en même temps, ton commentaire est un peu ramassé sur lui même :)
je peux t'envoyer des captures d'écran d'un logiciel ... et en utiliser un autre.
Et ta fonction d'authentification, quelle est son rôle ? S'il s'agit simplement d'encapsuler la valeur magique dans une fonction, y a encore moins de doute qu'avec un simple chiffre magique. Il suffit de réimplémenter sa propre fonction d'authentification, d'utiliser la valeur magique récupérée du fichier téléchargé, et cest plié.
(sachant qu'il n'y a déjà pas de doute sur un simple nombre, cf DeCSS)
S'il faut que j'upload mon client SOAP pour l'appeler ensuite en SSH, reconnais que ça perd une partie de son intérêt.
Et puis, comment vérifies-tu que le programme uploadé en SSH est bien libre ?
Si le fichier source est sous GPL, ca force même le client à l'être aussi.
Juridiquement oui, techniquement, c'est beaucoup moins certain ;)
Finalement c'était pas si difficile que ca :D
Ah, voilà une conclusion qui va faire plaisir à nos amis industriels du disque, du cinéma et des jeux vidéos, parce que pour l'instant, ils y arrivent pas =)
(ok, ils veulent le faire dans l'autre sens, mais c'est une problématique symétrique de ce point de vue là)
ça ne marche pas. Rien n'empéche de récupérer ce nombre magique et de l'utiliser dans un fichier à soi, sans faire une quelconque référence au fichier "chiffre_magique" en GPL V3. En fait, tu ne peux pas protéger un nombre.
Jette un oeil sur l'AGPL (Affero GPL), ça pourrait p-e te convenir (mais j'ai l'impression que ça couvre un autre problème en fait).
Concernant l'accès au service, techniquement, je ne vois pas comment tu peux forcer l'utilisation d'une implémentation GPL (ou autre licence libre) d'un client.
A priori, tu publieras un protocole que les clients devront implémenter pour interagir avec le serveur.
Ensuite, vu que l'intégralité des échanges client/serveur sera défini dans ce protocole, il sera techniquement rigoureusement impossible de distinguer un client libre d'un client proprio à partir du moment ou ils implémentent tous les deux correctement le protocole.
Tu peux éventuellement favoriser (mais pas garantir) l'émergence de clients libres en proposant des API en affero GPL.
Sinon, dans ton commentaire, quand tu parles de logiciels proprios, on pense tout de suite à la méchante boite parasite qui se goinfre sur le dos des gentils développeurs de LL (ou alors c'est juste moi, possible que je souffre d'un biais sémantique :)
mais si quelqu'un chez lui implémente ce protocole dans un soft qu'il utilise chez lui et qu'il ne redistribue à personne, c'est aussi une implémentation propriétaire.
Pour finir, est-ce vraiment bloquer l'utilisation de logiciels proprios que tu veux ? ou simplement fermer l'utilisation à tout logiciel à visée commerciale ?
presque bien, tant que les noms de fichiers n'ont le mauvais goût de contenir des espaces.
ça peut se contourner en awk (en bouclant de $2 jusqu'à $NF), mais c'est un peu pénible.
ça peut aussi se faire en sed :
attention, sécuritaire n'est pas un adjectif pertinent dans le contexte.
Tel un pirate sans vergogne, je cite le TLF :
SÉCURITAIRE, adj.
Conforme à la notion de sécurité publique
Rem. Ce mot est empl. avec une connotation légèrement péj. qui souligne le fait que la défense de la sécurité publique est susceptible d'engendrer des abus de pouvoir.
ça dépend de ce que tu veux dire par "effacé", si tu as juste modifié la table des partitions (à coup de fdisk, diskdruid ou autre gparted), il suffit de recréer la partition telle qu'elle était et tout va bien.
Par contre, si tu as lancé un mkfs.vfat (ou dans le genre) ou cliqué sur le bouton qui fait le formattage du système de fichier, c'est mort.
Le formatage d'un fs par un autre ne touche que la table de partition, n'est-il pas ??
non, il n'est pas.
et j'en déduis que tu es plutôt dans le second cas ... :/
sinon, vu que tu ne réutilises pas du tout la valeur antérieure si jamais elle est présente, tu peux aussi faire systématiquement un delete de la ligne puis un add à la fin du fichier.
ça ferait une plus jolie ligne que ta ligne actuelle, et ça serait plus lisible que mon sed :)
Le sed ne devrait pas retourner un code d'erreur si le search ne marche pas ?
si on en croit ton test, il semblerait que non ;-)
Sed travaille par bloc, et là, tu cherches à lui faire faire une opération sur l'intégralité du fichier. Du coup, pour que sed puisse se charger de ça, il faut le faire travailler sur l'intégralité du fichier (,$).
Ensuite, ça revient à écrire un script faisant une opération quand le fichier match, et une autre quand il ne matche pas.
$ sed -f ./tst.sed file1
pattern1 val1bis
pattern2 val2
$ sed -f ./tst.sed file2
pattern2 val2
pattern1 val1bis
mais bon, là, c'était juste pour faire joujou avec sed (et je dis pas que c'est la meilleure syntaxe sed pour ce truc là ...), mais je serais toi, je ferais du grep -l pour décider si tu fais du remplacement ou de l'ajout
les crochets sont interprétés par le shell avant d'être injectés dans grep, du coup, grep travaille bien sur ce que tu veux greper.
par contre, ps affiche la ligne de commande telle qu'elle a été saisie (donc avec les crochets), qui, du coup, n'est pas matchée par le grep (pour lequel les crochets ont été interprétés par le shell).
comme c'est pas très clair ce que je dis, voici l'exemple : $ps -edf |grep gre[p]
gab 8436 7580 0 16:19 pts/5 00:00:00 grep gre[p]
[^] # Re: utiliser une variable
Posté par gaaaaaAab . En réponse au message filtre avec awk. Évalué à 3.
On peut le raccourcir un tout petit peu en omettant le label, puisque d'après le man (et confirmé par mes tests), lorsqu'il est omis, ça branche en fin de script.
Sinon, avec sed, on peut aussi travailler par bloc de lignes (pas seulement en ligne à ligne), et ça permet de simplfier :
sed -n '/TIMESTAMP/,/OUT/{
/IN\|OUT\|TIMESTAMP/{
p
}
}' /path/to/file
à noter que dans ces deux versions, on affiche le début du dernier bloc TIMESTAMP/IN/OUT même s'il est incomplet.
[^] # Re: .
Posté par gaaaaaAab . En réponse au message SQLite : IN. Évalué à 1.
[^] # Re: je veux bien mais
Posté par gaaaaaAab . En réponse au message LUA : factoriser du code. Évalué à -2.
[^] # Re: comme ça, non
Posté par gaaaaaAab . En réponse au message Un peu capillotracté mais.... Évalué à 1.
En mettant de côté le "petit" problème opérationnel avec RMS (le clônage n'existe pas ;-), envisageons un logiciel pas libre qui forge des captures d'écran de logiciel libre et qui les envoie toutes les secondes (au lieu d'une seule fois).
Quand l'utilisateur veut se connecter, le serveur lui envoie la fameuse fonction d'authentification générée pseudo-aléatoirement. Là l'utilisateur dispose de 3 minutes pour compiler le client et se connecter avec. Le role de la fonction c'est qu'elle doit être réputée très difficile a analyser et réimplémenter en 3 minutes. Donc l'utilisateur ne pourra en 3 munites n'utiliser que celle là.
Je pense qu'en quelques dizaines de connexion, un attaquant aura suffisamment de billes pour distinguer les quelques classes de ces fonctions (vu comme c'est déjà pas simple d'en fabriquer ne serait-ce qu'une seule, je ne suis pas convaincu que ça soit très faisable d'en générer pleins à la volée), analyser tranquillement et écrire du code pour gérer tous les cas.
Sinon, pas la peine de s'embêter, suffit de s'en servir une fois dans un client libre dans la plage des 3 min, en espionnant la mémoire ou les traces réseaux, et les quelques informations utiles sont accessibles.
Vu tout ce que tu lui demandes de faire à cette fameuse fonction, c'est plus une fonction, c'est un logiciel ! Ce qui nous ramène au cas précédent. Il suffit de comprendre le protocole entre cette fonction et le serveur pour la ré implémenter sans l'utiliser.
Le problème fondamental, c'est que tu dois donner au client des moyens pour se connecter, et, tu peux essayer tout ce que tu veux pour essayer d'obscurcir le mécanisme d'authentification, in fine, la machine cliente dispose toujours des informations nécessaires à la connexion. Du coup, ça sera toujours contournable par quelqu'un d'expérimenté (cf toutes les majs d'Itunes).
La liberté n'a pas de prix!
En même temps, il me semblait que pour la GPL, l'idée, c'était de protéger les liberté tant des développeurs que des utilisateurs. Si on ne s'occupe de protéger la liberté que d'un point de vue dogmatique (il faut que ça doit libre parce qu'il faut que ça soit libre), ça perd un peu de son sens.
En fait, on mélange un peu deux choses dans ce débat j'ai l'impression : la liberté du code et l'ouverture d'un service. Et là, on n'essaie de calquer les notions de liberté (qu'on a l'habitude de voir pour le code) sur un hybride code/service, et amha, ça marche pas bien :)
[^] # Re: comme ça, non
Posté par gaaaaaAab . En réponse au message Un peu capillotracté mais.... Évalué à 2.
Effectivement, tant qu'il n'y a pas de redistribution, y a pas de question.
[^] # Re: comme ça, non
Posté par gaaaaaAab . En réponse au message Un peu capillotracté mais.... Évalué à 2.
Par conséquent, j'imaginais qu'une donnée (au sens large), nécessaire pour se connecter au service, licenciée en gplv3, s'apparentait à du code source et donc ne pouvait être "fermée".
sauf qu'en droit, y a pas beaucoup de place pour l'imagination (ni pour l'imprécision d'ailleurs).
"Une donnée s'apparentant à du code source", j'avoue avoir du mal à cerner ce que ça veut dire :)
Le code source est protégé, pas ce qu'il fait (il n'y a pas de brevets logiciels en Europe). Du coup, réimplémenter un algorithme utile à une interaction avec du soft GPL n'en fait pas (à mon avis) une violation de la GPL.
Pour finir, en dehors du fait qu'on peut s'interroger sur ce que signifie le mot libre dans un tel contexte, à part des conditions d'utilisations strictes, l'enregistrement de tous les utilisateurs, des mécanisme techniques (pas très fiables) pour détecter les violations des conditions et des mécanismes de fermeture de compte, je ne vois pas trop.
Mais là, ça sort du cadre de la technique.
[^] # Re: comme ça, non
Posté par gaaaaaAab . En réponse au message Un peu capillotracté mais.... Évalué à 2.
je peux t'envoyer des captures d'écran d'un logiciel ... et en utiliser un autre.
Et ta fonction d'authentification, quelle est son rôle ? S'il s'agit simplement d'encapsuler la valeur magique dans une fonction, y a encore moins de doute qu'avec un simple chiffre magique. Il suffit de réimplémenter sa propre fonction d'authentification, d'utiliser la valeur magique récupérée du fichier téléchargé, et cest plié.
(sachant qu'il n'y a déjà pas de doute sur un simple nombre, cf DeCSS)
S'il faut que j'upload mon client SOAP pour l'appeler ensuite en SSH, reconnais que ça perd une partie de son intérêt.
Et puis, comment vérifies-tu que le programme uploadé en SSH est bien libre ?
Si le fichier source est sous GPL, ca force même le client à l'être aussi.
Juridiquement oui, techniquement, c'est beaucoup moins certain ;)
Finalement c'était pas si difficile que ca :D
Ah, voilà une conclusion qui va faire plaisir à nos amis industriels du disque, du cinéma et des jeux vidéos, parce que pour l'instant, ils y arrivent pas =)
(ok, ils veulent le faire dans l'autre sens, mais c'est une problématique symétrique de ce point de vue là)
# comme ça, non
Posté par gaaaaaAab . En réponse au message Un peu capillotracté mais.... Évalué à 2.
Jette un oeil sur l'AGPL (Affero GPL), ça pourrait p-e te convenir (mais j'ai l'impression que ça couvre un autre problème en fait).
Concernant l'accès au service, techniquement, je ne vois pas comment tu peux forcer l'utilisation d'une implémentation GPL (ou autre licence libre) d'un client.
A priori, tu publieras un protocole que les clients devront implémenter pour interagir avec le serveur.
Ensuite, vu que l'intégralité des échanges client/serveur sera défini dans ce protocole, il sera techniquement rigoureusement impossible de distinguer un client libre d'un client proprio à partir du moment ou ils implémentent tous les deux correctement le protocole.
Tu peux éventuellement favoriser (mais pas garantir) l'émergence de clients libres en proposant des API en affero GPL.
Sinon, dans ton commentaire, quand tu parles de logiciels proprios, on pense tout de suite à la méchante boite parasite qui se goinfre sur le dos des gentils développeurs de LL (ou alors c'est juste moi, possible que je souffre d'un biais sémantique :)
mais si quelqu'un chez lui implémente ce protocole dans un soft qu'il utilise chez lui et qu'il ne redistribue à personne, c'est aussi une implémentation propriétaire.
Pour finir, est-ce vraiment bloquer l'utilisation de logiciels proprios que tu veux ? ou simplement fermer l'utilisation à tout logiciel à visée commerciale ?
[^] # Re: Bonne chance
Posté par gaaaaaAab . En réponse au message garantie légale et matériel informatique. Évalué à 3.
lis http://www.maitre-eolas.fr/category/Magistrats-en-colere .
Dans la foulée, tu peux lire toutes les archives d'Eolas.
Pis on reparlera des juges après.
trailer : si le législatif et l'exécutif faisait bien leur boulot, la justice remplirait mieux son rôle.
[^] # sed, c'est mieux
Posté par gaaaaaAab . En réponse au message nom et taille dans fichier texte. Évalué à 3.
ça peut se contourner en awk (en bouclant de $2 jusqu'à $NF), mais c'est un peu pénible.
ça peut aussi se faire en sed :
ls -s * |sed 's/^\s*\([0-9]*\) \(.*\)/\2;\1/'
[^] # Re: google
Posté par gaaaaaAab . En réponse au message Intractable : traduction ?. Évalué à 2.
bon, oubliez moi sur ce thread, je raconte vraiment nimp' :D
[^] # Re: google
Posté par gaaaaaAab . En réponse au message Intractable : traduction ?. Évalué à 2.
cf http://linuxfr.org/comments/1075397.html#1075397
[^] # Re: google
Posté par gaaaaaAab . En réponse au message Intractable : traduction ?. Évalué à 1.
# google
Posté par gaaaaaAab . En réponse au message Intractable : traduction ?. Évalué à 2.
dans le contexte, insoluble a l'air pas mal.
[^] # Re: source le_fichier en bash
Posté par gaaaaaAab . En réponse au message Script KSH avec fichier de configuration externe. Évalué à 2.
[^] # [HS] sécuritaire
Posté par gaaaaaAab . En réponse au journal Migration d'un quasi-illettré sous GNOME : défi réaliste ou utopie ?. Évalué à 2.
Tel un pirate sans vergogne, je cite le TLF :
SÉCURITAIRE, adj.
Conforme à la notion de sécurité publique
Rem. Ce mot est empl. avec une connotation légèrement péj. qui souligne le fait que la défense de la sécurité publique est susceptible d'engendrer des abus de pouvoir.
</maitre capello>
[^] # Re: Faute dans le titre.
Posté par gaaaaaAab . En réponse au journal Le gouvernement envisagerait de paratager le savoir ?. Évalué à 5.
Le gouvernement envisagerait de piratager le savoir ?
# repartitionné ou reformaté ?
Posté par gaaaaaAab . En réponse au message coup critique ?. Évalué à 4.
Par contre, si tu as lancé un mkfs.vfat (ou dans le genre) ou cliqué sur le bouton qui fait le formattage du système de fichier, c'est mort.
Le formatage d'un fs par un autre ne touche que la table de partition, n'est-il pas ??
non, il n'est pas.
et j'en déduis que tu es plutôt dans le second cas ... :/
[^] # Re: hmm
Posté par gaaaaaAab . En réponse au message code retour sed ?. Évalué à 4.
ça ferait une plus jolie ligne que ta ligne actuelle, et ça serait plus lisible que mon sed :)
# hmm
Posté par gaaaaaAab . En réponse au message code retour sed ?. Évalué à 2.
si on en croit ton test, il semblerait que non ;-)
Sed travaille par bloc, et là, tu cherches à lui faire faire une opération sur l'intégralité du fichier. Du coup, pour que sed puisse se charger de ça, il faut le faire travailler sur l'intégralité du fichier (,$).
Ensuite, ça revient à écrire un script faisant une opération quand le fichier match, et une autre quand il ne matche pas.
exemple :
$ cat file1
pattern1 val1
pattern2 val2
$ cat file2
pattern2 val2
$ cat tst.sed
/pattern1/,$ {
s/pattern1.*/pattern1 val1bis/
b
}
/pattern1/,$! {
$ a\
pattern1 val1bis
b
}
$ sed -f ./tst.sed file1
pattern1 val1bis
pattern2 val2
$ sed -f ./tst.sed file2
pattern2 val2
pattern1 val1bis
mais bon, là, c'était juste pour faire joujou avec sed (et je dis pas que c'est la meilleure syntaxe sed pour ce truc là ...), mais je serais toi, je ferais du grep -l pour décider si tu fais du remplacement ou de l'ajout
[^] # Re: hein ?
Posté par gaaaaaAab . En réponse à la dépêche GDB 7.0 et le déverminage concurrentiel à rebours. Évalué à 4.
[^] # Re: exclure grep
Posté par gaaaaaAab . En réponse au message Programmation script shell ksh unix. Évalué à 2.
Merci !
[^] # Re: exclure grep
Posté par gaaaaaAab . En réponse au message Programmation script shell ksh unix. Évalué à 3.
merci pour cette utile précision :)
[^] # Re: exclure grep
Posté par gaaaaaAab . En réponse au message Programmation script shell ksh unix. Évalué à 2.
par contre, ps affiche la ligne de commande telle qu'elle a été saisie (donc avec les crochets), qui, du coup, n'est pas matchée par le grep (pour lequel les crochets ont été interprétés par le shell).
comme c'est pas très clair ce que je dis, voici l'exemple :
$ps -edf |grep gre[p]
gab 8436 7580 0 16:19 pts/5 00:00:00 grep gre[p]
# exclure grep
Posté par gaaaaaAab . En réponse au message Programmation script shell ksh unix. Évalué à 7.
$ ps -edf|grep Eterm
gab 7579 28182 0 14:47 ? 00:00:00 Eterm
gab 7685 7580 0 14:50 pts/5 00:00:00 grep Eterm
$ ps -edf |grep Eter[m]
gab 7579 28182 0 14:47 ? 00:00:00 Eterm
sinon, man pidof ?