Я хотел бы получить сценарий (удар или Python) выполнение, которое печатает в простом формате состояние всех системных служб, когда пользователь входит в систему.
service --status-all
Вышеупомянутая команда производит их всех в списке как так
[+] servicename
[?] servicename
[-] servicename
Когда пользователь входит в систему, сценарий должен предоставить человекочитаемое сообщение о сервисах, которые работают.
Я понимаю, что могут быть утилиты, чтобы сделать это, но я хочу узнать еще немного о сценариях и как должен, вещь может быть сделана.
Любая справка очень ценится.
Если Вы хотите вывод как:
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
в конце для печати того. Теперь использование что-то вроде этого: Запущенный скрипт на оболочке входят в систему для всех пользователей для запущения скрипта на входе в систему.