로그인 시 루트 권한이 필요한 BASH 스크립트 자동 실행

로그인 시 루트 권한이 필요한 BASH 스크립트 자동 실행

Debian 11(Bullseye)을 실행하면서 가정용 PC에 로그인할 때 자동으로 실행하고 싶은 짧은 BASH 스크립트가 있습니다. 그 목적은 전화기가 연결되어 있고 네트워크 인터페이스로 활성화되어 있는 동안 데몬으로 실행되는 openvpn을 시작하는 것입니다.

#!/bin/bash

until [[ -e "/sys/class/net/tun0" ]]; do
        if ethtool usb0 | grep -q "Link detected: yes"; then
        openvpn --log <myfile.log> --daemon --config <myfile.conf>; else
        sleep 15
        fi
done

로그인 시 자동으로 실행하고 싶지만 최선의 방법을 모르겠습니다. openvpn루트 권한이 필요합니다. 인터넷 검색에서 가장 가능성이 높은 두 가지 방법은 내부에 스크립트 경로를 입력하는 것입니다 /etc/rc.local. 이는 런레벨에 대한 대략적인 이해로 볼 때 다중 사용자 런레벨을 초기화할 때 스크립트가 루트로 실행되도록 합니다. 그렇지 않으면 사용자가 비밀번호 없이 실행할 수 있도록 sudoers 파일을 편집한 openvpn다음 이를 DE 실행 프로그램 목록에 추가할 수 있을까요? 아니면 내 항목에 포함시키나요 bash.rc?

대본에 대한 조언이나 비판을 주시면 정말 감사하겠습니다!

편집: @Gilles 'SO-stopbeingevil'이 지적했듯이 로그인 시 스크립트를 계속 실행하는 것은 최적이 아닙니다. 보다 목표화된 접근 방식은 네트워크 인터페이스가 시작된 직후에 스크립트를 실행하는 것입니다. 저는 ifup을 사용하고 있기 때문에 ifup 매뉴얼 페이지에 따르면 usb0 인터페이스 구성 정의 바로 뒤에 "post-up"으로 시작하는 줄을 추가했으며 그 뒤에는 인터페이스가 도입된 후 즉시 실행될 명령에 대한 매개변수가 이어졌습니다. 위로. 이와 같이...

`This file describes the network interfaces available on your system
and how to activate them. For more information, see interfaces(5).

allow-hotplug usb0
iface usb0 inet dhcp
post-up bash /home/user/sh/vpnlauncher.sh`

위의 스크립트는 이 방법을 사용할 때 불필요한 검증을 너무 많이 수행할 수 있지만 그대로 두겠습니다.

편집 2: 불행하게도 위의 솔루션이 어제는 제대로 작동하는 것처럼 보였지만 오늘 아침에는 시스템에서 수천 개의 openvpn 프로세스가 생성되었고 CPU 사용량이 급증하여 시스템을 강제로 재설정해야 했습니다. 왜 이런 일이 발생하는지 모르겠지만 이 글을 읽는 사람에게는 사용하지 말라고 조언하고 싶습니다.

관련 정보