私は職場でリモートスタッフがSSHとVNCを介してLinux Mintを実行できるようにします。
すべてのスタッフは、私たちがアクティブにしたい唯一のサウンドデバイスであるUSBヘッドセットを使用しています。無効にする必要があるサウンドデバイスは「内蔵オーディオ」デバイスです。従業員のデスクトップで端末を開くと、デバイスが無効になっていることを確認できますpacmd list-sinks | grep "Built-in Audio"
。
このコマンドは、従業員のユーザー名とパスワードでログインするとSSHを介しても機能しますが、管理者の「IT」ユーザー名でSSHを試行するとエラーが発生します。PulseAudioデーモンが実行されていないか、セッションデーモンとして実行されていません。「助けてください!セキュリティのために各従業員のローカルパスワードはありませんが、ITユーザー名を介してSSHを介して権限を使用してITをrootに昇格しても、内蔵オーディオが有効になっていることを確認できないようですsu
。
su - [employee]
コマンドを使用してローカルディスプレイにアクセスしようとしましたが、export DISPLAY=:0
サウンドデバイスも確認できませんでした。 :(
答え1
私はそれを考えた!そのaplay --list-devices
コマンドが私が必要とする変数を保存したことがわかりました。このコマンドを実行すると、ターゲットシステムのカードと次のハングの「サブデバイス1/1」文字列が表示されます。 「サブデバイス」文字列は、デバイスがオンの場合は0/1に変更され、デバイスがオフの場合は1/1に変更されます。
そこからgrep -A 1
カードの状態(この場合は「シミュレーション」と呼ばれる)を解析できるようにパイプし、出力をif / thenステートメントにラップして、内蔵オーディオがオンになっているかオフになっているかを確認します。
if aplay --list-devices|grep -A 1 Analog|grep Subdevices:\ 0/1;then echo Built-in IS ON;else echo off
答え2
短い答え: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(Linux用プラグイン可能認証モジュール)によって設定されます。sudo
またはを使用するとsu
PAMがスキップされたため、変数は設定されていません。
ステップ1:ユーザーになる
sudo su -l employee_login
このsu
コマンドは、ユーザーの有効なUID(ユーザーID)をあなたが助けたい従業員と同じに設定します。 PulseAudio はこれらの点については面倒で動作を拒否するため、これが必要です。
これは-l
必ずしも必要ではありませんが、時にはユーザーログインスクリプトを実行したときに発生する可能性のある問題をデバッグするのに役立ちます。
すでにroot権限を付与している場合は、sudo
これまでこれを行う必要はありません。su -l employee_login
ステップ2:XDG_RUNTIME_DIRを設定
export XDG_RUNTIME_DIR=/run/user/$(id -u)
環境XDG_RUNTIME_DIRこれは、ユーザーがログインしたときにPulseAudioデーモンが起動したソケットを作成し、pulse/native
それpulse/cli
を使用してクライアントと通信するために必要です。 [脚注1]
ステップ3:PulseAudioを使う
pacmd list-sinks | grep "Built-in Audio"
これpacmd
ツールを使用すると、実行中のPulseAudioデーモンをスキャン(または再設定)できます。 PulseAudioという用語を考えることができます。流し「スピーカー」を意味し、源泉「マイク」を意味します。
list-sinks
ここでは、利用可能なすべての出力デバイスを一覧表示するPulseAudioコマンドを実行します。grep
元の質問では、従業員のコンピュータがその機能を無効にして可能な受信機として使用できなかったため、私たちは「内蔵オーディオ」があることを確認しました。
参考pacmd
(そしてそのいとこpactl
)はこれよりも強力で、問題を診断するだけでなく、問題をリモートで解決するためにも使用できます。たとえば、音声出力は正確ですが、デフォルトで誤ったマイクが選択されている場合は、次のことができます。
pactl set-default-source alsa_input.usb-USB_Camera_USB_Camera_SN0001-02.analog-mono
ヒント:オプションを表示するのに2回、長いソース/シンク名を完成させるために1回使用できるように、bash-completionがインストールされている状態で使用するのが最善ですpacmd
。ただし、組み込みの特別なコマンドラインは使用されず、履歴や完了がないため、使用を避けてください。pactl
TABpacmd
libreadline
脚注1
技術的には、PulseAudioデーモンは常に以下を使用するわけではありません。XDG_RUNTIME_DIR。たとえば、この変数が設定されていない状態でデーモンが起動した場合は、/tmp と ~username/.config/pulse/ のシンボリックリンクを使用します。オーディオ機器-走る。同様に、PulseAudioは他のユーザーとソケットを共有するように設定できます。コンテナ間。