Извлечение значения json из оболочки bash с помощью awk без необходимости прибегать к awk и sed.

And again Dbus is running.

Нет, это явно не так. И это тоже был не последний раз.

В вашем списке процессов показан только системный -широкий посредник шины рабочего стола. Обратите внимание на --systemв аргументах команды и тот факт, что процесс запущен не так, как вы .

Когда вы запускаете systemctlс опцией --user, он общается с вашим -пользовательским экземпляром systemdчерез вашего -пользовательского брокера шины рабочего стола.

На самом деле ни один из них не работает.

Скорее всего, вы обнаружите, что запуск экземпляра systemdдля каждого пользователя -также запускает Desktop Broker для каждого пользователя -. Первый управляет вторым, и устройство dbus.socket(из /usr/lib/systemd/user/dbus.socket), вероятно, уже включено для вашего диспетчера служб -для каждого пользователя. (Обратите внимание, что должен быть включен блок сокета , а не сервисный блок .)

Таким образом, на самом деле это тот же ответ, что и раньше, хотя он не был явным в последних вопросах и ответах. :Убедитесь, что ваш -пользовательский экземпляр systemdзапущен, и убедитесь, что он запускается ваш брокер Desktop Bus на -пользователей. Вы можете запустить шаги, которые pam_systemdвыполняются вручную, чтобы убедиться, что они работают сами по себе. Затем убедитесь, что pam_systemdдействительно вызывается как часть вашей процедуры входа в систему.

И имейте в виду, чтоsuне является механизмом входа в систему . Он работает в рамках существующего интерактивного сеанса входа в систему. Если вы не входите в систему как рассматриваемая учетная запись, перехватчики systemd не будут активировать экземпляр systemd для каждого -пользователя для этой учетной записи.

Дополнительная литература

2
22.01.2020, 19:05
2 ответа

Для одного -вкладыша вы можете сначала удалить все запятые и кавычки.

awk '/Value/ { gsub(/[",]/,""); print $2}'

Лучший перевод вашего awk | sed конвейер будет

awk '/Value/ { gsub(/[",]/,"",$2); print $2}'

, чтобы просто изменить значения во втором поле.

3
27.01.2020, 22:02

Использование jqдля разбора значения клавиши Valueв структуре верхнего -уровня Parameter:

aws ssm get-parameter --name /mysite/dev/email | jq -r '.Parameter.Value'

Это дополнительно декодирует любую кодировку JSON значения, так что значение, которое хранится в JSON как \"The Admin\" <admin@example.com>, возвращается как "The Admin" <admin@example.com>.

0
27.01.2020, 22:02

Теги

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