Linux의 명령줄을 통해 프린터 IP 주소를 얻는 방법은 무엇입니까?

Linux의 명령줄을 통해 프린터 IP 주소를 얻는 방법은 무엇입니까?

네트워크에 있는 무선 프린터의 모든 IP 주소를 가져오는 스크립트를 작성하려고 합니다. 문제는 어디서부터 시작해야 할지 잘 모르겠다는 것입니다. CUPS를 살펴봤지만 모든 문서나 튜토리얼은 웹 인터페이스를 사용하기 전에 명령줄로만 진행되며 IP를 찾는 방법은 전혀 언급하지 않습니다. CLI만 사용하면 어떤 아이디어가 있나요?

답변1

이에 따르면"Unix & Linux Stack Exchange"의 질문 및 답변 스레드다음을 통해서만 설치된 프린터 목록을 얻을 수 있습니다.lpstat -s또는 sudo( sudo lpstat -s)와 함께 사용하여 전체 장치 경로를 얻습니다. 아니면 아마도nmap -A?

아마도 다음을 사용하여 말한 모든 것arp~와 함께grep그리고sed파이프( )와 함께 연결하면 |다음과 같이 작동할 수 있습니다.

arp -a | grep Printer | awk '{ print $2 }' | sed 's/[()]//g'

해당 명령은 다음과 같이 분류됩니다.

  • arp -a모든 arp 트래픽을 보여줍니다.
  • grep Printer이름에 arp -a있는 줄의 출력을 구문 분석합니다 .Printer
  • awk '{ print $2 }'IP 주소를 가져오되 그 주위에는 괄호( (/ ))가 있어야 합니다.
  • sed 's/[()]//g'그런 다음 IP 주소를 정리하여 괄호를 제거합니다.

즉, 네트워크에 Wi-Fi 프린터가 하나도 없기 때문에 로컬 설정에서 이 개념을 테스트할 쉬운 방법은 없지만 작동할 것이라고 가정합니다. grep인수를 "프린터" 또는 "인쇄"로 조정해야 할 수도 있습니다 . 나는 확실히 모른다. 이는 주로 이 문제를 해결하는 데 도움이 되거나 최소한 올바른 방향으로 나아가는 데 도움이 될 브레인스토밍 아이디어입니다.

답변2

lpinfo(CUPS가 설치되어 있어야 함)는 어떻습니까 (
여기서 Perl을 사용하여 다른 항목을 필터링함).
여기

$ sudo lpinfo -l -v |  perl -ne 'print if /^Device: uri = socket:/ .. /info/'

장치: uri = 소켓://192.168.0.3
      클래스 = 네트워크
      정보 = Officejet J6400 시리즈
장치: uri = 소켓://192.168.0.5:9100
      클래스 = 네트워크
      정보 = HP Officejet Pro 8610

관련 정보