WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:services:imprimante_cups_server

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

wiki:services:imprimante_cups_server [2017/08/07 21:44]
no_pseudo
wiki:services:imprimante_cups_server [2020/06/27 18:16]
Ligne 1: Ligne 1:
-====== Cups server ====== 
  
-Le container cups-server à été crée pour simplifier l'utilisation de l'imprimante MiNET. 
-Son ip (192.168.102.100) 
- 
- --- //[[no_pseudo@minet.net|Kevin Cazal]] 2017/04/05 16:15// 
- 
-<WRAP center round alert 60%> 
-Merci de n'imprimer en couleur que si cela est nécessaire. 
-La commande pour imprimer en Grayscale:  
-<code> lp -oColorModel=KGray filename </code> 
-</WRAP> 
- 
- 
-===== Services proposés par cups-server ===== 
- 
-    * L'impression par le réseau. 
-L'avantage de cups server est que cette machine est déjà configurée pour l'imprimante MiNET. 
-Les pilotes Brother sont déjà installés, pas besoin de les installer sur votre PC. 
-Pas besoin d'installer des pilotes génériques (qui donnent souvent un résultat aléatoire) non plus. 
- 
-    * L'impression sans openvpn. 
-Si vous n'avez pas d'accès openvpn (que les accès SSH sur vpn1 ou 2) vous pouvez quand même faire 
-un scp du fichier que vous souhaitez imprimer sur la machine cups-server et imprimer grace à la commande 
-<code> lp /chemin/vers/le_document_a_imprimer.pdf </code> (par défaut l'impression est sur le recto et en couleur) 
- 
-    * Le scan vers ftp. 
-Il est possible de scanner et d'envoyer directement vos document sur la machine cups-server et les récuper via ftp. 
-  
-===== Tutos ===== 
- 
-==== Imprimer ==== 
- 
-=== Méthode rapide === 
- 
-<WRAP center round important 60%> 
-l'utilisateur qui lance la commande lp doit faire partie du groupe lp ou s'appeller root 
-</WRAP> 
- 
-<code> [user@mon_pc]$ scp mon_fichier.pdf user@192.168.102.100:. </code> 
- 
-<code> [user@mon_pc]$ ssh user@192.168.102.100 </code> 
- 
-<code> [user@cups-server]$ lp mon_fichier.pdf </code> 
- 
-=== Méthode "proxy cups" === 
- 
-Vous pouvez installer cups sur votre PC et configurer une imprimante réseau. Sauf que au lieu de mettre l'IP de l'imprimante MiNET vous pouvez mettre l'IP de cups-serveur qui est déjà configuré avec les bons drivers. 
- 
-==== Scanner ==== 
- 
-Sur l'imprimante quand vous voulez scanner: faites 'Scan' > 'to FTP' > 'scan_ftp'. 
- 
-Pour récupérer le document: 
- 
-    * Sur nextcloud dans **/MiNET/Scanner** 
- 
- 
-===== Comment c'est fait ===== 
- 
-==== Impression ==== 
- 
-On installe cups sur le CT: 
-<code> apt install cups </code> 
- 
-on installe les drivers Brother dispo sur [[http://support.brother.com/g/b/producttop.aspx?c=us_ot&lang=en&prod=mfc9340cdw_all]] 
- 
-Sinon les drivers se trouvent sur le CD fourni avec l'imprimante. Un ISO de ce CD se trouve sur nextcloud dans MiNET/Firmware [[https://nextcloud.minet.net/index.php/apps/files/?dir=/MiNET/Firmware]]. 
- 
-On s'assure que le service cups est bien démarré. 
- 
-On configure cups, soit via l'interface WEB sur http://192.168.102.100:631  
-(à noter que par défaut cups autorise la connexion que depuis 127.0.0.1, pour se connecter sur l'interface Web depuis une autre machine il faut changer la conf de cups et rélancer le service) 
-soit en ligne de commande (cf la doc de cups). 
- 
-<wrap hi>TODO: interface web pour imprimer quand on est vraiment mauvais avec la ligne de commande </wrap> 
- 
-==== Scanner ==== 
- 
-Pour relier le scanner à un ftp: 
- 
-On installe un serveur ftp: 
-<code> apt install pure-ftpd xmlstarlet curl </code> 
- 
- 
-<WRAP center round important 100%> 
-**Obsolète:** 
-J'ai choisi pure-ftpd car sa configuration initiale fait tout ce dont on a besoin: pas de ftp anonyme, les home directories des utilisateurs standard sont disponible en ftp (avec authetification PAM), pas de ftp pour le compte root. 
- 
-<WRAP center round info 100%> 
-Il nous reste donc à créer un utilisateur et définir son home directory (qui va être l'endroit où seront stockés les fichiers scannés) 
-</WRAP> 
- 
- 
-<code> adduser --home /srv/scanner_ftp/ scanner_minet </code> 
-</WRAP> 
- 
-pure-ftpd est maintenant configuré avec un utilisateur virtuel chrooté (il n'est plus possible de se logger avec PAM et de voir le contenu des dossiers autre que la racine du serveur ftp). 
-De plus un script transfère automatiquement les fichiers uploadés sur le ftp sur Nextcloud (dans /MiNET/Scanner) 
- 
-=== Configuration de pure-ftpd avec {next,own}cloud === 
- 
- 
-Configuration de pure-ftpd: 
-<code> 
-# Creation de la DB pour les utilisateurs virtuels 
-echo '/etc/pure-ftpd/pureftpd.pdb' > /etc/pure-ftpd/conf/PureDB 
-cd /etc/pure-ftpd/auth 
-ln -s /etc/pure-ftpd/conf/PureDB 50pure 
- 
-# Desactivation du login UNIX et PAM 
-echo 'no' > /etc/pure-ftpd/auth/65unix 
-echo 'no' > /etc/pure-ftpd/auth/70pam 
- 
-# Creation de notre utilisateur virtuel 
-groupadd ftpgroup 
-useradd -g ftpgroup -d /dev/null -s /etc ftpuser 
-pure-pw useradd scanner_minet -u ftpuser -g ftpgroup -d /srv/scanner_ftp 
-pure-pw mkdb 
- 
-# On met a jour les UID et GID de l'utilisateur qui lancera le script appelé à la fin d'un upload 
-MYUID=$(id -u ftpuser); sed -i -e "s/UPLOADUID=.*/UPLOADUID=${MYUID}/g" /etc/default/pure-ftpd-common 
-MYGID=$(id -g ftpuser); sed -i -e "s/UPLOADGID=.*/UPLOADGID=${MYGID}/g" /etc/default/pure-ftpd-common 
- 
-# On active le lancement de script custom à la fin de l'upload 
-echo 'yes' > /etc/pure-ftpd/conf/CallUploadScript 
- 
-# On s'assure que tous les utilisateurs son chrooté 
-echo 'yes' >  /etc/pure-ftpd/conf/ChrootEveryone 
- 
-# Pas d'utilisateur anonyme 
-echo 'yes' >  /etc/pure-ftpd/conf/NoAnonymous 
- 
-# On s'assure que pure-ftpd n'écoute que sur l'interface dans le 102 sur le port 21 
-echo '192.168.102.100,21' > /etc/pure-ftpd/conf/Bind 
- 
-</code> 
- 
-On crée le script qui va transférer les fichiers uploadé sur le ftp sur le {own,next}cloud (/opt/uploadhandler.sh) 
-<code> 
-#!/bin/bash 
- 
-# Lorsque pure-ftpd appelle un script il passe le chemin absolu du fichier uploadé en $1 
- 
- 
-PROXY="http://192.168.102.61:82" 
-OC_USER="scanner" ###### Utilisateur nextcloud faisant partie du groupe "MiNET" 
-OC_PASS="xxxxxxxxxxxxxxxxxx" ###### MDP de l'utilisateur scanner sur nextcloud 
-OC_WEBDAV_URL="https://nextcloud.minet.net/remote.php/webdav/" 
-OC_UPLOAD_DIR="MiNET/Scanner" 
-FILENAME=$(basename "$1") 
- 
- 
-# upload_exit_code vaut 0 si la commande n'a pas retournée d'erreur 
-# cependant ça ne veut pas dire que le fichier a bien été uploadé sur 
-# nextcloud 
-curl -s -x $PROXY -u $OC_USER:$OC_PASS -T "$1" $OC_WEBDAV_URL/$OC_UPLOAD_DIR/$FILENAME 
-upload_exit_code=$? 
- 
- 
-# Verifie que le fichier se trouve bien sur nextcloud 
-# si dans le XML renvoyé par la requête on trouve 
-# un élément "error" dans lequel on trouve un élément "exception" 
-# check_exit_code vaut  0 -> en d'autres termes ça sent pas bon  
-curl -s -x $PROXY -u $OC_USER:$OC_PASS -PROPFIND $OC_WEBDAV_URL/$OC_UPLOAD_DIR/$FILENAME | xmlstarlet select -t -v //d:error/s:exception 
-check_exit_code=$? 
- 
- 
-# On supprime le fichier de cups-server seulement si le fichier a 
-# bien été envoyé sur nextcloud 
-if [ $upload_exit_code -eq 0 ] && [ $check_exit_code -ne 0 ]; then 
-        rm -r "$1" 
-fi 
- 
-</code> 
- 
-Ensuite: 
-<code> 
-chmod +x /opt/uploadhandler.sh 
-</code> 
- 
-On s'assure que la conf globale de pure-ftpd est bonne (/etc/default/pure-ftpd-common): 
-<code> 
-STANDALONE_OR_INETD=standalone 
- 
-VIRTUALCHROOT=true 
- 
-UPLOADSCRIPT=/opt/uploadhandler.sh 
- 
-UPLOADUID=1008 #uid de l'utilisateur qu'on vient de créer 
-UPLOADGID=1008 #gid de l'utilisateur qu'on vient de créer 
-</code> 
- 
-Ensuite aller sur l'interface WEB de l'imprimante: 
-http://192.168.102.172/scan/scanprofile.html 
- 
-Cliquez sur un profil et remplissez les champs: 
- 
-Profile Name 
- 
-Host Address (l'address IP de cups-server) 
- 
-Username (le nom d'utilisateur **virtuel** que vous venez créer) 
- 
-Password (le mot de passe de cet utilisateur) 
-Store Directory (le dossier dans lequel les documents seront stockés, mettre '.' pour stocker à la racine du ftp). 
- 
-Les autres champs peuvent être laissés à leur valeur par défaut. 
- 
-Validez le formulaire et normalement le profile devrait apparaitre dans le menu 'Scan to FTP' de l'imprimante. 
- 
- 
-==== Commandes utiles ==== 
- 
-Lister les imprimantes disponibles: 
-<code> lpstat -p </code> 
- 
-Sélectionner une imprimante: 
-<code> lp -d printer filename </code> 
- 
-Imprimer avec un bandeau topsecret: 
-<code> lp -o job-sheets=standard filename </code> 
- 
-Spécifier un range de page à imprimer: 
-<code> lp -o page-ranges=1-4 filename </code> 
wiki/services/imprimante_cups_server.txt · Dernière modification: 2020/06/27 18:16 (modification externe)