Это может быть подход:
$ awk '/^ora/ {split($0,a,"."); next} {print a[2], a[2]$1, $2, $4}' a
abc abc1 ONLINE serverA
abc abc2 ONLINE serverB
xyz xyz1 ONLINE serverA
xyz xyz2 ONLINE serverB
xyz xyz2 ONLINE serverC
/^ora/
применяется для строк, начинающихся с ora
. В них разделите
содержимое на основе точки
и сохраняем его в массиве a
. Таким образом, получается a[1]=ora
, a[2]=abc
, ... Затем next
заставляет awk
перейти к следующей строке. print
печатает 2-е поле массива a
плюс различные элементы из строки: $1
, указывающий на первый, $4
, указывающий на 4-й. Поскольку вы используете Ansible, вам следует указать, что вы хотите, чтобы www-data
присутствовал пользователь, используя пользовательский модуль с state=present
и любыми другими соответствующими атрибутами (, например.system=yes
). Это создаст пользователя, если это необходимо, и не создаст, если он уже присутствует. Это общий принцип управления конфигурацией — описывайте ситуацию, в которой вы хотите, чтобы система находилась, а не шаги для ее достижения.
В Debian и, предположительно, в большинстве его производных, www-data
пользователь присутствует всегда , он не создается каким-то определенным пакетом для своих собственных целей (он «создается» base-passwd
, вместе со всеми остальными записями по умолчанию /etc/passwd
). Я не знаю навскидку -о других системах.
В дистрибутивах и производных версиях Red Hat установщик пакета обычно имеет команду «создать пользователя» внутри сценария предварительной -установки. Итак, на CentOS 7 через rpm -q --scripts httpd
мы можем увидеть
preinstall scriptlet (using /bin/sh):
# Add the "apache" group and user
/usr/sbin/groupadd -g 48 -r apache 2> /dev/null || :
/usr/sbin/useradd -c "Apache" -u 48 -g apache \
-s /sbin/nologin -r -d /usr/share/httpd apache 2> /dev/null || :
Это говорит нам о многом:
apache
apache