USB NIC가 있는 헤드리스 Debian 11 서버의 네트워크 초기화 문제

USB NIC가 있는 헤드리스 Debian 11 서버의 네트워크 초기화 문제

편집하다

내가 하는 일은 다음과 같습니다(나의 밑바닥까지 물지 않기를 바랍니다):

  1. restart_network.sh내 디렉토리에 하나를 만들었습니다 /root. 내부에:
#!/bin/bash

while ! (grep -q "ttl" <<< "$(ping -c2 192.168.1.150)")
do
 ifup enx207bd2248c85
done
  1. 내장 /etc/systemd/system/fixlan.service:
[Unit]

Description=Fix network incase the USB-NIC does not start.
#because I want it to first try to activate the USB-NIC alone
After=networking.service
#If didn't succeed, at least wait for network before starting all
#Nextcloud services (because it's the designation of the server)
Before=snap.nextcloud.mdns-publisher.service snap.nextcloud.redis-server.service snap.nextcloud.mysql.service snap.nextcloud.renew-certs.service snap.nextcloud.apache.service snap.nextcloud.logrotate.service snap.nextcloud.nextcloud-fixer.service snap.nextcloud.php-fpm.service

[Service]

ExecStart=/root/restart_network.sh

나는 체계화된 서비스를 만들어본 적이 없고, 내가 제대로 하고 있는지도 모르겠습니다.

편집하다

헤드리스 Debian 11 서버가 있습니다. 네트워크 카드가 고장 나서 USB 네트워크 카드를 설치했습니다. 가끔(5번째 부팅마다) 네트워크 카드가 부팅되지 않는 경우가 있습니다. 로그인하고

ifup enx207bd2248c85

네트워크 카드가 IP 주소를 얻은 다음 모든 관련 서비스를 다시 시작할 수 있습니다.

따라서 아이디어는 다음과 같이 수행하는 것입니다.

if (grep -q "ttl" <<< "$(ping -q -c2 192.168.1.151)"); then
 reboot now;
fi

시작 스크립트로서 무엇을 해야 할지 잘 모르겠습니다(시작 스크립트 추가). 이제 이것이 작동할 수도 있지만 시스템이 재부팅 루프에 빠질 가능성이 높습니다. 그렇다면 더 좋은 방법이 있다고 생각하시나요? 아마 그냥

if (grep -q "ttl" <<< "$(ping -q -c2 192.168.1.151)"); then
# restart all services
fi

그래서 나는 무엇을 해야할지 모르겠습니다 ...

도와주세요.

답변1

그래서 나는 run 을 사용 crontab하고 추가했습니다 . 언급한 대로 스크립트는 다음과 같습니다.@reboot/root/restart_network.sh

#!/bin/bash

while ! (grep -q "ttl" <<< "$(ping -c2 192.168.1.150)")
do
 ifup enx207bd2248c85
 systemctl restart snap.nextcloud.* #added just in case...
done

관련 정보