Script mit menue in dem ich services beenden/starten kann

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Kohle
Beiträge: 2
Registriert: 20.11.2020 08:33:05

Script mit menue in dem ich services beenden/starten kann

Beitrag von Kohle » 20.11.2020 08:49:27

Hallo,
ich versuche grade mir ein script zu bauen mit dem ich nach dem start eine menü habe im dem ich auswählen kann was ich den gerne machen möchte. Ich have da ja auch schon was geschrieben.

Code: Alles auswählen

#!/bin/bash
PS3='Please enter your choice: '
options=("Status VZLOGGER" "Stop VZLOGGER" "Start VZLOGGER" "Quit")
select opt in "${options[@]}"
do
    case $opt in
        "Status VZLOGGER")
            systemctl status vzlogger
            echo "you chose choice 1"
            ;;
        "Stop VZLOGGER")
            systemctl stop vzlogger
 #           printenv
            echo "you chose choice 2"
            ;;
        "Start VZLOGGER")
            systemctl start vzlogger
            echo "you chose choice $REPLY which is $opt"
            ;;
        "Quit")
            break
            ;;
        *) echo "invalid option $REPLY";;
    esac
done
Wie ihr sehen könnte würde ich gerne den Dienst vzlogger stoppen, starten oder den status abfragen.
Den status abfragen geht und auch das Menü wieder verlassen.
Bin leider nicht tief in linux drin aber ich denke das problem ist das ich dieses stoppen oder starten dieses services eben nur als sudo ausführen kann. Wenn ich aber in dem script sudo systemctl stop vzlogger schreibe bleibt das script einfach stehen oder besser gesagt das Menü zur Auswahl taucht nicht mehr auf.

Wie kann ich so etwas lösen (möchte das Menü dann erweitern auch für andere dienste/services)?

Die OS version:
cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
und der status des services:
sudo systemctl status vzlogger
? vzlogger.service - vzlogger
Loaded: loaded (/etc/systemd/system/vzlogger.service; enabled; vendor preset:
Active: active (running) since Fri 2020-11-20 07:08:17 CET; 1h 39min ago
Main PID: 25913 (vzlogger)
Memory: 10.1M
CGroup: /system.slice/vzlogger.service
+-25913 /usr/local/bin/vzlogger -c /etc/vzlogger.conf

Nov 20 07:08:17 volkszaehler systemd[1]: Started vzlogger.
Geht sowas überhaupt?

Gruß
Christian

willy4711

Re: Script mit menue in dem ich services beenden/starten kann

Beitrag von willy4711 » 20.11.2020 09:52:29

Wird bei dir nicht das Root- PW abgefragt, wenn du das ohne sudo ausführst ?
Die Berechtigungen werden durch das Polkit in der
/usr/share/polkit-1/actions/org.freedesktop.systemd1.policy
geregelt.
Da könnte man zwar die Berechtigungen "verbiegen", würde ich aber davon abraten.
Zuletzt geändert von willy4711 am 20.11.2020 09:58:59, insgesamt 1-mal geändert.

Kohle
Beiträge: 2
Registriert: 20.11.2020 08:33:05

Re: Script mit menue in dem ich services beenden/starten kann

Beitrag von Kohle » 20.11.2020 09:58:59

Hi,
ja es wird ein password abgefragt wenn ich es ohne sudo ausführe und deswegen wollte ich ja sudo im script benutzen.

Gruß
Christian

willy4711

Re: Script mit menue in dem ich services beenden/starten kann

Beitrag von willy4711 » 20.11.2020 10:01:58

Ich habe kein Sudo.
Ich halte es aber für sinnvoll, wenn man einen Systemdienst killt, das man vorher zu "Nachdenken" gezwungen wird.

willy4711

Re: Script mit menue in dem ich services beenden/starten kann

Beitrag von willy4711 » 20.11.2020 10:30:27

Wenn du es unbedingt willst: :roll:
in der oben genannten Policy ist folgender Abschnitt:

Code: Alles auswählen

<action id="org.freedesktop.systemd1.manage-unit-files">
                <description gettext-domain="systemd">Manage system service or unit files</description>
                <message gettext-domain="systemd">Authentication is required to manage system service or unit files.</message>
                <defaults>
                        <allow_any>auth_admin</allow_any>
                        <allow_inactive>auth_admin</allow_inactive>
                        <allow_active>auth_admin_keep</allow_active>
                </defaults>
                <annotate key="org.freedesktop.policykit.imply">org.freedesktop.systemd1.reload-daemon org.freedesktop.systemd1.manage-unit>
        </action>
Eine Anleitung und ein Einstieg in das Polkit gibt es hier:
https://www.freedesktop.org/software/po ... kit.8.html

Antworten