<p data-ke-size="size16">라즈베리파이(4B 기준)에서 장치마다의 고유값인 시리얼 번호를 얻을 수 있습니다.</p>
<p data-ke-size="size16">/sys 에 접근하는 방법과 /proc 에 접근하는 방법이 있습니다.</p>
<p data-ke-size="size16"> </p>
<ol style="list-style-type: decimal;" data-ke-list-type="decimal">
<li>cat /sys/firmware/devicetree/base/serial-number</li>
<li>grep Serial /proc/cpuinfo | awk -F'[: ]' '{print $3}'</li>
<li>grep Serial /proc/cpuinfo | cut -d ' ' -f 2</li>
</ol>
<p data-ke-size="size16">저는 그동안 2번을 써왔는데 ssh 로 원격 명령 내리려다 보니 따옴표 처리, 특수문자 $ 처리 등 신경 써야할 게 많았습니다. 예를 들면 다음과 같이 명령을 내려야 합니다.</p>
<p data-ke-size="size16">ssh user@pi_address "grep Serial /proc/cpuinfo | awk -F'[: ]' '{print \$3}'"</p>
<p data-ke-size="size16"> </p>
<p data-ke-size="size16">이번에 답답해서 찾아보다가 1번 명령을 알게 되었습니다. 깔끔하네요!!</p>
<p data-ke-size="size16"> </p>
<p data-ke-size="size16">※ 1번 명령을 shell 에서 쓰다 보면 다음과 같은 경고를 만날 수 있습니다.</p>
<p data-ke-size="size16">-bash: warning: command substitution: ignored null byte in input</p>
<p data-ke-size="size16"> </p>
<p data-ke-size="size16">1번 명령 뒤에 tr 로 널을 없애주는 명령을 붙여주면 해당 경고가 나타나지 않습니다.</p>
<p data-ke-size="size16">cat /sys/firmware/devicetree/base/serial-number | tr -d '\0'</p>
↧