ฉันจะลบเครื่องพิมพ์เครือข่ายที่เพิ่มอัตโนมัติหลายร้อยเครื่องได้อย่างไร


16

เป็นเรื่องยากมากสำหรับฉันที่จะทำการพิมพ์เนื่องจากกล่องโต้ตอบเครื่องพิมพ์เต็มไปด้วยเครื่องพิมพ์ที่เพิ่มโดยอัตโนมัติหลายร้อยเครื่องดังนั้นฉันจึงไม่พบเครื่องพิมพ์ที่ฉันต้องการใช้ดูภาพด้านล่าง

ภาพกล่องโต้ตอบเครื่องพิมพ์แสดงแถบเลื่อนที่ยาวมาก

เครื่องพิมพ์เกิดจากเครือข่ายงานของฉันซึ่งเห็นได้ชัดว่าผู้คนจำนวนมาก (รวมถึงนักเรียนฉันคิดว่า) กำลัง "แบ่งปัน" เครื่องพิมพ์ที่บ้านของพวกเขาซึ่งแล็ปท็อปของฉันจะรับโดยอัตโนมัติ (โดยบังเอิญบางครั้งฉันปิด avahi-daemon ในที่ทำงานเพียงเพราะใช้ซีพียูจำนวนมาก)

เมื่อฉันไปที่http://localhost:631/printers/มันบอกว่ามี 131 เครื่องพิมพ์และพวกเขาทั้งหมดของเครื่องพิมพ์และรุ่น 'Local Raw Printer' ด้วยข้อยกเว้นสองข้อ: 1 เป็นเครื่องพิมพ์เครือข่ายในที่ทำงานที่ฉันกำหนดค่าด้วยตนเอง อีกอย่างคือเครื่องพิมพ์เครือข่ายที่พ่อแม่ของฉันซึ่งเพิ่มโดยอัตโนมัติและฉันอยู่ในเครือข่ายเดียวกันกับตอนนี้ แต่ที่เหลือเป็นเพียงขยะที่ฉันอยากจะหลีกเลี่ยง เกร็ดน่ารู้เกี่ยวกับวิธีการทำที่น่าชื่นชม

ฉันจะไม่กลับไปที่ทำงานอีกสักพักดังนั้นตอนนี้ฉันก็เลยอยากเครื่องพิมพ์เหล่านี้ (นั่นก็คือเครื่องพิมพ์ 129/130 ที่เพิ่มโดยอัตโนมัติ) ที่จะถูกลบออก มีวิธีทำเช่นนั้นหรือไม่? ฉันเดาว่าฉันสามารถทำได้โดยคลิกผ่านเว็บอินเตอร์เฟสของถ้วย แต่สำหรับเครื่องพิมพ์ 129 เครื่องนั่นค่อนข้างมาก ดังนั้นฉันกำลังมองหาคำสั่งเดียวหรือเคล็ดลับเกี่ยวกับวิธีการบรรลุด้วยสคริปต์แปลก ๆ


1
ดู /etc/cups/printers.conf หยุดถ้วยแล้วเอาเครื่องพิมพ์ออกจากไฟล์
Rinzwind

2
มันไม่ซ้ำกันเพราะฉันกำลังถามวิธีการลบเครื่องพิมพ์ที่ติดตั้งแล้วในขณะที่คำถามอื่น ๆ เกี่ยวกับการป้องกันการติดตั้งของพวกเขา นอกจากนี้ยังเป็นคำถามที่มีระเบียบคำตอบที่ล้าสมัยซึ่งไม่ได้ผล ฉันรู้สิ่งนี้เพราะฉันเคยเห็นมาก่อนและลองบางอย่าง
jonaslb

1
เข้าใจหดกลับมา :)
5322

คำตอบ:


12

การใช้คำสั่งนี้: lpstat -aเราสามารถมองเห็นเครื่องพิมพ์ที่ติดตั้งและระบุชื่อของเครื่องพิมพ์ที่ต้องการที่จะให้เราสามารถใช้คำสั่งยังกรองผลลัพธ์เช่นดังนั้น:greplpstat -a | grep <probable_name_of_printer>

จากนั้นสคริปต์เล็ก ๆ นี้สามารถช่วย:

  1. เรียกใช้คำสั่งนี้เพื่อตรวจสอบว่าเครื่องพิมพ์ที่ต้องการไม่มีอยู่ในรายการ:

    lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d' | grep <NAME_OF_PRINTER>
    
    • สิ่งนี้จะไม่ส่งคืนสิ่งใดเช่นเดียวกับที่ทำต่อไปนี้:

      • lpstat -a: รายการเครื่องพิมพ์ที่ติดตั้ง
      • cut -d" " -f1: ส่งคืนเฉพาะชื่อของเครื่องพิมพ์
      • sed -E '/<NAME_OF_PRINTER>/d': ลบชื่อเครื่องพิมพ์ออกจากเอาท์พุทของคำสั่งก่อนหน้า
      • grep <NAME_OF_PRINTER>: ตรวจสอบว่าเครื่องพิมพ์ที่ต้องการไม่อยู่ในรายการ
  2. หากตรวจสอบข้างต้น; จากนั้นเรียกใช้คำสั่งนี้เพื่อลบเครื่องพิมพ์อื่น ๆ ที่คุณไม่ต้องการ:

    sudo bash -c 'for i in $(lpstat -a | cut -d" " -f1 | sed -E '/<NAME_OF_PRINTER>/d'); do lpadmin -x "$i"; done'
    

สิ่งนี้ดูมีแนวโน้ม ฉันคิดว่าอาจมีปัญหา (ด้วยคำสั่ง listing listing ดังนั้นอาจเป็นคำสั่งสุดท้าย) lpstat -aผลลัพธ์ใน<printer_name> not accepting request since <some date> -\n reason unknown(ด้วยreason unknownในบรรทัดใหม่!) ดังนั้นการใช้คำสั่งรายการของคุณฉันได้รับ "เครื่องพิมพ์" จำนวนมากชื่อว่า `เหตุผล '(มีการเยื้อง)
jonaslb

โปรดทำส่วนใดของขั้นตอนที่คุณมีปัญหาและเพิ่มผลลัพธ์ใด ๆ ในคำถามของคุณเพื่อให้ฉันสามารถติดตามได้! คำสั่งlpstat -aให้อะไรคุณ
George Udosen

1
มันใช้งานได้ดี แต่ฉันเพิ่มsedคำสั่งอื่นใน "chain chain": sed -E /reason/dเพื่อกำจัดบรรทัดพิเศษ
jonaslb

เยี่ยมมากและดีใจที่มันได้ผล!
George Udosen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.