Utilisation de la commande nc (netcat)


#1

J’ai unpetit souci, je n’arrive pas à effectuer un transfert de ficier grâce à la commande nc. Pour effectuer ce transfert je tape ceci :

  • Sur la machine qui doit recevoir le fichier :

L’ordinateur attend donc de revoir le fichier à récupérer pour l’écrire dans test

  • Sur la machine qui envoi le fichier :

Cet ordinateur envoit donc le fichier test à la machine distante qui atend de recevoir celui ci. (192.168.1.33 étant l’IP de la machine réceptionnant le fichier)

Problème : voilà ce que le pc qui se charge de l’envoi du fichier me dit à l’appel de la commande d’envoi :

J’arrive pourtant à pinger la machine 192.168.1.33 depuis le pc avec lequel je veux envoyer le fichier, j’avoue que je ne comprends pas pourquoi je récupère ce message à l’écran.


#2

slt,

Si 1234 est le port fait ca :

nc -l -p 1234 -vv > test

Le “-p” est utilisé pour spécifier le port et le “-vv” pour le mode debug (avoir des infos).


#3
  • Sur la machine qui doit recevoir le fichier :

(Je n’utilise pas le -p car il est dit dans le man que son utilisation est incompatible avec le -l, on ne met pas -p mais c’est quand mêmele numéro de port qui est précisé)

  • Sur la machine qui envoi le fichier :

Message retourné par la machine qui doit envoyer le fichier :

La machine qui doit recevoir le fichier avec l’option de débug -vv n’affiche strictement rien à l’écran. J’avoue que j’ai du mal à comprendre où est le souci, l’utilisation que je fais du netcat fait même partie d’un exemple du man nc.


#4

Sur la machine qui reçoit:

$ nc -l -p 12345 > toto

sur l’autre

$ nc machine 12345 < fichier_a_envoyer

et ça marche (chez moi en tout cas).

Si ça t’intéresses j’ai fait un paquet transfert qui contient des utilitaires d’envoi/recpetion de fichiers/partitions pour sauvegardes/restauration en ligne de commande. J’ai trouvé ça plus pratique que nc


#5

Je vous remercie tout les deux pour votre aide qui a éclairé un peu ma lanterne bien que j’ai toujours mon souci avec mon No route to host. Je reste perplexe car je pense bien utiliser nc, je sais aussi pinger la machine qui envoit et celle qui reçoit.

Peut-être quelqu’un a déjà rencontré ce message d’erreur et sait comment le résoudre. J’ai oublié de vous préciser mais je ne pense pas que celà ai une influence, mais la machine qui reçoit ne possède pas une distribution debian mais une aurox 11.0, celle qui envoit est une debian, je ne pense pas que cela change grand chose au problème.


#6

as tu enfin au moins essayé le -l ET le -p comme tout le monde te l’a conseillé sauf la doc ?


#7

Je l’ai essayé mais il me jète et me renvoie une sorte d’aide d’utilisation de la commande (nom de la commande avec les arguments possibles entre [ ]), bien sûr que je l’avais testé, je l’avais même essayé de cette façon en premier avant d’ouvrir le man.


#8

OK OK.
Je ne sais pas ce qui me prend aujourd’hui, mais je fais la chasse aux sourds…
Sinon, bêtement, ton port 1234 n’est pas firewallé ?


#9

Si tu veux, les utilitaires que j’ai fait sont dans le paquet transfert

deb boisson.homeip.net/sarge/ ./

Ils sont compilés en statique (diet libc), petits, et fonctionnent donc sur tout machine. Ça permet de sauvegarder des fichiers/partitions sur une machine ou de les récupérer un peu comme nc sauf que d’une machine on pilote tout. Comme nc, il n’y a pas de controle d’accès…


#10

slt,

[quote]
$ nc -l -p 12345 > toto

sur l’autre

$ nc machine 12345 < fichier_a_envoyer [/quote]

Ca marche aussi chez moi.


#11

J’y avais pensé aussi au firewall et il été déjà débloqué, concernant le programme de transfert, il fonctionne très bien, merci fran.b. En fait j’avais dans l’optique d’utiliser netcat pour pouvoir copier le contenu de la mémoire d’un système embarqué pour en faire une image, je voyais comment faire avec nc, mais avec ton petit logiciel j’avoue que je sais pas trop comment m’y prendre


#12

Tu as deux couples de logiciels

  1. serveurpartition et clientpartition

Sur une machine serveur, tu lances

serveurpartition -v

(-v = mode verbeux)

$ clientpartition -s /dev/hda5 -d partition.hda5 -v IP_ou_nom_du_serveur

envoie le contenu de /dev/hda5 du serveur et le sauvegarde localement sous le nom partition.hda5

Si tu veux récupérer une sauvegarde zippée part.hda5.gz sur le serveur et la remettre sur ta machine, tu tapes sur cette dernière

clientpartition -d /dev/stdout -s part.hda5.gz $1 | gunzip > /dev/hda5

(c’est surtout cette deuxième commande qui est utile)

  1. serveursauvegarde et clientsauvegarde

Sur la machine sur laquelle on fait les sauvegardes, on tape

$ serveursauvegarde -v

Sur les machines dont on veut sauvegarder des fichiers ou des partition, on tape pour sauvegarder la partition /dev/hda5

clientsauvegarde -s /dev/hda5 -d partition.hda5 -v IP_DU_SERVEUR

ou si on veut envoyer une image zippée

cat /dev/hda5 | gzip | clientsauvegarde -s /dev/stdin -d part.hda5.gz -v IP_DU_SERVEUR

etc…


#13

Merci tout va comme sur des roulettes maintenant :smiley: Un grand Merci pour toute l’aide que vous m’avez apporté.


#14

Au fait, encore une petite question, comment je fais si je veux l’utiliser tes petits programmes sur une architecture arm ?


#15

Les sources sont disponibles sur

deb-src boisson.homeip.net/source ./

apt-get source transfert

Il suffit d’installer dietlibc-dev pour la compilation. Sinon, tu peux modifier le Makefile pour compiler avec gcc standard


#16

[quote=“fran.b”]Les sources sont disponibles sur

deb-src boisson.homeip.net/source ./

apt-get source transfert

Il suffit d’installer dietlibc-dev pour la compilation. Sinon, tu peux modifier le Makefile pour compiler avec gcc standard[/quote]
Tu n’as même pas déclaré les dépendances de compil dans le paquet source ?
Quelle honte !!! :laughing:


#17

Excuses moi j’avais pas vu que tu avais mis les sources en lignes ! Décidemment ce matin j’ai pas les yeux en face des trous ^^