モニター無しでもIPアドレスを知りたい。[ラズパイ]


概要

  • ラズパイにssh接続したいけどIPアドレスわかんなーいっていうそんなあなたに。

本題に入る前に...

普段ラズパイを運用する場合にSSHやVNCでリモート接続している人でも、セットアップ時はモニター、キーボードマウスといった入出力機器をラズパイに繋いで、直接操作している人も多いのではないでしょうか。

マウスもキーボードも1つあれば良いし、
モニターをラズパイに一台占有されることで、作業領域減りますし、
なんならRPi3からはWi-Fiが標準で付いていますから、LANケーブルさえ必要ないですよね?

ディスプレイやキーボード、マウスなどの入出力機器を接続しない状態でコンピュータを運用することをヘッドレスといいます。
必要ないものは省いてヘッドレス化していきましょう。スッキリします。

電源さえあればラズパイは開発環境を整えられるのです。
以下ではその方法を紹介します。

ヘッドレス RPI初期セットアップ

Raspberry Piではセキュリティの観点からSSHはデフォルトで無効となっており、SSH接続を有効にするために、ボリュームの/直下にssh(拡張子なし)というファイルを置く必要があります。

また、無線LANに接続する必要があるので、SSIDとパスワードを設定しなければなりません。
これもボリュームの/直下にwpa_supplicant.confというファイルを作成し、中身に必要な情報を書き込めば、/etc/wpa_supplicant/wpa_supplicant.confに自動的に書き込まれます。

wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="test"
    psk="abcd1234"
}

windowsの場合

以上で、ヘッドレス時のセットアップは完了です。

IPアドレス取得

ssh接続にはIPアドレスとユーザ名、パスワードが必要です。
ラズパイはデフォルトのユーザ名がpi
パスワードがraspberryです。
よって、ユーザ名とパスワードは調べる必要がありませんが、IPアドレスを知る必要があります。
IPアドレスを調べるシェルスクリプトを作成しました。

your_IP.sh
echo 192.168.1.{1..254} | xargs -P256 -n1 ping -s1 -c1 -W1 | grep ttl | sort -n -k 4 -t "." | cut -f 4 -d " " > a.txt
read -p "Ready??(press Enter): "
echo 192.168.1.{1..254} | xargs -P256 -n1 ping -s1 -c1 -W1 | grep ttl | sort -n -k 4 -t "." | cut -f 4 -d " " > b.txt
diff b.txt a.txt > /dev/null 2>&1
if [ $? -eq 1 ]; then
 diff --old-line-format='%L' --new-line-format='%L' --unchanged-line-format='' a.txt b.txt
fi 
rm a.txt
rm b.txt

説明
使用しているIPアドレスを調べる
->エンターキー押されるまで待つ(その間にラズパイ付ける)
->もう一度使用しているIPアドレスを調べる
->差分とる.終わり.


また、Fingというネットワークスキャナアプリでも、同様にIPアドレスを簡単に調べることができます。大変便利です。

Google Play
Apple Store