LO14-Linux-TD-6

  • Upload
    zet

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

  • 7/26/2019 LO14-Linux-TD-6

    1/1

    LO14

    TD N6: NETCAT, le couteau suisse du rseau

    1/La commande netcat tablit une connexion avec

    un serveur. Tout ce quil lit sur son entre standard,il lenvoie au serveur, et tout ce que le serveur lui

    envoie, il lcrit sur sa sortie standard.

    netcat offre aussi une fonctionnalit serveur. Dansce mode dutilisation, netcat attend sur un port quunclient se connecte, puis tout ce quil lit sur son entre

    standard il lenvoie au client, et tout ce que le client

    lui envoie, il lcrit sur sa sortie standard. Le mode

    listen est slectionn grce loption -l ; il fautaussi loption -p suivi du numro de port sur lequel

    couter.Dans un terminal, lancer netcat en mode serveur surle port 8080 :

    netcat -l -p 8080

    Dans un autre terminal, lancer un client qui seconnecte ce serveur :

    netcat localhost 8080

    Maintenant, les lignes que vous entrez dans leterminal serveur apparaissent aussi sur le terminalclient et toutes les lignes que vous entrez dans leterminal client apparaissent aussi sur le terminalserveur.

    2/Nous allons raliser un serveur grce un scriptbash.

    Etudiez le code du script serveur pour le

    comprendre.

    Pour pouvoir interagir avec le client, il faut pouvoirlire la sortie standard de netcat pour obtenir lesrequtes du client, et pour chaque requte on veutenvoyer une rponse sur lentre standard de netcat

    pour quil la transmette au client.

    On peut rsoudre une partie de notre problme enutilisant un tube :

    interaction | netcat -l -p PORT

    o interaction est une fonction qui crit des rponsessur sa sortie standard.

    On veut galement que cette fonction reoive sur sonentre standard les requtes du client: c'est dire ce

    qui est crit sur la sortie standard de netcat. Il fautfaire une sorte de boucle pour connecter la sortiestandard du netcat sur la droite lentre standardd'interaction sur la gauche. Ceci peut tre ralisgrce un tube nomm. Le tube nomm est cr parla commande mkfifo. Supposons que $FIFO soit lechemin d'un tube nomm, alors on peut l'utiliser pourrediriger la sortie de netcat dans l'entred'interaction:

    interaction < "$FIFO" | netcat -l -p PORT >"$FIFO"

    Notez que lorsque "interaction" se termine, lentrestandard de netcat est alors ferme, mais netcat neclos pas pour autant la connexion internet. Pourforcer netcat clore cette connexion ds que sonentre standard est ferm, il faut ajouter l'option -c:

    interaction < "$FIFO" | netcat -c -l -p PORT >"$FIFO"

    3/2 fonctions sont dj crites (la fonction commande-non-comprise et la fonction quit )

    Vous devez crer une nouvelle fonction convert qui transforme un texte en majuscule. Quand le clientenvoie la commande convert avec un argument,largument sera converti en majuscule (utiliser lacommande tr ).

    Vous testerez ce serveur en vous y connectant grce netcat. Si vous installez votre serveur sur unemachine distante, il suffit de remplacer localhost dans la commande netcat du client en lui donnantladresse du serveur.