Faire du port forwarding

Article originellement écrit par Rajendra David pour http://blog.emax.ath.cx le lundi 3 mars 2008 à 10:18
Si vous voulez vous mettre à cette discipline, voilà une aide non négligeable. Accessible aux nuls à condition de comprendre Shakespeare
Salut à tous,
Après ce long silence, je reviens avec une petite astuce.

Pour savoir comment faire pour faire du port forwarding, j’ai trouvé ce petit bijou:

http://www.portforward.com

Tout y est expliqué!!! Et le must c’est que c’est expliqué pour bcp de routeur et par programme!!!!

voilou

Rajendra

malloc, kmalloc, etc…

Article originellement écrit par Rajendra David pour http://blog.emax.ath.cx le lundi 12 février 2007 à 22:36
Si vous vous amusez à mettre en place des structures en C et que vous avez commencé votre vie de geek par le Java, vous avez surement besoin de lire ce post.
Si vous utilisez malloc ou kmalloc (allocation de mémoire pour l’espace noyau), faites les proprement!!! Donc pas comme moi :-)

Après l’allocation de le mémoire, pensez à initialiser l’espace que vous avez alloué.

memset(NOM_STRUCTURE, 0, sizeof(STRUCTURE))

Cette fonction permet de remplir l’espace avec des 0. Vous pouvez bien sûr mettre la valeur que vous voulez.

N’oubliez pas que la dernière impression est essentielle, en gros soignez votre conclusion: prenez de la place, initialisez la, utilisez là ET rendez là!!!

free ou kfree

Sourcer un script

Article originellement écrit par Rajendra David pour http://blog.emax.ath.cx le lundi 12 février 2007 à 22:19.
Vous avez fait un beau script avec vos alias préférés mais quand vous le lancez, les alias ne sont pas pris en compte… :-(
Vous avez fait votre linux allégé mais vous ne pouvez pas mettre en place automatiquement les alias et autres commandes comme une distribution normale.

Il suffit de mettre dans un script normal les commandes que vous souhaitez utiliser et de sourcer ce script.

. ./Nom_Script

Le fait de mettre ce ‘.’ avant de lancer le script permet donc de sourcer. Le shell conserve ainsi les alias.

Petit rappel

On commence un script shell par :

#!/bin/sh

et n’oubliez pas de changer les permissions du script

chmod a+x Nom_Script

Comprendre sa fiche de paie

Article originellement écrit par Rajendra David pour http://emax.ath.cx le lundi 12 février 2007 à 22:10
Voici une explication de quelques uns de ces chiffres.
Pour la petite histoire:

J’ai reçu très récemment un papier me disant que mon dur labeur a été gracieusement récompensé par le gentil et bienfaiteur dirigeant de l’endroit où je passe la majeure partie de mes journée. Ce dernier m’indique par des séries de chiffres la somme qui est apparue (Ô joieà sur mon compte.
Il n’empêche que je n’ai pas tout compris à ces écritures.
Voici quelques informations que j’ai pu obtenir grâce à mon charme ravageur au près de la personne qui rédigé ma fiche de paie.

  • La base de la CRDS est égale à 97% de la base URSSAF FNAL
  • J’ai trouvé fun de voir 151,67h. C’est en fait le nombre de d’heure de travail par mois en se basant sur 35h par semaine.

Voilà le calcul: 35h * 52 semaines /12 mois

  • En 2006, les indemnités de stage exonéré est de 307�. C’est à dire que l’entreprise ne paie pas de charge sur cette somme qu’ils cous versent.

Au niveau vocabulaire, en tant que stagiaire, vous percevez une indemnité et non un salaire. Vous n’êtes pas salarié dans ce cas.

  • Faites attention, il y a une des charges qui est plafonnée
  • Si vous avez comme moi commencé votre travail en plein milieu du mois, n’oubliez pas que les calculs sont faits au prorata.
  • Vous remarquerez que vous payez des charges. Ca c’est une chose mais il faut savoir que vous êtes imposé sur votre salaire brut. En gros vous payez l’impôt deux fois…

La fonction printf

Article originellement écrit par Rajendra David pour http://blog.emax.ath.cx le lundi 12 février 2007 à 21:19
Pour ceux qui ont, comme moi, du mal avec cette fonction et son formatage

La fonction printf


  • Syntaxe :
     #include 
     #int printf( const char *format [, arg [, arg]...]);
  • Description :Elle permet l’écriture formatée sur le flux standard de sortie stdout (l’écran par défaut).La chaîne de caractères format peut contenir à la fois :
    1. Des caractères à afficher,
    2. Des spécifications de format.

    Il devra y avoir autant d’arguments à la fonction printf qu’il y a de spécifications de format.

  • Valeur retournée :le nombre d’octets effectivement écrits ou la constante EOF (-1) en cas d’erreur.
  • Spécificateurs de format :ils sont introduites par le caractère % et se terminent par le caractère de type de conversion suivant la syntaxe suivante :
    % [drapeaux] [largeur] [.precision] [modificateur] type
     
    • drapeaux :

      drapeaux Signification
      rien justifié à droite et complété à gauche par des espaces
      - justifié à gauche et complété à droite par des espaces
      + les résultats commencent toujours par le signe + ou -
      espace le signe n’est affiché que pour les valeurs négatives
      # forme alternative. Si le type de conversion est :
      c,s,d,i,u : sans effet
      o : un 0 sera placé devant la valeur
      x, X : 0x ou 0X sera placé devant la valeur
      e, E, f : le point décimal sera toujours affiché
      g, G : même chose que e ou E, mais sans supprimer les zéros à droite

    • largeur : elle précise la nombre de caractères n qui seront affichés.Si la valeur à afficher dépasse la taille de la fenêtre ainsi définie, C utilise quand même la place nécessaire.

      largeur Effet sur l’affichage
      n affiche n caractères, complété éventuellement par des espaces
      0n affiche n caractères, complété éventuellement à gauche par des 0
      * l’argument suivant de la liste fournit la largeur

    • precision : elle précise pour :
      • un entier, le nombre de chiffres à afficher
      • un réel, le nombre de chiffres de la partie décimale à afficher (avec arrondi)
      • les chaînes, le nombre maximum de caractères à afficher.

      .precision Effet sur l’affichage
      rien précision par défaut :
      d,i,o,u,x : 1 chiffre
      e, E, f : 6 chiffres pour la partie décimale.
      .0 d,i,o,u,x : précision par défaut
      e, E, f : pas de point décimal
      .n n caractères au plus
      * l’argument suivant de la liste contient la précision

    • modificateur : Il précise comment sera interprété l’argument.

      Modificateur interprétation comme
      h un entier de type short (d,i,o,u,x,X)
      l un entier de type long (d,i,o,u,x,X)
      L un réel de type long double (e,E,f,g,G)

    • type : type de conversion de l’argument.

      Type Format de la sortie
      d ou i entier décimal signé
      o entier octal non signé
      u entier décimal non signé
      x entier hexadécimal non signé
      X entier hexadécimal non signé en majuscules
      f réel de la forme [-]dddd.ddd
      e réel de la forme [-]d.ddd e [+/-]ddd
      E comme e mais l’exposant est la lettre E
      g format e ou f suivant la précision
      G comme g mais l’exposant est la lettre E
      c caractère
      s affiche les caractères jusqu’au caractère nul ‘\0′
      ou jusqu’à ce que la précision soit atteinte
      p pointeur

  • Exemple :
    #include 
    main() {
    int nbre = 5;
    char *chaine = "Le langage C";
    long prix = 12.0L;
    long double result = prix * nbre;
    printf("Bonjour\n");
    printf("Nombre %d prix %ld Total %9ld\n",nbre, prix, prix * nbre);
    printf("%s est facile\n", chaine);
    printf("%8.2Lf \n", result);
    printf("%*.*Lf \n", 8, 2, result); /* equivalent a %8.2Lf */
    printf("\n"); /* affichage du caractère % */
    return 0;
    }
    /*-- résultat de l'exécution ------------------------------------
    Bonjour
    Nombre 5 prix 12 Total 60
    Le langage C est facile
    60.00 60.00 -----------------------------------------------------------------*/
  • Exemple d’utilisation des formats numériques :

    instruction C résultat
    printf(« |%d|\n »,12345); |12345|
    printf(« |%+d|\n »,12345); |+12345|
    printf(« |%8d|\n »,12345); | 12345|
    printf(« |%8.6d|\n »,12345); | 012345|
    printf(« |%x|\n »,255); |ff|
    printf(« |%X|\n »,255); |FF|
    printf(« |%#x|\n »,255); |0xff|
    printf(« |%f|\n »,1.23456789012345); |1.234568|
    printf(« |%10.4f|\n »,1.23456789); | 1.2346|

source http://membres.lycos.fr/dancel/c/c60_10.htm

(cherchez pas, c’est le même site)

Compilation module pour noyau 2.6

Article originellement écrit par Rajendra David pour http://blog.emax.ath.cx le lundi 5 février 2007 à 22:52
Bien l’astuce d’aujourd’hui concerne la compilation de module.
Pour la petite histoire, j’ai voulu me frotter à l’écriture de module pour noyau 2.6, avec des docs pour 2.4 …

Hello World

Vous trouverez à la fin un petit fichier de départ pour vous faire les dents.

C’est un simple Hello World avec la bonne syntaxe avec un Makefile tout simple mais qui contient ces foutues lignes que j’ai mis 2h à trouver.
Il faut savoir que pour les noyaux 2.6, les modules ne sont plus en .o mais en .ko, c’est « obj-m += $(TARGET).o » qui transfome en .ko.

helloWorld.c
#include

#include #include MODULE_DESCRIPTION(« HelloWorld »);
MODULE_AUTHOR(« MOA »);
MODULE_LICENSE(« GPL »);

static int __init init_module_amoiquejai (void)
{
printk (« <1>Hello World !!!\n »);
return 0;
}

static void __exit cleanup_module_amoiquejai (void)
{
printk (« <1>Puiskon ne veut pas de moi, jme tire !!!!\n »);
//return 1;
}

module_init(init_module_amoiquejai);
module_exit(cleanup_module_amoiquejai);

Makefile 2.6
TARGET = helloWorld
obj-m += $(TARGET).o

all:
make -C /usr/src/linux M=$(PWD) modules

clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

Pour culture, un Makefile pour 2.4 ressemble à ça:

Makefile 2.4
KERNELDIR = /usr/src/linux

include $(KERNELDIR)/.config

CFLAG = -D__KERNEL__ -DMODULE I$(KERNELDIR)/include \ -O Wall

ifdef CONFIG_SMP
CFLAGS += -D__SMP__ -DSMP
endif

all: hello.o

clean:
rm f *.o

Chti problème

Concernant les petits probèmes, si vous vous heurtez à l’erreur suivante:

Error inserting ‘./helloWorld.ko’: -1 Invalid module format

Cette erreur semblerait être due à un problème de compilateur.

Veillez à compiler le module avec la version du noyau de destination. Il faut renseigner le bon chemin du noyau dans le Makefile. Au lieu de ‘/usr/src/linux’, mettez le bon chemin ou changez le lien symbolique.

ln -s /usr/src/linux-2.6.12 /usr/src/linux

Si l’erreur persiste, pensez à désactiver le contrôle des versions des modules dans la configration du noyau.
Et si ça persiste encore, lorsque vous compilerez votre code, levez la jambe droite en tenant une petite cuillière de la main gauche avec de la confiture de coin et espérez…

Lecture

Si vous ne savez pas quoi lors des chaudes soirées d’hiver, voilà un peu de lecture:

Vous le trouverez sur le net assez facilement mais voici quand même un lien: http://lwn.net/images/pdf/LDD3/TITLE.pdf

Attention, cette version est pour le noyau 2.6, il existe aussi bien sûr pour les versions précédentes.

Problème de montage de partitions NFS

Article originellement écrit par Rajendra David pour http://blog.emax.ath.cx le lundi 5 février 2007 à 22:56

Il m’a pris un jour lors d’une promenade. J’ai vu un oiseau et je me suis dit: « Tiens! Et si je montais une partition en NFS? »
Ducoup j’ai couru chez moi et j’ai sauté sur mon pc et là… aaarg, impossible.

Bref, le seul truc que je peux dire c’est de vérifier que Tcp Wrapper et Portmap sont bien installés.
Et bien sur que vous avez configuré le réseaux…

Thèmes WordPress - WordPress tuto