Lets sagen, ich habe einen Dienst (wie Rsyslog), dass, wenn ich es zu stoppen, ich die Gründe hinter jemandem schließen will es herunterfahren. Exprimierenden dies einfach sein würdeBenutzereingabe während eines System-Calls/Service-Aufrufs für CentOS?
systemctl start rsyslog
systemctl stop rsyslog
(Beginnen Sie mit der Aufforderung, warum ein Benutzer diese nach rsyslog Herunterfahren tut)
#!/bin/bash
echo "you are shutting down the syslog service. Please state your name and reason."
read -p "[name?]" name && read -p "[reason?]" reason
logger $name:$reason
Modifying the Unit Files (in/usr/lib/systemd/system/rsyslog .service), um ein ExecStop des Pfades zum Skript einzuschließen, kann ich das obige Skript ausführen. Ich weiß, dass das Skript funktioniert, als die Überprüfung der Protokollmeldungen zeigt eine :
, den nicht variablen Teil, der an den Logger übergeben wurde.
Ich muss in der Lage sein, dieses Skript wie das Shell-Skript der Instant jemand zu versuchen, den Logging-Dienst herunterfahren zu betreiben. Dies bedeutet, dass Echo-Befehle auf dem Terminal angezeigt werden und Variablen mit dem Lesebefehl aufgezeichnet werden können.
This may be similar to this persons question, but I can not understand it.
Ich stimme diese Frage als off-topic zu schließen, da es nicht direkt auf die Programmierung bezieht. Es gehört auf die Unix- und Linux-StackExchange-Site, wo es ein Betrüger von http://unix.stackexchange.com/questions/77769/prompt-for-password-during-boot-with-systemd-service ist Die Frage geht wirklich 'systemd', nicht so sehr das Betriebssystem, und sowohl Arch als auch CentOS benutzen systemd. –
@MarkStosberg: Verzeih mir. Ich bin auf der Suche nach einer Möglichkeit, eine ausführbare Datei interaktiv zu machen, wenn Sie Systemd verwenden. Die Dokumentation besagt, dass Sie dies nicht tun sollten ([Abschnitt 8.6.2, Schritt 1] (https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html).) und ich suche nach Möglichkeiten, das zu umgehen. – Jouster500
Zunächst können Sie den Root-Zugriff für Benutzer deaktivieren, denen Sie nicht vertrauen (ändern Sie das Passwort und geben Sie es nicht aus). Erlaube stattdessen sudo für eine begrenzte Anzahl von Aktionen, die Administratoren ausführen dürfen, die syslog stoppen können oder auch nicht. sudo protokolliert die von ihm ausgeführten Befehle. Zweitens könnten Sie überwachen, ob rsyslog läuft. Wenn nicht, benachrichtigen Sie sofort jemanden. Sie können dann die Sudo-Protokolle überprüfen. 'systemd' (und andere Init-Systeme) sind nicht für die interaktive Verwendung beim Stoppen/Starten vorgesehen, und ich empfehle diese auch nicht. –