Essayez ceci :
cat you_file.prn | netcat -w 1 printer_ip 9100
Si vous utilisez bash alors :
cat /path/to/file > /dev/tcp/10.11.234.75/9100
Ce que vous voulez faire n'est probablement pas faisable. Si les imprimantes aux extrémités de ces adresses IP ne sont que des imprimantes aléatoires, le serveur que vous construisez doit savoir quel pilote utiliser pour pouvoir imprimer dessus. Si vous ne les avez pas installés au préalable, cela ne fonctionnera pas.
Si vous souhaitez uniquement parler à d'autres serveurs IPP (Internet Printing Protocol), c'est possible, mais pas nécessairement élégant. Je ne connais aucune autre implémentation Linux d'un client IPP que CUPS, et CUPS vous oblige à installer des imprimantes à l'avance. Cela peut être fait très facilement (comme expliqué ici). C'est le même code pour ajouter une imprimante normale (mais il faut savoir quel pilote utiliser) que pour un serveur IPP. Alternativement, vous pourrez peut-être trouver une autre implémentation IPP (ou en écrire une - cela devrait être assez simple juste pour envoyer un document) qui ne nécessite pas l'installation d'imprimantes.
Voici le code pour ajouter une imprimante IPP à CUPS :
lpadmin -E -p <printer-name> -v http://<ip_address>:631/<dir>/<printer> -L <location> -E
<printer-name>
et <location>
peut être ce que vous voulez, et vous avez besoin du chemin réseau complet vers l'imprimante.
Pour ajouter une imprimante normale :
lpadmin -E -p <printer-name> -v <device-uri> -m <model> -L <location> -E
C'est la même chose, sauf que vous devez donner un <model>
, qui est le pilote de l'imprimante. Supprimez le premier -E
si vous ne voulez pas de cryptage.
Si vous souhaitez supprimer l'imprimante par la suite, utilisez ceci :
lpadmin -x <printer-name>