web-dev-qa-db-ja.com

sudoを使用してターミナルで起動プログラムを実行する

ターミナルでpythonスクリプトを実行する必要がありますmyscript.py起動時に(Lubuntで)。このスクリプトにはルートが必要です。

次のコマンドを実行する.desktopファイルを設定しました。

lxterminal --command="python /home/d/Jarvis/alarm.py && /bin/bash"

ターミナルウィンドウは起動時に開き、スクリプトを実行しますが、Pythonスクリプトがエラーを返すと閉じます(rootとして実行されていないため)。 Exec=をこれに変更すると...

lxterminal --command="Sudo python /home/d/Jarvis/alarm.py && /bin/bash"

...(コマンドの前にSudoを付けて)動作します。 ただし、起動時にターミナルが開き、

[Sudo] password for d: \

プロンプト、パスワードの入力を要求します。 起動時にpythonスクリプトを実行すると、ユーザーの操作なしで完全に自動化されます。

どうすればこれを達成できますか?

8
Brandon

起動時ではなくログイン時に必要な場合(Xサーバーを起動せずにLXTerminalを開く方法はわかりません)、/ etc/sudoersファイルに例外を追加して、プロンプトが表示されないようにする必要があります。あなたのパスワード。

これを行うには、Sudo visudoを実行し、次を追加します。

<your username> ALL = NOPASSWD: /home/d/Jarvis/alarm.py

これが機能するように、ファイルの最後に必ず追加してください。また、alarm.pyの権限を実行可能に設定して、これが機能するようにします。したがって、これを実行可能として設定します。

chmod +x /home/d/Jarvis/alarm.py

それが役に立てば幸い!

5
kroq-gar78

起動時にルートとして実行されるカスタムスクリプトは、rc.localを介して実行できます。

ルート権限で/etc/rc.localを編集します。

Sudo nano /etc/rc.local

そして、線を入れます

python /home/d/Jarvis/alarm.py

最後の行の直前に、exit 0と書かれているはずです。再起動して、動作するかどうかを確認します。

9
phoibos