systemD를 사용한 Python 스크립트 자동화 - nmcli 명령 사용 문제(Network Manager)

systemD를 사용한 Python 스크립트 자동화 - nmcli 명령 사용 문제(Network Manager)

저는 임베디드 전자 엔지니어이고 두 달 동안 제 고객 중 한 명을 위해 데비안 기반 배포판을 사용하여 개발을 해왔습니다.

저는 실제로 운영 체제와 4G 모뎀 간의 통신과 연결을 처리하는 프로젝트를 진행하고 있습니다. 모뎀은 AT 명령으로 관리되며, 운영체제 연결은 주로 pingcurl명령으로 관리됩니다.

Python 스크립트는 지금까지 잘 작동하고 있으며 약 2주 동안 테스트되었습니다. 나는 그것에 만족하며 지금은 스크립트 자동화 단계에 있습니다.

부팅 시 스크립트를 시작하기 위해 systemd와 구식 방식(init.d)을 사용해 보았습니다. 둘 다 스크립트를 올바르게 실행하지만 명령 출력 pingcurl문제가 있습니다 .

AT 명령을 사용하여 모뎀을 초기화한 후 nmcli device connectNetworkManager 패키지의 명령을 스크립트하여 네트워크에서 사용하고 ping네트워크와 상호 작용할 수 있는 IP를 가져옵니다 curl.

systemd 서비스로 시작하거나 init.d를 사용하여 시작하면 명령 출력이 실패합니다. 호스트에 핑을 보낼 수 없고 결과가 컬링됩니다 000.

그럼에도 불구하고 Network Manager 상태를 볼 때 다음을 포함한 유효한 설정이 여전히 있습니다.

  1. IP 주소
  2. DNS 서버
  3. 기본 게이트웨이/라우터

그러나 스크립트 외부에서도 pingand curl명령을 사용하면 앞에서 설명한 것과 동일한 오류가 발생합니다.

해결 방법을 찾다가 네트워크 관리자가 서비스가 제대로 작동하도록 하기 위해 DBUS 세션을 사용하고 있다는 사실을 발견했는데, 부팅 시 실행되는 스크립트를 사용하여 이러한 패키지를 구현하는 것이 복잡해 보였습니다.

조금 막혔는데 추가 문제 해결을 위한 제안이 있는 사람이 있는지 궁금합니다.

디버깅을 위해 네트워크 관리자 로깅을 설정했지만 이에 대한 내용은 없습니다.

당신의 도움을 주셔서 대단히 감사합니다!

앙투안

관련 정보