Ssh
檢查不同使用者登錄時內置音頻是否處於活動狀態
在我的工作中,我支持通過 SSH 和 VNC 執行 Linux Mint 的遠端員工。
每個員工都使用一個 USB 耳機,這是我們唯一希望啟動的聲音設備。我們需要禁用的聲音設備是“Built-in Audio”設備,如果我在員工的桌面上打開一個終端,我可以通過執行來查看該設備是否被禁用
pacmd list-sinks | grep "Built-in Audio"
。如果我使用員工的使用者名和密碼登錄,此命令也可以通過 SSH 工作,但如果我嘗試使用我們的管理員“IT”使用者名進行 SSH,它會給我錯誤“沒有 PulseAudio 守護程序正在執行,或者沒有作為會話守護程序執行。 ”幫助!為了安全起見,我沒有每個員工的本地密碼,但是當我通過我的 IT 使用者名進行 SSH 時,我似乎無法檢查內置音頻是否處於活動狀態,即使我使用
su
.我嘗試使用
su - [employee]
然後使用命令訪問本地顯示export DISPLAY=:0
,但這也不允許我檢查聲音設備。:(
我想到了!事實證明,該
aplay --list-devices
命令包含我需要的變數。執行該命令給了我目標電腦上的卡,以及下次關閉時的“Subdevices 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