ログイン時にroot権限を必要とするBASHスクリプトの自動実行

ログイン時にroot権限を必要とする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

ログイン時に自動的に実行したいのですが、最善の方法がわかりません。openvpnroot権限が必要です。インターネット検索で最も可能性の高い2つの方法は、内部にスクリプトパスを入力することです/etc/rc.local。これは、ランレベルのおおよその理解として見ると、マルチユーザーランレベルを初期化するときにスクリプトが root として実行されるようにします。それ以外の場合は、ユーザーがパスワードなしで実行できるように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使用率が急増してシステムを強制的にリセットする必要がありました。なぜこれが起こるのかわかりませんが、この記事を読んでいる人には使用しないでください。

ベストアンサー1

おすすめ記事