나는 팔로우했다이 가이드내 파이에 인터넷 연결이 전혀 없는 4G 모자를 얻었고 모든 것이 괜찮아 보입니다. pon
백그라운드에서 시작되고 경로가 추가되면 핑을 보낼 수 있습니다 .
내가 원하는 것은 파이를 작동시키고 pon
경로를 추가하는 것입니다.
현재 file 에서 이 작업을 수행하고 있지만 rc.local
매우 지저분한 접근 방식이라고 확신합니다.
sleep 20
sudo pon &
sleep 20
sudo route add -net "0.0.0.0" ppp0
exit 0
ppp0
궁극적으로 Python을 실행하기 전에 새로 정의된 경로에서 네트워크가 제대로 작동하는지 확인하고 싶습니다.
나는 본 적이이 비슷한 질문하지만 올바른 방법은 확실하지 않습니다. pre-up.d
인터페이스를 변경하여 수행할 수 있습니까?
어떤 도움이라도 대단히 감사하겠습니다.
답변1
시작 시 systemd를 통해 실행되는 스크립트를 만들 수 있습니다.
먼저 명령에 대한 스크립트를 만듭니다. 실행 권한이 있는지 확인하세요.
다음으로 다음 부분을 포함하고 다음 /etc/systemd/system
으로 끝나는 파일 이름을 사용하여 서비스 파일을 만듭니다 ..service
[Unit]
Description=Description of script/service
[Service]
ExecStart=/bin/bash [path to script]
[Install]
WantedBy=multi-user.target
그런 다음 systemctl 데몬을 다시로드하십시오.
systemctl daemon-reload
마지막으로 다음 파일 이름으로 systemctl 설치 스크립트를 사용합니다 servicename
.
systemctl enable --now [servicename]
관련된:
답변2
내 질문에 대답하려면 다음을 수행하십시오.
내가 한 일은 x2 시스템 서비스를 생성하고 라우팅 테이블을 변경하는 것이었습니다.
4gpon.service
백그라운드에서 pon을 시작하려면:
[Unit]
Description=4G hat networing
[Service]
Type=forking
ExecStart=/usr/bin/pon
ExecStop=/usr/bin/poff
Restart=always
[Install]
WantedBy=multi-user.target
- 기본적으로 ppp0을 활성화하도록 라우팅 테이블 업데이트
sudo ip route delete default
sudo ip route add default dev ppp0
sudo nano /etc/network/interfaces.d/ppp0
# add:
auto ppp0
iface ppp0 inet provider
up ip route add default dev ppp0
그럼 또 다른여기에 정의된 값으로이 파일에는 다음도 추가하세요.
sudo nano /etc/ppp/peers/provider
# add at bottom:
replacedefaultroute
garage-motion.service
첫 번째 서비스가 시작된 것을 확인한 후 Python을 호출하세요.
[Unit]
Description=Motion detector service
After=network.target network-online.target 4gpon.service
[Service]
Type=simple
Environment="AWS_DEFAULT_REGION=***your-region***"
Environment="AWS_ACCESS_KEY_ID=***your-key***"
Environment="AWS_SECRET_ACCESS_KEY=***your-secret-key***"
ExecStart=/bin/sh -c '/home/pi/projects/garage-motion/venv/python3 /home/pi/projects/garage-motion/venv/garage-motion.ph --serve-in-foreground'
Restart=on-abort
[Install]
WantedBy=multi-user.target