W tym artykule wyjaśniono, jak połączyć się i drukować z komputera z systemem Linux na udostępnionej drukarce podłączonej do hosta z systemem Windows.
- Pierwszym krokiem jest udostępnienie drukarki na komputerze z systemem Windows, do którego jest podłączona. Otwórz właściwości drukarki, przejdź doPartycypującyzakładkę, włączUdostępnij tę drukarkęopcję i podaj nazwę udostępnionej drukarki (nazwa nie może zawierać spacji ani znaków specjalnych);


- Utwórz nowego użytkownika lokalnegowinusr1. Usuń użytkownika z lokalnej grupy Użytkownicy, ustaw hasło tak, aby nigdy nie wygasało i zapobiegaj zmianom haseł.


Możesz użyć programu PowerShell, aby utworzyć użytkownika lokalnego z określonymi ustawieniami:$pass = ConvertTo-SecureString "pass2024W0rd-" -AsPlainText -Force
New-LocalUser -Name winusr1 -Password $pass -PasswordNeverExpires -UserMayNotChangePassword
Remove-LocalGroupMember -Group Users -Member winusr1
Domyślnie do łączenia udostępnionych drukarek systemu Windows używany jest protokół SMB. Zainstalujklient smbaby sprawdzić, czy do udostępnionej drukarki na hoście Windows można uzyskać zdalny dostęp z Linuksa:
W systemie Ubuntu/Debian uruchom polecenie:
$ sudo apt install smbclient
Wyświetl listę udziałów SMB na zdalnym komputerze z systemem Windows
$ smbclient -L \\192.168.31.94 -U winusr1
- 192.168.31.94 – adres IP lub nazwa hosta komputera z systemem Windows
- winusr1 – lokalna nazwa użytkownika Windows


To polecenie wyświetla listę udostępnionych folderów sieciowych (w tym udziałów administracyjnych) i drukarek.
Z konsoli możesz sprawdzić dostępność drukarki SMB i wysłać plik do druku:
$ smbclient -W DOMAIN -U winusr1//192.168.31.94/HPM1530
Wydrukuj określony plik:smb: \> print /home/sysops/test.txt
printing file test.txt as test.txt (856,2 kb/s)
smb: \> quit
Najłatwiejszym sposobem uzyskiwania dostępu do drukarek sieciowych i zarządzania nimi w systemie Linux jest użycie wbudowanego systemu drukowania Common UNIX (STAN NIETRZEŹWY). Interfejs sieciowy system-config-printer służy do zarządzania CUPS.
CUPS i system-config-printer są domyślnie instalowane w większości dystrybucji Linuksa na komputery stacjonarne. Sprawdź i zainstaluj w razie potrzeby:
$ dpkg -l cups
$ dpkg -l system-config-printer
$ systemctl status cups
Zalecana lektura:Jak zmienić port drukarki, aby rozwiązać problemy z drukowaniem w systemie Windows 11
Teraz podłącz udostępnioną drukarkę sieciową z Linuksa:
- Przejdź do następującego adresu URL w przeglądarce, aby otworzyć interfejs sieciowy CUPS
localhost:631; - Idź doAdministracja->Dodaj drukarkę->Inne drukarki sieciowe->Drukarka Windows poprzez SAMBA;


- Użyj poniższego formatu, aby określić ustawienia połączenia drukarki udostępnionej
smb://winusr1:[email protected]/HPM1530(Ten ciąg zawiera nazwę użytkownika i hasło, nazwę/adres IP zdalnego hosta systemu Windows oraz nazwę udostępnionej drukarki);

- Następnie ustaw nazwę i opis drukarki;


- Następnie CUPS poprosi Cię o wybranie producenta i modelu drukarki. Lista sterowników może być dość długa. Użyj następującego polecenia, aby szybko znaleźć nazwę sterownika według modelu drukarki:
$ lpinfo -m| grep 1536

Wybierz sterownik znaleziony w CUPS.

- Instalacja udostępnionej drukarki została zakończona.
Gdzie można znaleźć sterowniki druku CUPS dla systemu Linux? Na przykład w przypadku drukarek HP większość dystrybucji systemu Linux jest dostarczana z systemem HP Linux Printing and Imaging System (HPLIP) pakiet preinstalowany. Zawiera sterowniki do większości drukarek HP.
$ dpkg -l hplip


Możesz zainstalować pakiet HPLIP ręcznie:
$ sudo apt install hplip hplip-gui
Inni dostawcy mogą również udostępniać podobne pakiety sterowników lub możesz znaleźć gotowy plik PPD dla konkretnej drukarki. Możliwe jest także skorzystanie zpiankowyBiblioteka sterowników drukarki PPD (automatycznie instalowana na Ubuntu-Desktop):
$ apt install foomatic-db-compressed-ppds
Pierwsza próba wydrukowania dokumentu z Linuksa na udostępnionej drukarce Windows nie powiodła się w moim przypadku z powodu błędu. Sprawdź /var/log/cups/error_log pod kątem błędów:
E [Job 13] SMB connection failed! E [Job 13] Unable to connect to CIFS host: NT_STATUS_IO_TIMEOUT


Oznacza to, że CUPS nie może połączyć się z folderem SMB drukarki na komputerze z systemem Windows. W tym przypadku problem polega na tym, że Linux smbclient próbuje użyć protokołu SMB 1.0, aby uzyskać dostęp do udostępnionych drukarek. Wersja SMB 1.0 jest wyłączona w Windows 10 i 11, a takie połączenie zostanie odrzucone.
Edytuj plik/etc/samba/smb.confaby klient SMB systemu Linux używał bezpieczniejszej wersji SMB 2 lub 3 do połączeń. w[światowy]sekcji dodaj następujące wiersze:
client min protocol = SMB2 client max protocol = SMB3


Uruchom ponownie CUPS:
$ sudo systemctl restart cups
Klient systemu Linux może teraz pomyślnie drukować na udostępnionej drukarce na komputerze z systemem Windows.
Możesz także połączyć się z udostępnioną drukarką Windows z wiersza poleceń. Pierwszym krokiem jest znalezienie nazwy sterownika dla modelu drukarki:
$ lpinfo --make-and-model '1536' -m
Skopiuj pełną nazwę sterownika i podłącz drukarkę SMB:
$ sudo lpadmin -p HP1536mfp -v smb://winusr1:[email protected]/HPM1536 -m postscript-hp:0/ppd/hplip/HP/hp-laserjet_m1530_mfp_series-ps.ppd
Włącz drukarkę CUPS w systemie Linux:
$ cupsenable HP1536mfp
Lista drukarek:
$ lpsatat -v
$ lpstat -p


Lista podłączonych drukarek SMB jest przechowywana w pliku/etc/cups/printers.confplik. Należy pamiętać, że nazwa użytkownika i hasło systemu Windows używane do łączenia się z drukarką są tutaj przechowywane w postaci zwykłego tekstu (więc ten użytkownik musi mieć minimalne uprawnienia na komputerze z systemem Windows).
















