Raspberry Piへのログインの自動化を支援するために、現在のIPをGoogleドライブフォルダーに送信するシェルスクリプトを作成しました。ラップトップの別のスクリプトがIPを取得してログインします。スクリプトはコマンドラインから実行すると正常に機能しますが、IPが割り当てられた後、起動時に実行できません。
Crontabを試しましたが、IPが割り当てられる前にスクリプトが実行されます。タイマーを設定したり、whileループを使用してIPを待機したりしたくないのですが、あまり効率的ではありません。 DHCPの実行後に、起動プロセス中にスクリプトを実行しようとしています。 allinterfaceup()関数でupstartにパスを追加しようとしましたが、それも機能しませんでした。助けていただければ幸いです。
Raspberry Pi 3、Ubuntu Mate 16.04 LTS
脚本:
#!/bin/sh
#if ([ $reason = "BOUND" ] || [ $reason = "RENEW" ] )
#then
echo `hostname -I | cut -d' ' -f1 ` > ~/ipAddr/ip.txt
rclone copy ~/ipAddr/ip.txt remote:pi
#fi
これを行う方法は多数あります。
DHCPの実行後にスクリプト「」を実行する場合、hooksが適切です!
dhclient
は、終了後にディレクトリ/etc/dhcp/dhclient-exit-hooks.d/
内のすべてを実行します。*
スクリプトをディレクトリに配置するのではなく、ディレクトリにリンクすることをお勧めしますが、両方とも機能します。
ln -s /path/to/your/script /etc/dhcp/dhclient-exit-hooks.d/name_of_your_script
(*)ただし、dhclient
は本質的に「終了」せず、何かを行うたびにこのディレクトリを実行および実行(「ソース」)し続けます 理由 。
したがって、スクリプトが何度も実行されることを禁止するには、次のようにIPアドレスがバインドまたは更新されている場合にのみ、スクリプトを「ifステートメント」でラップして実行することをお勧めします。
if ([ $reason = "BOUND" ] || [ $reason = "RENEW" ])
then
# your script commands here
fi