Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

nombre réponses : 25

#0 Re : -1 »  comparer deux fichiers » Le 06/02/2008, à 13:56

kaworu
Réponses : 8

vimdiff est excellent, et autrement colordiff est vraiment bien (t'as la couleur, plus sympa que diff).

#1 Re : -1 »  Désigner un script dans un dossier variable... » Le 03/12/2008, à 23:57

kaworu
Réponses : 8
Totor a écrit :

Alors, c'est la 4 que tu dois utiliser...c'est à dire :
déterminer le dossier (contenant tous tes scripts) en début de ton script principal, le conserver dans une variable que tu utilises pour appeler tes autres scripts.

Si c'est le cas, basename "$0" est ce que tu cherche (si les scripts sont dans le même dossier que le script lancé).

#2 Re : -1 »  [Shell] Optimiser script driver ov51x » Le 03/12/2008, à 23:51

kaworu
Réponses : 3
Jywa a écrit :

Rendre le script plus rapide, simple et performant. J'ai vu que beaucoup de symbole était utilisé en Shel pour raccourcir les scripts.
Bien qu'en ayant utiliser quelques un, je ne les ai pas tous compris. Je pense qu'il serait donc possible de raccourcir mon script en en utilisant mais je ne sais pas comment.

Salut!
je pense pas que tu va pouvoir le rendre plus rapide. Si c'est lent c'est clairement à cause de la compilation et des programmes "lourds" (comme apt) que tu lance depuis le script, et non pas à cause du script lui-même.

En shell les problèmes de peformances sont dans 99% des cas à cause des sous-shells (...) $(...) `...` foo|bar (typiquement quand on enchaine les pipes dans une boucle), et ton script n'en fait pas beaucoup.

#3 Re : -1 »  Script shell avec password » Le 02/06/2008, à 16:10

kaworu
Réponses : 3

tu peux aussi configurer VPNC en mettant le mot de passe / nom d'utilisateur dans le fichier de configuration /etc/vpnc/<serveur>.conf
attention de mettre les droit correct sur ce fichiers pour que seul root puisse le lire (et biensûr écrire également).

#4 Re : -1 »  Compilation statique sous Linux, en GCC notamment. » Le 06/05/2008, à 10:22

kaworu
Réponses : 6

Salut. dans man gcc on lit:

  4363        -static
  4364        On systems that support dynamic linking, this prevents linking with the shared libraries.  On other systems, this option has no
  4365        effect.

donc essaye de donner -static lors de l'édition de liens.

Je ne connais pas la raison pour laquelle tu veux faire cela, mais sache que de manière générale c'est une très mauvaise pratique smile
Il vaut mieux compiler statiquement des outils comme busybox que des (grosse) applications d'utilisateur comme firefox (pas bien!).

#5 Re : -1 »  [Ruby] Utilisation de Hash, et variable globales » Le 04/05/2008, à 09:16

kaworu
Réponses : 1

Salut !

Est-ce que par hasard tu parle de Ruby On Rails ?
Ton problème est pas très clair.

#6 Re : -1 »  copier/coller assembler en ligne de commande » Le 06/04/2008, à 18:57

kaworu
Réponses : 7

Salut !
Essaye d'utiliser sed, c'est ce qui me semble le plus adapté. Si tu manque de puissance essaye awk, puis (dans le pire des cas hein) perl.

Bonne continuation.

#7 Re : -1 »  Bash & mot de passe : comment sécuriser ? » Le 24/03/2008, à 02:54

kaworu
Réponses : 4

Salut !
Pour que le password ne s'affiche pas dans le terminal regarde du coté de readline, mais je pense pas que tu puisse l'utiliser depuis bash. Autrement le read de bash a une option -s qui n'affiche pas le texte tappé et lu:

read -s passwd
echo "le password secret: $passwd"

Mettre le mot de passe en clair dans un script n'est pas sécurisé smile

#8 Re : -1 »  ruby-mysql » Le 08/03/2008, à 14:03

kaworu
Réponses : 1

regarde du coté de gem. Il faut installer MySQL et l'adaptateur mysql pour ruby

#9 Re : -1 »  test if [ $variable -gt valeur ] » Le 28/02/2008, à 16:16

kaworu
Réponses : 7

Bonjour !

Alain.g a écrit :

Le problème vient plutôt de l'opérateur -gt (-lt  etc...) qui ne permet que de comparer des entiers.
On peut très bien utiliser le simple crochet [ , mais dans ce cas l'opérateur ">" doit être échappé :

if [ 3.14 \> 3.13  ] ; then echo OK ; fi

Attention (!). avec test ou [ il faut utiliser les opérateurs avec des lettres (-lt,-gt,-eq...)
quand on travaille avec des nombres entiers, et les opérateurs =,<,>... seulement avec les chaînes de caractères.
En effet > fait un test littérale:

[ 17 \> 160 ] && echo OUPS

Quand on veut comparer des nombres à virgules, il faut utiliser let ou expr:

# avec let
let 'bool = 3.14 > 3.13'
if [ $bool -eq 1 ]; then echo OUF; fi

# avec expr
if expr 3.14 \> 3.13 >/dev/null; then echo OUF; fi # Ici on doit rediriger la sortie de expr vers /dev/null, sinon le script affiche 1.
if [ `expr 3.14 \> 3.13` -eq 1 ]; then echo OUF; fi

let est un built-in du shell, donc toujours présent et bien plus performant que expr (appel externe).
La dernière ligne est vraiment mauvaise, elle crée un sous-shell juste pour calculer l'expression.
Personnelement j'utiliserai let, qui est portable/performant/lisible smile

[[ est plus agréable à utiliser que [/test, mais ça ne marche (presque) que sous bash. Donc si on veut un script
portable il vaut mieux utiliser [ et/ou test.

#10 Re : -1 »  Démarrer un script à l'entrée dans un dossier » Le 16/01/2008, à 03:58

kaworu
Réponses : 7

@links31
Heu. à  chaques sessions bash de son user, t'aura un processus lancé hmm

Avec zsh c'est plutà´t simple (fichier $HOME/.zshrc)

function precmd {
    case "$PWD" in
        $HOME/monftp[0-9]) connectftp $(basename "$PWD")
    esac
}

à  chaques fois que ton prompt apparait, ce code est exécuté. A toi de gérer dans ton script conectftp de ne pas ouvrir de connection sur ftp1 s'il y'en a déjà  une par exemple.

#11 Re : -1 »  Démarrer un script à l'entrée dans un dossier » Le 16/01/2008, à 11:11

kaworu
Réponses : 7

@benjou Un chat mort !
cat $fichier | grep $pattern => grep $pattern $fichier

#12 Re : -1 »  [bash résolu] récupérer la fin d'une chaine ... » Le 17/01/2008, à 16:32

kaworu
Réponses : 5
abetsic a écrit :

Ce n'est pas parce que une commande est longue qu'elle est compliquée. Même si la solution donnée par Link31 est plus courte plus lisible, ce n'est pas forcément la plus "économe". Elle fait appel à  un programme externes (tail) et nécessite un pipe. La solution que tu as donnés fait appel aux fonction intégrés à  bash, ce qui à  mon sens est bien meilleur.

Et puis je trouve plus élégant d'utiliser les outils proposés par bash que de faire du bricolage avec des pipe (N'y voit aucune attaque personnel Link31 ! c'est juste un avis personnel, et je reconnais volontier ta solution smile )

C'est le dilemme du shell.

1) Tu fais un truc performant, illisible genre MYVAR=foodforthought.jpg; echo ${MYVAR##*fo}, et pas portable (seulement bash supporte ce genre d'opérations sur les variables ! tu peux pas facilement partager tes script, ou apprendre à  écrire des script d'init)

2) tu fais un pipe (voir plusieurs...) lisible, portable, mais les perfs sont vraiment lamentables (VRAIMENT).

il n'y pas une qui est meilleur que l'autre. Il faut voir dans quel but on écris le script (si les perf compte plus que la portabilité/lisibilité ou pas). Si vraiment le dilemme est trop dur (t'as besoin d'un truc portable et performant) alors il faut changer de langage.

#13 Re : -1 »  [RESOLU] caractéristiques Python et java » Le 15/01/2008, à 15:19

kaworu
Réponses : 11

Salut !

* Quel est le language le plus utilisé aujourd'hui ? Et dans l'avenir ?
- à chaque travaille son outil, mais en entreprise, c'est Java (ou C#).

* Quel language est le plus rapide ?
kif kif.

* Le python peut être compilé alors que le java non, est-ce un avantage de taille à utilisé le python ou est-ce négligable ?
Le python (avec 2.5) est compilé sous forme de bytecode puis exécuté (mais tout ça de manière transparente). Java c'est pareil, mais pas transparent smile

* lequel est le plus facile à gerer : biblihotèque, compilation, débogage ?
Java a l'avantage d'avoir une bibliothèque standard complète et un IDE puissant (Eclipse).
de devoir compiler/exécuter en deux phase permet aussi de séparer les erreurs de compilation/exécution.

Python est plus sympa pour developper car on peut tester rapidement grâce au REPL (ipython est vraiment sympa).

* Est-il plus facile d'aller du php/c/c++ au Java ou au Python ?
clairement vers Java, au niveau syntaxique.

* Quel sont les grosses différence entre ces deux languages ?
La syntax python est vraiment plus sympathique et moins verbeuse. Python comparé à Java, c'est fun.

Java a un concepte Objet vraiment bien foutu, alors que l'Objet en Python est "bricolé" et utilise l'héritage multiple (modèle qui, avec le temps et l'expérience, a prouvé que dans 99% des cas, c'est un plus mauvais modèle que les mixin que tu trouve en Java ou en Ruby).

* Si vous devier choisir un language (en générale) lequel choisiriez-vous ?
Personellement je commencerais par Java.

#14 Re : -1 »  Quel language pour débuter? » Le 09/12/2007, à 22:17

kaworu
Réponses : 41

Salut !
Perso je te conseil de commencer par Java.
- un typage statique et une syntax verbeuse t'oblige à  décrire précisement ce que tu veux.
- compilation/exécution, donc on repère plus facilement les erreurs de langage et les erreurs de programmation.
- pas de gestion de la mémoire, qui pourrait facilement rebutter un débutant
- concept objet, très utile dans la programmation actuelle.

Je déteste Java, mais j'ai appris avec ça et franchement c'était top pour apprendre, c'est pour moi le "juste milieu", C/C++ étant trop bas niveau (gestion de la mémoire, difficile de gérer les chaines de caractères) et les langage de script on souvent un typage dynamique qui permet trop facilement de faire des erreurs.

UgM a écrit :

Bonjour,

Commence par le C. Et en plus, c'est la base de linux.

@+

C'est la base de tous les noyaux de systèmes d'exploitations.

#15 Re : -1 »  regexp perl [Résolu] » Le 13/12/2007, à 22:56

kaworu
Réponses : 8

Salut !
voici un exemple (vraiment sympa, parce que un script perl plus "classique" serais 10x moins long et 10x moins lisible) :

#!/usr/bin/env perl


$_ = 'foo bar oni';
@results = m/\w+/g;

print "${results[0]} and ${results[1]} and ${results[2]}\n";

#ou mieux encore
foreach $element (@results) {
    print $element;
}

EDIT :
voici un lien avec vraiment toute la doc que tu as besoin (en français) :
http://perl.enstimac.fr/DocFr.html

Perl est incontournable dans le monde des regex, si je peux te conseiller un livre qui vaut vraiment son poid de pièces il y a mastering regular expressions de chez Oreilly qui est vraiment bien. On peut dire "je connais bien les regex" seulement après avoir lu ce bouquin smile

#16 Re : -1 »  regexp perl [Résolu] » Le 14/12/2007, à 13:54

kaworu
Réponses : 8

Salut !

Il existe komodo (également en python) qui doit être dans les dépôts et qui ressemble beaucoup à regulex.
Autrement moins "graphique" mais plus avancé, il y a le mode debug de perl pour les regex qui est impressionant :

perl -ne 'use re "debugcolor"; /<ma_regex>/'

#17 Re : -1 »  [Résolu] vim-scripts » Le 14/12/2007, à 13:46

kaworu
Réponses : 1

Salut !
pour les script vim, la doc est souvent sur le site de vim.org (cherche le nom du plugin). Sinon beaucoup de plugins donne de l'aide directement dans vim, quand tu tappe par exemple

:help <mon_plugin>

#18 Re : -1 »  Php4 coup de gueule!! » Le 07/12/2007, à 13:11

kaworu
Réponses : 56
aleph a écrit :

> MartoPioche

Nous avons déjà  eu l'occasion d'échanger quelques propos ici. Grosso modo, je partage ton avis.
Un des problèmes ici est que la différence d'expérience des développeurs se fait assez clairement sentir. Quant à  ceux qui arrivent à  installer des versions inexistantes...  (Il y a bien des domaines o๠mes compétences sont nulles.)

Je développe des applications avec des outils du monde du logiciel libre (pas forcément GPL). Des outils censés être multi-plate-formes. Résultat, je peux écrire des applications qui fonctionnent sous toutes les versions de Windows et les OS X. Je voudrais les porter/tester pour Linux que ça en devient quasiment impossible.

Le monde du logiciel libre est en pleine effervescence. Etonnamment, c'est sous les os propriétaires que c'est le plus aisé de travailler. Un comble.

Ubuntu - aucun doute quant à  la qualité de l'OS - représente à  lui tout seul un peu le problème de Linux en général. C'est n versions difficilement compatibles entre elles, ce n'est pas pour rien que chaque version  possède ses propres dépà´ts.

Franchement y a de la mauvaise foi là  !

Primo, tu peux pas comparer "toute les version de OSX/Windows" avec "toutes les versions de GNU/Linux" (sans parler de BSD) sans parler d'un facteur 100.
Tu prend le problème du mauvais coté, en pensant que c'est le dev qui doit faire des packages, alors que c'est la distribution qui s'en charge (ou certains de ces utilisateurs).

deuxio y a pas que Ubuntu comme GNU/Linux (et comme OS libre, de manière générale). C'est une des versions qui est orienté desktop et pas forcément dev (je vais en froisser plus d'un peut-être, mais le fait qu'il y ai compiz-fusion installé par défaut et plus de php4 reflète assez bien ce fait). Donc réveillez-vous et au lieu de vous plaindre, essayer une autre distribution qui à  la/les version(s) de python/php/machin disponible.

Tertio si c'était plus facile de dev sous les OS proprio y aurait pas une telle adoption de GNU/Linux chez les dev (hé oui). C'est peut-être vrai dans ton cas précis (et encore j'y crois pas), mais pas la peine de généraliser non plus.

Sous Gentoo par exemple (qui est à  mon avis, une bonne plateforme de dev) :
[i] dev-lang/python
     Available versions: 
    (2.3)    2.3.5-r2 2.3.5-r3 (~)2.3.6 (~)2.3.6-r2 2.3.6-r3
    (2.4)    2.4.4-r4 2.4.4-r5 2.4.4-r6 (~)2.4.4-r7
    (2.5)    (~)2.5.1-r2 (~)2.5.1-r3 (~)2.5.1-r4

12 versions de python, avec 3 installations possible en parallèles (une 2.3, une 2.4 et une 2.5).

* dev-lang/php
     Available versions: 
    (4)    [M]4.4.8_pre20070816
    (5)    5.2.4_pre200708051230-r2 5.2.5

php 4 est toujours là , et installable parallèlement à  php 5 (on peut même utiliser les deux simultanément : http://www.gentoo.org/proj/en/php/php4- … ration.xml).

#19 Re : -1 »  Php4 coup de gueule!! » Le 09/12/2007, à 14:22

kaworu
Réponses : 56

@aleph
Je parle d'un facteur 100 comme un désavantage si tu veux essayer de faire un paquet de ton appli pour chaque distro, alors que c'est le "boulot" de ceux qui font les distributions.

Le facteur 100 est un avantage quand il s'agit de choisir ton environnement de développement, parce que justement tu as le choix ! Oui, pourquoi pas GoboLinux ! Si y a les versions de python que tu recherche, et que tu peux les utiliser en parallèle, alors c'est un choix plus judicieux que Ubuntu (dans ton cas).

#20 Re : -1 »  Recherche comparateur de langages web » Le 22/10/2007, à 14:29

kaworu
Réponses : 4

Salut !
Pour te fais un avis sur Ruby On Rails (framework web basé sur Ruby) tu peux matter les vidéos qu'il y a sur le site (en tout cas pour les avantages) :
http://www.rubyonrails.org/screencasts

Bon, il y a beaucoup d'avantages (modèle MVC, indépendant du SGDB, programmation agile, structure de test, debug, etc. est de base et parfaitement integrée), et certains incovénients comme les performance, la mise en production qui est douloureuse (de moins en moins mais bon, incomparable à PHP).

à ta place, je ne serais pas si sûr de choisir PHP. Si de toute façon c'est toi (ou la boite) qui doit gérer la mise en production (configuration du serveur), alors RoR / Python peuvent être de bonnes solutions, car pour juste un peu plus d'effort pour la mise en production, tu gagne vraiment beaucoup.

#21 Re : -1 »  Attaque UDP » Le 21/10/2007, à 14:28

kaworu
Réponses : 8

Salut !
Un firewall bien configuré suffit.
Voilà un ptit bout de conf anti flood/scan.

$iptables -N SCANNING
    $iptables -A SCANNING -i $iface -m state --state NEW -m recent --set --name START
    $iptables -A SCANNING -i $iface -m state --state NEW -m recent --update --seconds 10 --hitcount 10 --rttl --name START -j LOG --log-prefix "[IPTABLES WARNING SCAN] : "
    $iptables -A SCANNING -i $iface -m state --state NEW -m recent --update --seconds 10 --hitcount 10 --rttl --name START -j DROP
$iptables -A SCANNING -j RETURN

<troll>Hé oui, iptables c'est horrible niveau syntax, rien que pour ça on aime *BSD et le bôôô PF</troll>
Voilà, si y a plus de 10 nouvelle connexions de la même IP dans un intervalle de moins de  10 secondes on commence à DROP. Si tu ping la machine qui a ces options, au bout de 10 sec. t'as plus de réponse (le temps de délai de ping est de 1 secondes par défaut). Tu peux bien sûr adapter --secondes et --hitcount.
ça évite les flood et ça ralentis bien les scans.

Fail2Ban n'écoute pas du tout le réseau !
C'est un outil qui analyse les logs, donc il faut d'abord loguer dans un fichier les tentatives d'authentifications manquées (tout bon service qui se respecte comme OpenSSH ou Apache le fait évidement), mais si c'est un flood, c'est Iptables qui doit loguer (comme le fait la 3ème ligne par exemple) et il faut ensuite configurer Fail2Ban pour analyser le fichier de log d'iptable. C'est plus simple et direct de DROP directement par iptables.

EDIT :
un petit exemple :
Coté méchant (on flood bind au port 53, car c'est mon seul port UDP ouvert):

alex@méchant ~ $ date && ./udp $TARGET 53 3
Sun Oct 21 14:40:34 CEST 2007
udp flood - odix
Killed

coté serveur :

[alex@mon_serveur] /var/log $ sudo tail kern.log
Oct 21 14:40:36 milky [IPTABLES WARNING SCAN] : IN=eth0 OUT= MAC=... SRC=MECHANT DST=MON_SERVEUR LEN=29 TOS=0x00 PREC=0x00 TTL=54 ID=0 DF PROTO=UDP SPT=11070 DPT=53 LEN=9 
Oct 21 14:40:36 milky [IPTABLES WARNING SCAN] : IN=eth0 OUT= MAC=... SRC=MECHANT DST=MON_SERVEUR LEN=29 TOS=0x00 PREC=0x00 TTL=54 ID=0 DF PROTO=UDP SPT=11070 DPT=53 LEN=9 
Oct 21 14:40:36 milky [IPTABLES WARNING SCAN] : IN=eth0 OUT= MAC=... SRC=MECHANT DST=MON_SERVEUR LEN=29 TOS=0x00 PREC=0x00 TTL=54 ID=0 DF PROTO=UDP SPT=11070 DPT=53 LEN=9 
...

#22 Re : -1 »  DrScheme - Installation 299.400. » Le 23/09/2007, à 23:36

kaworu
Réponses : 1

Salut !
le script te demande où tu veux installer plt.
1) dans /usr/plt, c'est moyen, car c'est plutôt les paquets installés avec ton package manager qui vont dans /usr.
2) /usr/local/plt c'est bien, /usr/local c'est pour les programmes que t'installe "toi" ou "à la main" etc (c'est une convention bien sûr, rien ne t'oblige à faire des choses pareils smile)
3) $HOME/plt c'est dans ton dossier utilisateur. ça veut dire que ton utilisateur pourra utiliser plus facilement le plt mais les autres difficilement (voir pas du tout). Par contre pour l'installer ici tu n'aura pas besoin des droit root. Tu pourra aussi le désinstaller plus facilement.
4) dans le répértoire courant, ba là évidement, ça dépend d'où tu te trouve hein wink

#23 Re : -1 »  [Script] Changer le répertoire courant » Le 21/09/2007, à 12:45

kaworu
Réponses : 5

Salut !
tu peux aussi assigner une variable d'environnement qui designe ton dossier.
dans ton fichier ~/.bashrc :

DOSSIER="/chemin/tres/long/vers/ton/dossier"

et après dans ton shell tu peux faire facilement :

cd $DOSSIER

#24 Re : -1 »  script bash pour dual core » Le 20/09/2007, à 08:35

kaworu
Réponses : 7

C'est simplement que les programmes ne sont pas codé pour le multi-thread, et ça risque pas de changer (la complexité est trop grande par rapport au gain). Si tu fais plusieurs tâches, chacune utilisera un coeur.

Je crois que tar est multi-threadé. Mais un script bash ne sera d'aucune aide.