在我的工作中,我支持通过SSH和VNC运行Linux的远程员工。
每个员工都使用USB耳机,这是我们想要激活的唯一声音设备。我们需要禁用的声音设备是“内置音频”设备,如果我打开员工桌面上的终端,我可以通过运行pacmd list-sinks | grep "Built-in Audio"检查设备是否禁用。
如果我使用员工的用户名和密码登录,此命令也可以在SSH上工作,但如果我尝试使用管理" it“用户名登录SSH,它会给出错误”not PulseAudio守护进程正在运行,或者没有作为会话守护进程运行“。帮助!为了安全起见,我没有每个员工的本地密码,但我似乎无法检查内置音频通过我的IT用户名SSH时是否是活动的,即使我使用su将IT提升到根权限时也是如此。
我尝试使用su - [employee],然后使用命令export DISPLAY=:0访问本地显示,但这也不允许我检查声音设备。:(
发布于 2015-11-20 00:07:46
我想出来了!结果是,aplay --list-devices命令保存了我需要的变量。运行该命令将给我目标计算机上的卡片,以及下一次运行时的"Subdevices 1/1“字符串。如果设备打开,“子设备”字符串将更改为0/1,如果关闭,则更改为1/1。
从那里开始,我只需通过管道grep -A 1,就可以解析出卡的状态(在本例中称为“模拟”),然后将输出封装在if/if语句中,以确定内置音频是打开还是关闭。
if aplay --list-devices|grep -A 1 Analog|grep Subdevices:\ 0/1;then echo Built-in IS ON;else echo off
https://unix.stackexchange.com/questions/244202
复制相似问题