Проверить, активен ли встроенный звук при входе другого пользователя.

В дополнение к ответу Жиля вот автономная оболочка. Это смесь двух его решений. Он имеет преимущества сценария полиглота, упомянутого Жилем (один сценарий для поддержки и развертывания), но не имеет недостатков (цитируя Жиля: «Написание полиглотов не всегда легко или даже возможно»).

Он заключается в добавлении всего нескольких строк в начало вашего скрипта:

#!/bin/bash
exec mocha --reporter=tap --output=foo <(sed -n '/^#MOCHA_START#/,$ p' "$0")
#MOCHA_START#
....
....
(mocha script)
....
....

То, что следует за строкой #MOCHA_START# — это ваш настоящий мокко-скрипт, оставленный нетронутым. Что делают три первые строки, так это извлекают ваш сценарий mocha и вызывают вместе с ним mocha вместе с желаемыми аргументами.

Однако вам, возможно, придется заставить текстовый редактор интерпретировать файл как сценарий Mocha и соответствующим образом раскрасить его, поскольку он, вероятно, будет сбит с толку первой строкой вашего сценария, которая указывает, что это сценарий Bash:

enter image description here

1
19.11.2015, 22:10
1 ответ

Краткий ответ :установить XDG _RUNTIME _DIR

sudo su -l employee_login
export XDG_RUNTIME_DIR=/run/user/$(id -u)
pacmd list-sinks | grep "Built-in Audio" 

Пояснение

Хитрость заключается в том, что PulseAudio ищет в ${ XDG _RUNTIME _DIR } сокеты, необходимые для связи с демоном. Однако XDG _RUNTIME _DIR устанавливается PAM (Pluggable Authentication Modules for Linux )при входе пользователя в систему. При использовании sudoили suвы пропустили PAM, поэтому эта переменная не установлена.

Шаг 1 :Стать пользователем

sudo su -l employee_login

Команда suустанавливает для вашего эффективного UID (идентификатор пользователя )такой же, как у сотрудника, которому вы пытаетесь помочь. Это необходимо, потому что PulseAudio придирчив к таким вещам и откажется работать.

-lне является строго обязательным, но иногда помогает при отладке возможных проблем, поскольку запускает сценарии входа пользователя.

sudoне нужен перед su -l employee_login, если вы уже повысили свои привилегии до root.

Шаг 2 :Установить XDG _ВРЕМЯ РАБОТЫ _НАПРАВЛ.

export XDG_RUNTIME_DIR=/run/user/$(id -u)

Параметр XDG _RUNTIME _DIR необходим, поскольку PulseAudio всегда ищет в этом каталоге

Технически XDG _RUNTIME _DIR не может быть ниже /run/user, но я никогда не видел, чтобы это было не так. [Если это когда-нибудь случится в реальной жизни, я обновлю этот ответ.]

Шаг 3 :Используйте PulseAudio

pacmd list-sinks | grep "Built-in Audio"

Инструментpacmdпозволяет провести самоанализ (или перенастроить )запущенный демон PulseAudio. Можно представить термин PulseAudio приемник как означающий «динамики», а источник как означающий «микрофон».

Здесь мы запускаем команду list-sinksPulseAudio, которая выводит список всех доступных устройств вывода. Мы используем grepдля проверки наличия «Встроенного -аудио», потому чтов исходном вопросе машины сотрудников должны были быть отключены и, следовательно, недоступны в качестве возможного приемника.

Обратите внимание, чтоpacmd(и его двоюродный братpactl)намного мощнее этого и могут использоваться не только для диагностики, но и для удаленного устранения проблем. Например, если аудиовыход правильный, но по умолчанию выбран неправильный микрофон, можно сделать что-то вроде:

pactl set-default-source alsa_input.usb-USB_Camera_USB_Camera_SN0001-02.analog-mono 

Советы:pacmdи pactlлучше всего использовать с установленным завершением bash -, поэтому можно использовать TAB дважды, чтобы просмотреть параметры, и один раз, чтобы завершить длинные имена источников/приемников. Однако избегайте специфической командной строки -, встроенной в pacmd, поскольку она не использует libreadlineи не имеет истории или завершения.

1
13.11.2021, 21:41

Теги

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