Сценарий для уведомления состояния системных служб относительно входа в систему

Я хотел бы получить сценарий (удар или Python) выполнение, которое печатает в простом формате состояние всех системных служб, когда пользователь входит в систему.

service --status-all

Вышеупомянутая команда производит их всех в списке как так

[+] servicename
[?] servicename
[-] servicename

Когда пользователь входит в систему, сценарий должен предоставить человекочитаемое сообщение о сервисах, которые работают.

Я понимаю, что могут быть утилиты, чтобы сделать это, но я хочу узнать еще немного о сценариях и как должен, вещь может быть сделана.

Любая справка очень ценится.

0
задан 26 January 2017 в 04:55

1 ответ

Если Вы хотите вывод как:

The following services are running: ntp, rsync, ssh, 

можно использовать awk для преобразования вывода service --status-all:

$ service --status-all | awk '/+/{printf "%s", sep " " $NF; sep=","}'
 acpid, alsa-utils, apache-htcacheclean, apache2, apparmor, apport, atd, avahi-daemon, cron, cups-browsed, dbus, grub-common, irqbalance, keyboard-setup, kmod, lightdm, network-manager, networking, ondemand, procps, rc.local, resolvconf, rsyslog, speech-dispatcher, ssh, udev, ufw, urandom, whoopsie

, Таким образом, Ваш сценарий был бы похож:

#! /bin/sh
printf "The following services are running: " 
service --status-all | awk '/+/{printf "%s", sep " " $NF; sep=","}'
echo

Эти awk команда проста:

  • /+/ строки соответствий с + в нем. Обычно, + означал бы один или несколько из предыдущего выражения. Но, отдельно, + средства всего +. Awk выполняет следующий {...} блок, если этот шаблон соответствует.
  • printf "%s" sep " " $NF печать содержание переменной sep, сопровождаемый пространством и сопровождаемый последним полем строки (NF количество полей, и $x, является содержанием поля нет. x).
  • sep пусто сначала, таким образом, первый сервис, который будет распечатан, имеет просто пространство перед ним. Теперь я установил sep=",", таким образом, следующая строка вперед, мы имеем ,.
  • Это не печатает новую строку, таким образом, я использую простое echo в конце для печати того.

Теперь использование что-то вроде этого: Запущенный скрипт на оболочке входят в систему для всех пользователей для запущения скрипта на входе в систему.

2
ответ дан 7 November 2019 в 02:39

Другие вопросы по тегам:

Похожие вопросы: