[SOLVED] Drukowanie z serwera zdalnego na drukarce lokalnej.

Przeglądarki, poczta, pakiety biurowe, prezentacje itd.
zxraf48kb
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 104
Rejestracja: 14 wrz 2007, 17:43
Płeć: Mężczyzna
Wersja Ubuntu: 16.04
Środowisko graficzne: GNOME
Architektura: x86_64

[SOLVED] Drukowanie z serwera zdalnego na drukarce lokalnej.

Post autor: zxraf48kb »

Witam.

Takie zagadnienie:

Z kompa (ubuntu), łączę się z serwerem (ubuntu), który jest hostem dla maszyny wirtualnej (Virtualbox/win). Połączenie ssh/rdp.
No i właśnie ... Jak z takiego można wydrukować na drukarce podłączonej lokalnie do USB kompa?
Domyślam się że trzeba se otworzyć dodatkowy tunel ssh, na potrzeby drukowania, ale nie mam pojęcia jak zkonfigurować ustawienia drukarki w "win" i usb-kompie.
Plizzz sugestie.

Pozdr

PS: Domyślam się że sterownik win powinien być jako drukarka lokalna na porcie adresIP hosta, port tunelu ... Chyba tak ?
Ale jak ustawić nie wiem jak ustawić nasłuchiwanie drukarki na porcie localhost:port tunelu w kompie.
Ostatnio zmieniony 07 lip 2019, 19:39 przez zxraf48kb, łącznie zmieniany 1 raz.
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4678
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Re: Drukowanie z serwera zdalnego na drukarce lokalnej.

Post autor: jacekalex »

Manager druku CUPS obsługuje wszyskie sieciowe protokoły drukowania.
Możesz zrealizować połączenie z drukarką np po IPP/SSL bezpośrednio, albo przez tunel SSH.
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
zxraf48kb
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 104
Rejestracja: 14 wrz 2007, 17:43
Płeć: Mężczyzna
Wersja Ubuntu: 16.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: Drukowanie z serwera zdalnego na drukarce lokalnej.

Post autor: zxraf48kb »

No dobra.
Otwieram sobie tunel z kompa:

Kod: Zaznacz cały

ssh -g -R 1631:127.0.0.1:631 -N -f -l <juzer> <serwer>
Teraz mogę sobie drukować z hosta:

Kod: Zaznacz cały

lpr -H 127.0.0.1:1631 -P <nazwa_drukarki> plik.pdf
A teraz, jak ustawić drukarkę na gościu (VirtualBox/Windows)?

Pozdr
zxraf48kb
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 104
Rejestracja: 14 wrz 2007, 17:43
Płeć: Mężczyzna
Wersja Ubuntu: 16.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: Drukowanie z serwera zdalnego na drukarce lokalnej.

Post autor: zxraf48kb »

OK.
Po tentegowaniach i kombinacjach się udało, więc SOLVED, ale może ktoś, coś bardziej elegancki będzie miał pomysł.
1. Na hoście zakładamy folder, który będzie jakby taki "spool"
2. Teraz trzeba napisać skrypcik, chodzący w tle, który będzie monitorował, czy aby nie pojawi się tam jakiś .PDF. Jest takie inotify-tools, który ma funkcje "inotifywait", zatem:

Kod: Zaznacz cały

sudo apt-get install inotify-tools
Teraz skrypcik ... W raziegdyby pojawił się w katalogu jakiś PDF, to ma go wydrukował do portu ssh, a następnie skasować:

Kod: Zaznacz cały

#!/bin/bash
inotifywait -m /home/.........../printorres -e create -e moved_to |
    while read path action file; do
        if [[ "${file^^}" =~ .*PDF$ ]]; then 
            # echo $file
            lpr -H 127.0.0.1:631 -P Brother_MFC_J625DW /home/.........../printorres$file
            rm /home/.........../printorres/$file
        fi
    done
Potrzebny będzie jeszcze jeden skrypcik, który zatłucze ten pierwszy przy zamykani sesji. Nie wiem , nie rozumiem, nie umiem dlaczego kill %(pidof inotifywait) nie przechodzi komendą ssh. Może ktoś coś. Nie istotna jest nazwa jaką damy skrypcikowi. On tworzy proces "inotifywait" i tak go zabijamy.

Kod: Zaznacz cały

#!/bin/bash
kill $(pidof inotifywait)
To było na tyle po stronie hosta.

3. Teraz strona druga.

Kod: Zaznacz cały

#!/bin/bash

# Nazwa użytkownika i hasło
juzer="XXX"
pw=$(zenity --password) 

# Odpalamy skrypcik w tle, na hoscie
sshpass -p $pw ssh $juzer@SERWER "nohup /................./printerros < /dev/null > /tmp/mylogfile 2>&1 &"  

# Tunele ssh dla VNC i do drukowania
sshpass -p $pw ssh -L 5901:127.0.0.1:5901 -N -f $juzer@SERWER
sshpass -p $pw ssh -R 1631:127.0.0.1:631 -N -f $juzer@SERWER

# Otwieramy VNCwiułer. Taki lub inny
xtigervncviewer 127.0.0.1::5901

# Po zamknięciu, zabijamy skrypcik drugim skrypcikiem
sshpass -p $pw ssh $juzer@SERWER "/................./kill-printeros"

# Zamykamy tunele ssh
kill $(pidof ssh)
Teraz można se drukować do PDFa, zarówno z pulpitu hosta, jak i wirtualnego gościa i będzie szło na naszą drukarkę przy kompie.
To u mnie działa, więc raczej [SOLVED], ale może ktoś, coś może poradzić lepiej i bardziej elegancko.


Pozdr
ODPOWIEDZ

Wróć do „Biuro”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 91 gości