Vous voulez imprimer un fichier au bureau ? Oui mais voilà vous êtes sur votre propre machine qui n'a pas accès aux imprimantes ou n'est pas configurée pour.
Rien de plus facile ! Mettons à terre la sécurité de l'endroit avec quelques commandes...
Sommaire
Description du problème
- Votre machine
(A)
est en Wi-Fi et ne peut se connecter aux imprimantes. - Vous disposez d'un compte sur le réseau avec lequel vous pouvez vous loguer sur n'importe quel ordinateur de la structure
(C)
. - Vous disposez d'une machine fixe connectée au réseau
(B)
, mais vous avez eu la bonne idée de demander la délégation totale (= démerdez vous en cas de problème); donc cette machine n'a pas non plus accès aux imprimantes... - La machine en Wi-Fi
(A)
, ne peut se connecter aux machines fixes du parc(C)
(sécurité oblige), mais votre machine fixe(B)
peut néanmoins le faire. - Vous avez la flemme de vous lever de votre siège pour imprimer votre fichier ailleurs via une clé USB.
Solution en image
Légende : voir au-dessus et en-dessous.
Oui c'est fait avec Gimp, donc c'est dégueulasse.
Commandes
La machine distante (D)
héberge un serveur web qui jouera le rôle de la clé USB la moins pratique du monde. Déposons-y notre fichier à imprimer:
$ scp Desktop/file.png firstname.lastname@example.org:/home/user/
$ sudo mv file.png /var/www/html/
La machine fixe (B)
héberge un serveur SSH qui doit se faire connaître par le serveur distant (D)
; la connexion inverse est impossible à cause du pare-feu du parc informatique qui laisse sortir mais ne laissera rien entrer. Il s'agit donc de rendre le serveur SSH (port tcp/22) de (B)
accessible sur le port localhost tcp/2222 distant de (D)
:
$ ssh email@example.com -R 2222:localhost:22
Note: Ne pas confondre -R
avec -L
qui fait juste de la translation de port (c.à.d qu'avec -L
vous accédez à un service au lieu de rendre un service accessible; dans le premier cas il s'agit d'un tunnel simple; dans le second le tunnel en attend un autre dans l'autre sens (reverse SSH tunnel))
Connectons nous depuis le portable (A)
sur le serveur distant (D)
:
$ ssh firstname.lastname@example.org -p 22
Puis connectons nous à la machine fixe (B)
par un tunnel inverse (reverse SSH):
$ ssh user@localhost -p 2222
# Vérification de la connexion initiée par `(A)` sur l'interface loopback port tcp/2222
$ netstat -tunelp | grep 2222
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 0 10586 -
Nous voilà sur la machine en face de nous (B)
; le réseau du parc est à nous. Connectons-nous sur la machine du voisin (C)
qui a accès aux imprimantes:
$ ssh user@neighbour -p 22
Maintenant il faut récupérer notre fichier depuis le serveur web distant (D)
:
$ wget http://home.org/file.png
Listons les imprimantes disponibles et imprimons:
# Lister les imprimantes:
$ lpstat -p -d
printer printer_name is idle. enabled since mer. 27 janv. 2016 11:57:14 CET - prêt pour l’impression.
# Juste les noms:
$ lpstat -a | cut -f1 -d ' '
printer_name
# Impression
$ lpr -P printer_name file.png
Conclusion
Prenez une clé USB et levez-vous.