SSHツールでLinuxコマンドを実行することと、私のプログラムにコマンドを追加することの違いは何ですか?

SSHツールでLinuxコマンドを実行することと、私のプログラムにコマンドを追加することの違いは何ですか?

NetworkManager-connectionsで2つの接続を作成し、Orangepi ZeroのNICに静的IPとDHCPを設定しました。インストールされたシステムはarmbian Ubuntuです。

私のプログラムでは、このpopen関数を使用してさまざまな状況でさまざまな接続を確立します。コードは次のとおりです。 eth0はdhcp接続名、eth0:1は静的接続名です。

def configure():
     if platform.system()== 'Linux':
          os.popen('nmcli con up eth0:1')
          fd = os.system(u'ping 192.168.10.8 -c 4')
          if fd ==0:
              app.run(host='0.0.0.0',port=80)
     else:
         os.popen('nmcli con down eth0:1')
         os.popen('nmcli con up eth0')
     # [...]

このアプローチを使用すると、2つの接続がそれぞれの場合に機能できますが、プログラムは停止します。以下は主な機能です。 wifi_connection、p.connect、およびu.connectが正常に実装されました。ただし、最後のコードl.stop()が正しく実行された後、プログラムは自動的に強制的に閉じられます。

    if __name__ == '__main__':
        l = LED()
        t = threading.Thread(target=configure)
        t.start()
        count = 1
        if os.path.isfile('settings.txt'):
           with open('settings.txt', 'r') as f:
           settings = eval(f.read())
           while True:
                 if settings['ssid'] is None or settings['psw'] is None:
                      break
                 else:
                      ret = wifi_connect(settings['ssid'], settings['psw'])
                      count += 1
                      if ret:
                           os.system('sh ./route.sh')
                           break
                      elif count == 3:
                           break
           l.t = 1
           while True:
                ret = p.connect(115200)
                if ret:
                     break
                ret = p.connect(250000)
                if ret:
                     break
           time.sleep(5)
           l.t = 0.1
           while True:
                 ret = u.connect(settings['ip'], settings['eid'], settings['pw'])
                 if ret:
                      break
           time.sleep(5)
           l.stop()

ところで、プログラムに上記のコードなしでSSHツールを介して手動でnmcliコマンドを実行すると、プログラムは停止せずに問題なく正常に動作します。なぜかは本当に分からない。誰でも理由を教えてもらえますか?

私たちのプロジェクトでは、プログラムのネットワーク構成を自動的に設定する必要があります。これを行う方法を知っている人はいますか?

ベストアンサー1

おすすめ記事