リモートデバイス管理ツールを開発中です。このツールは2つの部分で構成されています。
- サーバー:ダッシュボード管理者、接続されたデバイスを表示および管理するためのGUI
- クライアント:プロキシとしてサーバーからジョブをインポートして実行します。
管理者がデバイスのネットワーク設定を変更したい場合は、そのデバイスをタスクターゲットとして指定し、新しい設定がタスクのパラメータになります。たとえば、
{
target: DEVICE_ID,
action: 'CONFIGURE_NETWORK',
params: {
ip_addr: '192.168.1.77',
default_gateway: '192.168.1.1',
primary_dns: '8.8.8.8',
...
}
}
ターゲットデバイスがこれを取得すると、クライアント代理店は新しい設定値をオペレーティングシステムに適用しようとします。
以前はRaspberry PIデバイスのみをサポートしていたため、DHCPCDを使用して作業を解決しました。さらに進化した機能は、ネットワーク設定が失敗した場合に回復する機能です。
今、私たちはUbuntu 16.04以降に基づいたデバイスを介してより多様なデバイスをサポートすると予想しており、おそらくすべてのデスクトップ環境を実行できます。そして問題の原因。 Ubuntuファミリには、ネットワークを管理する方法とツールがたくさんあります。一部のディストリビューションはnetplanを使用し、他のディストリビューションにはNetworkManager、wicd、DHCPCD5などが付属しています。
上記のタスクを実行する最良の方法は何ですか?すべてのバリエーションに適した方法は何ですか?いくつかの提案をすることができますか?
答え1
私が考えることができる最も一般的なアプローチは、これらすべての管理ツールを無効化/削除し、基本的なコマンドラインツール/ OSメカニズムを使用してネットワーク構成を実行することです。
ifup
そしてifdown
サポートされているすべてのプラットフォーム(ifupdown
Ubuntuのパッケージ)で利用可能な場合/etc/network/interfaces
。ifconfig
(net-tools
)と指定された値でそれを呼び出すカスタムスクリプトは最も基本的なアプローチであるべきですが(推奨されていない独自のツールを実装することを除く)、マイナーな設定に適したものにするには少し努力が必要です。
現在の設定を取得するには(推奨されていません)の出力を解析またはifconfig <interface>
解析できます。ip
iproute2
より便利で決定的でなければならないコマンドです。