ADS-Bレシーバー用のシェルスクリプトをつくってみた
学生団体Keiseiで使用しているADS-Bレシーバー設定用のシェルスクリプトを公開しました!
プロジェクトの紹介
このプロジェクトは、Raspberry Piを活用して、航空機の位置情報を受信し、地図上に表示するシステムです。無線を受信し、それを解析することで、リアルタイムで航空機の位置や高度、速度などの情報を追跡できます。
Flightradar24などのサービスは個人のレシーバーで得たデータを送信することで実現しています!
筆者が所属する学生団体Keiseiではレシーバーを全国に設置し、自分たちのADS-Bネットワークを作る取り組みを行っています。その過程で設定用スクリプトを作成しており、今回はそれを公開することにしました!
ADS-Bについては弊団体の取り組みを紹介する記事をご覧ください。
法的解釈
ADS-Bに関する学生団体Keisei及びそのメンバーが弊団体の活動として技術的記事を公開するポリシーは一貫しています。
この記事の法やルールの解釈は当団体のもので、これによって一切の責任を負うものではありません。また、この記事は法律の解釈の正当性を主張するものではなく、技術の紹介を行うものです。
また、エンジニアリングに取り組む際にはお住いの自治体及び国の関連法令等を確認し、必要に応じて公的機関または司法機関に助言をもとめてください。
作るサービスの概要
このサービスは、
- FlightAware(webviewer)
- dump1090-fa(受信データ解析)
- CloudFlared(ゼロトラストアクセス)
- Node-exporter(Promehteus/Grafana監視)
- ufw(ファイアウォール)
をインストールします。
CloudFlaredを利用したシステムについてはこちらをご覧ください。
できること
-
ADSB信号の受信・解析
受信機を使ってADSB信号を受信し、航空機の位置データなどを解析します。 -
地図表示
取得したデータを地図上にプロットし、リアルタイムで航空機の位置を追跡します。 -
ゼロトラストアクセス
モバイル端末などからゼロトラストで地図にアクセスできます。 -
Prometheus/Grafana監視
Node-exporterをインストールし、Prometheusでの監視に対応します。 -
ファイアウォールの設定
FlightAware、Node-exporterで使用するポート、SSHで使用するポート以外の通信を遮断します。
ライセンス
このプロジェクトは、MITライセンスの下で公開されています。詳細については、リポジトリ内のREADMEをご確認ください。
シェルスクリプト自作
今回、初めてシェルスクリプトを自作してみました。意外と紹介する記事は少なかったので簡単に感想と作成方法を解説します。
ファイル作成
.sh
の拡張子で保存します。以上
変数
VARNAME = "value"
echo $VARNAME
定義した変数をコマンドなどで使用する場合には$を変数名につけて使用します。
ユーザ入力
read -p "Enter the text: " input
echo $input
read -p を用いることでシェルに入力された値を変数に代入できます。
条件分岐
if [ $A -eq $B ]; then
echo true
else
echo false
fi
または
case $input in
Y | "")
echo "Install"
;;
n)
echo "Skip"
;;
*)
echo "Invalid option. Exiting."
exit 1
;;
esac
if,caseを用いることで条件分岐を行うことができます。
出力
echo "text"
シェルに出力できます。
まとまっている記事は少ないのですが、非常にシンプルで書きやすいですね。日頃の作業も自動化していきたいと思います。
実行
sudo chmod +x ./sample.sh
./sample.sh
実行権限を付与することで実行できます。シェルスクリプトの動作が管理者権限を必要とする場合にはsudoをつけて実行します。
関連記事
弊団体のnoteではADS-Bプロジェクトについて執筆しております。ぜひご覧下さい。
Discussion