Bagaimana cara menghapus ratusan printer jaringan yang ditambahkan secara otomatis?

16

Sangat sulit bagi saya untuk melakukan pencetakan, karena dialog printer penuh dengan ratusan printer yang ditambahkan secara otomatis, jadi saya tidak dapat menemukan yang ingin saya gunakan, lihat screenshot di bawah ini.

Gambar dialog printer menunjukkan bilah gulir yang sangat panjang

Printer berasal dari jaringan kerja saya, di mana tampaknya banyak orang (termasuk siswa, saya kira) sedang "berbagi" printer rumah mereka, yang kemudian diambil oleh laptop saya secara otomatis. (kebetulan saya kadang-kadang menonaktifkan avahi-daemon di tempat kerja, hanya karena menggunakan sejumlah besar CPU).

Ketika saya pergi ke http://localhost:631/printers/, dikatakan ada 131 printer, dan mereka semua adalah Make dan Model 'Local Raw Printer'. Dengan dua pengecualian: 1 adalah printer jaringan yang berfungsi yang saya konfigurasikan secara manual. Lain adalah printer jaringan di orang tua saya, yang juga secara otomatis ditambahkan dan saya berada di jaringan yang sama seperti sekarang. Tapi sisanya hanya sampah yang ingin saya hindari. Kiat bagaimana melakukan itu akan sangat dihargai.

Saya tidak akan kembali ke tempat kerja saya untuk sementara waktu, jadi untuk sekarang, saya hanya ingin printer ini (yang akan menjadi 129/130 printer ditambahkan secara otomatis) untuk dihapus. Apakah ada cara untuk melakukan itu? Saya kira saya bisa melakukannya dengan mengklik di antarmuka web piala, tetapi untuk 129 printer, itu agak banyak. Jadi saya mencari satu perintah atau tips tentang cara mencapainya dengan semacam script.

Jonaslb
sumber
1
lihat /etc/cups/printers.conf. hentikan cangkir dan kemudian lepaskan printer dari file.
Rinzwind
2
Ini bukan duplikat karena saya bertanya bagaimana cara menghapus printer yang sudah diinstal, sementara pertanyaan lain tentang mencegah instalasi mereka. Juga, ini adalah pertanyaan yang memiliki jawaban panas yang berantakan dan tidak berfungsi. Saya tahu ini karena saya pernah melihatnya sebelumnya dan mencobanya.
jonaslb
1
Dipahami, ditarik :)
NGRhodes

Jawaban:

13

Menggunakan perintah ini: lpstat -akita bisa melihat printer yang diinstal dan mengidentifikasi nama dari printer yang diinginkan untuk menjaga, kita dapat menggunakan grepperintah juga untuk menyaring hasil seperti: lpstat -a | grep <probable_name_of_printer>.

Maka skrip kecil ini dapat membantu:

  1. Jalankan perintah ini untuk memeriksa apakah printer yang diinginkan tidak terdaftar:

    lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d' | grep <NAME_OF_PRINTER>
    
    • Ini seharusnya tidak menghasilkan apa-apa karena melakukan hal berikut:

      • lpstat -a: daftar printer yang diinstal
      • cut -d" " -f1: kembalikan hanya nama-nama printer
      • sed -E '/<NAME_OF_PRINTER>/d': hapus nama printer untuk menjaga dari output dari perintah sebelumnya
      • grep <NAME_OF_PRINTER>: pastikan printer yang diinginkan tidak ada dalam daftar
  2. Jika di atas check out; kemudian jalankan perintah ini untuk menghapus setiap printer lain yang tidak Anda butuhkan:

    sudo bash -c 'for i in $(lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d'); do lpadmin -x "$i"; done'
    
George Udosen
sumber
Ini terlihat menjanjikan. Saya pikir mungkin ada masalah (dengan perintah listing jadi mungkin juga perintah terakhir). lpstat -amenghasilkan <printer_name> not accepting request since <some date> -\n reason unknown(dengan reason unknowndi baris baru!). Jadi menggunakan perintah listing Anda, saya mendapatkan banyak "printer" bernama `alasan` (ada lekukan).
jonaslb
Silakan bagian mana dari langkah-langkah Anda mengalami masalah dan tambahkan hasil apa pun ke pertanyaan Anda sehingga saya bisa mengikuti! Apa yang lpstat -adiberikan perintah kepada Anda?
George Udosen
1
Itu bekerja dengan baik, tapi saya menambahkan sedperintah lain di "rantai pipa": sed -E /reason/duntuk menghilangkan garis tambahan.
jonaslb
Kerja bagus dan senang itu berhasil!
George Udosen