ARP에서 json 형식 출력 파일을 만드는 방법은 무엇입니까?

ARP에서 json 형식 출력 파일을 만드는 방법은 무엇입니까?

ARP에서 json 형식 출력 파일을 만드는 방법은 무엇입니까?

openremote2를 실행하는 라즈베리 파이가 있고 openremote가 이해할 수 있는 출력 파일 형식을 지정하고 싶습니다. 여기에 예가 있습니다.

{
  'command':'ELAPSE',
  'value':53680,
  'mute':1,
  'shuffle':0,
  'repeat':0,
  'play':1,
  'volume':0,
  'TotalTime':0,
  'favstatus':0
}

따라서 arp 명령은 다음과 같습니다:-

sudo arp-scan 192.168.0.5-192.168.0.5

출력은 다음과 같습니다:-

Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 1 hosts (http://www.nta-monitor.com/tools/arp-scan/)
1 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 1 hosts scanned in 1.684 seconds (0.59 hosts/sec). 0 responded

장치의 전원을 켜면 다음과 같은 결과가 나타납니다.

Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 1 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.0.5     08:eb:74:9e:00:f4       (Unknown)
2 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 1 hosts scanned in 1.405 seconds (0.71 hosts/sec). 1 responded

여기서 계획은 장치가 네트워크에 있는지 또는 IE에서 실행되지 않는지를 나타내는 IP가 있거나 없는 출력 파일을 생성하는 것입니다.

답변1

JSON 형식으로 출력을 원하는 경우 명령을 사용할 수 awk있습니다 printf.

이라는 awk 변수 설정을 사용하여 실제 스크립트 외부에서 형식 문자열을 '더 쉽게 정의할 수 있도록 json 형식의 출력에 많은 작은따옴표 문자를 포함하려고 합니다 .printfawk-vfmt

sudo arp-scan 192.168.0.5-192.168.0.5 | 
    awk -F'\t' -v fmt="{\n 'ip': '%s',\n 'mac': %'s',\n 'vendor': '%s'\n}\n" \
        '$2 ~ /([0-9a-f][0-9a-f]:){5}/ {printf fmt,  $1, $2, $3}'

arp-scan의 출력은 탭으로 구분되므로 awk스크립트는 두 번째 필드( $2)가 MAC 주소와 같은지 확인합니다. 그렇다면 필드를 예쁘게 인쇄하는 데 사용됩니다 printf. 그렇지 않으면 인쇄되지 않습니다.

출력(예제 기반):

{
 'ip': '192.168.0.5',
 'mac': '08:eb:74:9e:00:f4',
 'vendor': '(Unknown)'
}

IP 주소를 일반 텍스트로 원하는 경우 훨씬 간단합니다.

sudo arp-scan 192.168.0.5-192.168.0.5 | 
    awk -F'\t' '$2 ~ /([0-9a-f][0-9a-f]:){5}/ {print $1}'

산출:

192.168.0.5

(또는 IP가 응답하지 않으면 아무 작업도 수행하지 않음)

답변2

질문 시작 부분에 JSONish 예를 제공했지만 실제로 초록에서 요청하지는 않았습니다. 무언가를 포함하거나 포함하지 않는 파일입니다.

어떤 면에서는

sudo arp-scan 192.168.0.5-192.168.0.5  | tail -n +2 | head -n -2 | head -1 > out.txt

이것을 할 수 있다

이것이 원하는 것이 아니라면 질문을 편집하여 원하는 모양에 대한 실제 예를 추가하십시오.

관련 정보