我如何远程 (SSH) 使我的 Linux 计算机发出蜂鸣声(内置扬声器,因为没有外部扬声器)?我有 ubuntu 9.04,如果需要可以安装额外的软件包。如果您有多个盒子,并且忘记了哪个 IP 是哪个盒子,那么这将非常适合查找某个盒子。
答案1
尝试:
sudo sh -c "echo -e '\a' > /dev/console"
您可能必须先加载内置扬声器的内核模块(例如,如果该模块被列入自动加载黑名单):
sudo modprobe pcspkr
答案2
第一的:
modprobe pcspkr
然后是来自主题的解决方案,例如
ssh user@host
beep
答案3
来自嘟我的 Ubuntu 机器上的手册页:
IOCTL 怪异现象
有些用户会遇到 beep 因 ioctl() 的投诉而终止的情况。正如 Peter Tirsek 很好地向我指出的那样,这种情况的原因在于内核如何处理 beep 尝试戳 (对于非程序员:ioctl 是一种万能函数,它允许您戳没有其他预定义戳机制的东西) tty,这就是它发出哔哔声的方式。 简而言之,内核会检查以下任一操作:
你是超级用户
你拥有当前的 tty
这意味着 root 始终可以使 beep 工作(据我所知!),并且任何本地用户都可以使 beep 工作,但是非 root 远程用户无法在自然状态下使用 beep。
这很可能是 beep 无法远程工作的原因。您可以通过调用以下命令来检查这是否是根本原因远程控制与-t选项,强制伪tty分配。
一个不太理想的解决方案是创建一个执行 beep 的包装脚本,然后授予此脚本root权限. 如果执行此脚本超过远程控制发出哔声后,您就会知道问题在于缺少控制终端。
答案4
您可以使用:
ssh 用户@远程机器 sudo sh -c“echo -e'\a'> /dev/tty1”
请注意,下面的代码不起作用。它甚至在提示输入sudo
密码之前就失败了,因为 ( bash
) shell 正在执行重定向,并且该 shell 仍然以普通用户身份运行,而不是以 的身份运行root
:
ssh 用户@远程机器 sudo echo -e'\a'> /dev/tty1 -bash:/dev/tty1:权限被拒绝
ls -la /dev/tty1 crw------- 1 root root 4, 1 2009-09-28 16:33 /dev/tty1