SoracomAir接続をSystemdでサービス化したメモ

  • 1
    いいね
  • 0
    コメント

RaspberryPi3にSoracomAirのSIM挿したあとの話。

通信するにはSoracom提供の connect_air.sh を走らせておくのだが
それをサービス化する。


サービス化

mkdir -p /opt/soracom/bin

cd /opt/soracom/bin

#### Soracomで公開されているやつ
curl -L -O http://soracom-files.s3.amazonaws.com/connect_air.sh

chmod 555 connect_air.sh

#### startとstopだけのsoracom.shを作る
# connect_air.shを呼ぶだけ
cat > soracom.sh <<'EOF'
#!/bin/bash -e

BASE_DIR=$(cd $(dirname $0)/..;pwd)

case "$1" in
  "start")
    ${BASE_DIR}/bin/connect_air.sh
    ;;
  "stop")
    kill -SIGINT $2
    ;;
esac
EOF

chmod 555 soracom.sh

#### サービス化する
# $MAINPIDでProcessIDを参照できるらしい
cat > /etc/systemd/system/soracom.service <<'EOF'
[Unit]
Description = soracom air ppp connect

[Service]
ExecStart = /opt/soracom/bin/soracom.sh start
ExecStop = /opt/soracom/bin/soracom.sh stop $MAINPID

[Install]
WantedBy = multi-user.target
EOF

使いかた

#### 確認
# soracom.serviceが表示されればOK
systemctl list-unit-files --type=service

#### 起動
# 少し待ってからifconfig叩くとpppがUPになってるはず
systemctl start soracom

#### 停止
systemctl stop soracom

USBドングル挿したら接続開始する、みたいな
upnp的にやってくれるようにできたらいいな。。。