インターネットに初めて接続する前にプログラムが起動すると、ホスト名を解決できません。

インターネットに初めて接続する前にプログラムが起動すると、ホスト名を解決できません。

これは以下に関連しています。私のスタックオーバーフロー投稿

デフォルトでは、組み込みシステム(Buildrootベース)で実行されるPythonスクリプトがあります。 Pythonスクリプトは起動時に実行されますが、デバイスがセル信号のある領域にない可能性があるため、それまでインターネット接続が確立されることを保証することはできません(pppdベース)。

コンピュータへのインターネット接続が確立される前にPythonコードが起動された場合、接続が確立された後でもPythonコードはまだ名前を解決できないことがわかりました。[Errno -3] Temporary failure in name resolutionソケットが接続しようとしてエラーが発生しました。私が動作させる唯一の方法は、Pythonコードを開始する前に少なくとも1回はインターネット接続を確立することです。

インターネット接続が確立された後にPythonコードが複数回システムを検索すると、システムに何が起こりますか?このようなことが起こらないように始めるときに設定できるものはありますか?

ベストアンサー1

IPが起動した後、pppdが提供するスクリプトフックを使用してスクリプトを呼び出すことができます。例えば(pppdのマンページから)

/etc/ppp/ip-up
A program or script which is executed when the link is available for 
sending and receiving IP packets (that is, IPCP has come up). It is 
executed with the parameters 

interface-name tty-device speed local-IP-address remote-IP-address ipparam

そこからPythonスクリプトを実行すると問題はありません。

おすすめ記事