远程使计算机在内置扬声器上发出哔哔声


28

如何远程(SSH)使我的Linux Computer Beep(内置扬声器,因为没有外部扬声器)?我有ubuntu 9.04,可以根据需要安装其他软件包。如果您不止一个站着,却忘记了哪个IP是哪个盒子,那么这对于找到某个盒子会很有帮助。


11
我希望您的问题不是真正的卡通作品:xkcd.com/530
Telemachus


1
@CiroSantilli新疆改造中心六四事件法轮功这个问题比任何一个问题都古老。
wsd

@wsd我并没有暗示重复,目前的共识是以“质量”结束:meta.stackexchange.com/questions/147643/…由于“质量”是不可衡量的,所以我只是赞成。;-)可能归结为哪个问题在标题上击中了最佳的新手Google关键字。
Ciro Santilli新疆改造中心法轮功六四事件

@CiroSantilli新疆改造中心六四事件法轮功感谢您的澄清:)
wsd 18'Oct

Answers:


23

尝试:

sudo sh -c "echo -e '\a' > /dev/console"

您可能必须首先为内置扬声器加载内核模块(例如,如果该模块已从自动加载中列入黑名单):

sudo modprobe pcspkr

这有效,而beep命令却没有。我只是将其设置为在同事计算机上运行。因为我在seq 1 10000; 做echo -e'\ a'> / dev / console; 睡1; 完成
Nick Stinemates 09年

没有发出声音。
Nick Stinemates 09年

这在CentOS / RHEL上效果很好,我找不到任何提示音包。
质粒87 2012年

@NickStinemates确保主板上有PC扬声器
dykeag 2013年

这是最简单的解决方案!另外,很抱歉只接受延期9年。
wsd


6

在我的Ubuntu机器上的哔声手册页中:

IOCTL公告

一些用户会遇到因ioctl()的抱怨而发出哔哔声的情况。彼得·蒂尔塞克(Peter Tirsek)很高兴向我指出这一点,其原因是内核如何处理蜂鸣声的尝试(对于非程序员:ioctl是一种包罗万象的功能,可以让您对那些没有其他预定义的戳入机制)tty,这是它发出哔哔声的方式。 简而言之,内核检查以下任一情况:

  • 你是超级用户

  • 您拥有当前的tty

这意味着root可以使beep正常工作(据我所知!),并且任何本地用户都可以使beep正常工作,但非root远程用户不能在其自然状态下使用beep。

这很可能就是蜂鸣声拒绝远程工作的原因。您可以通过使用-t选项调用ssh来检查这是否是根本原因,这将强制伪tty分配。

一个不太理想的解决方案是创建一个执行哔声的包装器脚本,并授予该脚本root权限。如果通过ssh正确执行此脚本会发出哔哔声,您将知道问题出在缺少控制终端。


3

只需输入

ssh user@remote-machine
beep

在Ubuntu Desktop 8.x上进行了测试,即使该服务器上没有本地会话处于活动状态,它也会在远程服务器上发出蜂鸣声(因此:即使GNOME登录屏幕显示在服务器的监视器上)。

看一下

man beep

更多细节。在Debian / Ubuntu上,必须安装蜂鸣包,并且不得使扬声器静音。


我不知道你为什么写“扬声器一定不能静音”。我的Ubuntu 桌面盒没有安装声卡驱动程序,确实都beepecho选项都使用我的内置扬声器。尽管man beep明确指出“以任何方式使PC扬声器发出声音”,但我尚未验证如果安装了声音驱动程序会发生什么情况。
Arjan

至少在我的电脑上,我可以使用gnome-volume-control静音扬声器。而且由于我无法忍受蜂鸣声,所以我通常会这样做。

那么,您beep是否不使用系统上的内置扬声器?还是音量控制(在我的Ubuntu盒子上被禁用)还控制内置扬声器?看看echo解决方案的行为是否不同可能会很有趣。
Arjan

gnome-volume-control可用于分别控制内置扬声器。残疾人是什么意思?从命令行运行gnome-volume-control时会发生什么?

抱歉,刚刚删除了10.8的安装。如以下所示禁用:未安装声音驱动程序,因此在GNOME菜单中的声音图标顶部有一个停止标志。
Arjan

3

您可以使用:

ssh user @ remote-machine
sudo sh -c“ echo -e'\ a'> / dev / tty1”


请注意,以下操作无效。它甚至在提示输入sudo密码之前都失败,因为(bash)shell正在执行重定向,并且该shell仍以普通用户身份运行,而不是root

ssh user @ remote-machine
sudo echo -e'\ a'> / dev / tty1
-bash:/ dev / tty1:权限被拒绝
ls -la / dev / tty1
crw ------- 1根root 4,1 2009-09-28 16:33 / dev / tty1

3

这个命令可以解决问题:

modprobe pcspkr; echo -e "\a" > /dev/console;

0

对远程计算机运行远程命令:

rsh主机名/ usr / bin / echo'\ a'

ssh user @ remotehost / usr / bin / echo'\ a'


不需要像Thomas所建议的那样重定向到某个远程终端,以使远程服务器发出蜂鸣声,而不是本地SSH客户端吗?
Arjan

一个也可以做:echo“ \ a”>'tty'。
harrymc

echo -e "\a" > /dev/tty肯定会在SSH客户端上发出蜂鸣声,而不是在服务器上的内置扬声器:-)上发出蜂鸣声tty0tty1并且console似乎可以正常工作,如其他答案所示。
Arjan

0

或者,您只需运行以下命令一次:

chmod o + x发出“哔”声

这将允许所有用户使用beep可执行文件,这在大多数情况下可能已经足够安全了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.