
네트워크에 있는 무선 프린터의 모든 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