私はフォローしましたこのガイド私のパイにインターネット接続が全くない4G帽子を手に入れたので、すべてが大丈夫です。pon
バックグラウンドで開始され、パスが追加されたらpingを送信できます。
私が望むのは、パイを操作してパスを追加するpon
ことです。
私は現在fileでこれをやっていますが、rc.local
非常に汚れたアプローチだと確信しています。
sleep 20
sudo pon &
sleep 20
sudo route add -net "0.0.0.0" ppp0
exit 0
ppp0
最終的にPythonを実行する前に、新しく定義されたパスでネットワークが正しく機能していることを確認したいと思います。
私は見たことがないこの同様の質問しかし、正しい方法はわかりません。pre-up.d
インターフェイスを変更して実行できますか?
どんな助けでも大変感謝します。
答え1
起動時にsystemdを介して実行されるスクリプトを作成できます。
まず、コマンドのスクリプトを作成します。実行権限があることを確認してください。
次に、次の部分を含み、次に/etc/systemd/system
終わるファイル名を使用してサービスファイルを作成します。.service
[Unit]
Description=Description of script/service
[Service]
ExecStart=/bin/bash [path to script]
[Install]
WantedBy=multi-user.target
その後、systemctlデーモンを再ロードします。
systemctl daemon-reload
最後に、次のファイル名としてsystemctlインストールスクリプトを使用しますservicename
。
systemctl enable --now [servicename]
関連:
答え2
私の質問に答えるには:
私がしたことは、x2システムサービスを作成し、ルーティングテーブルを変更することでした。
4gpon.service
バックグラウンドでponを起動するには:
[Unit]
Description=4G hat networing
[Service]
Type=forking
ExecStart=/usr/bin/pon
ExecStop=/usr/bin/poff
Restart=always
[Install]
WantedBy=multi-user.target
- デフォルトでは、ppp0を有効にするためのルーティングテーブルの更新
sudo ip route delete default
sudo ip route add default dev ppp0
sudo nano /etc/network/interfaces.d/ppp0
# add:
auto ppp0
iface ppp0 inet provider
up ip route add default dev ppp0
それから別のここで定義された値このファイルには以下も追加してください。
sudo nano /etc/ppp/peers/provider
# add at bottom:
replacedefaultroute
garage-motion.service
最初のサービスが開始されたことを確認したら、Pythonを呼び出します。
[Unit]
Description=Motion detector service
After=network.target network-online.target 4gpon.service
[Service]
Type=simple
Environment="AWS_DEFAULT_REGION=***your-region***"
Environment="AWS_ACCESS_KEY_ID=***your-key***"
Environment="AWS_SECRET_ACCESS_KEY=***your-secret-key***"
ExecStart=/bin/sh -c '/home/pi/projects/garage-motion/venv/python3 /home/pi/projects/garage-motion/venv/garage-motion.ph --serve-in-foreground'
Restart=on-abort
[Install]
WantedBy=multi-user.target