28

Как я могу удаленно (SSH) издать свой Linux Computer Beep (встроенный динамик, так как внешних нет)? У меня есть Ubuntu 9.04 и я могу установить дополнительные пакеты, если это будет необходимо. Это было бы хорошо для нахождения определенного ящика, если у вас есть более одного стоящего рядом, и вы забыли, какой IP какой ящик.

8 ответов8

22

Пытаться:

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

Возможно, вам придется сначала загрузить модуль ядра для встроенного динамика (например, если модуль попал в черный список из-за автозагрузки):

sudo modprobe pcspkr
14

первый:

modprobe pcspkr

тогда решения из темы, вроде

ssh user@host
beep
6

Со страницы руководства по звуковым сигналам на моей машине с Ubuntu:

IOCTL WACKINESS

Некоторые пользователи сталкиваются с ситуацией, когда звуковой сигнал умирает с жалобой от ioctl(). Причина этого, поскольку Питер Тирсек был достаточно любезен, чтобы указать мне, связана с тем, как ядро обрабатывает попытку сигнала звукового сигнала (для непрограммистов: ioctl - это своего рода универсальная функция, которая позволяет вам делать то, что нет другого предопределенного механизма нажатия на tty, то есть, как он подает звуковой сигнал. Коротко говоря, ядро проверяет, что либо:

  • ты суперпользователь

  • у вас есть текущий tty

Это означает, что root всегда может заставить работать звуковой сигнал (насколько мне известно!), И что любой локальный пользователь может заставить работать звуковой сигнал, НО удаленный пользователь без полномочий root не может использовать звуковой сигнал в своем естественном состоянии.

Это может быть причиной того, что звуковой сигнал отказывается работать удаленно. Вы можете проверить, является ли это основной причиной, вызвав ssh с опцией -t , которая вызывает псевдо-tty.

Менее желательным решением было бы создание сценария-оболочки, который выполняет звуковой сигнал, и предоставление этому корневому пользователю разрешений. Если выполнение этого скрипта через ssh должным образом выдаст звуковой сигнал, вы будете знать, что проблема заключается в отсутствии управляющего терминала.

3

Эта команда сделает свое дело:

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

Ты можешь использовать:

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


Обратите внимание, что следующее не будет работать. Он не работает даже до запроса пароля sudo потому что оболочка (bash) выполняет перенаправление, и эта оболочка все еще работает как обычный пользователь, а не как пользователь root:

ssh user@remote-machine
sudo echo -e '\a' > /dev/tty1
-bash: /dev/tty1: Permission denied
ls -la /dev/tty1
crw------- 1 root root 4, 1 2009-09-28 16:33 /dev/tty1
3

Просто введите

ssh user@remote-machine
beep

Протестировано на Ubuntu Desktop 8.x, оно будет издавать звуковой сигнал на удаленном сервере, даже если на этом сервере не активен локальный сеанс (таким образом: даже если на мониторе, подключенном к серверу, отображается экран входа в систему GNOME).

Посмотри на

man beep

Больше подробностей. В Debian/Ubuntu пакет звукового сигнала должен быть установлен, а динамики не должны быть отключены.

0

Или вы можете просто выполнить следующее один раз:

chmod o+x `which beep`

Это позволит всем пользователям использовать исполняемый звуковой сигнал, который в большинстве случаев является достаточно безопасным.

0

Запустите удаленную команду для удаленного компьютера:

имя хоста rsh /usr /bin /echo '\a'
или же
ssh user @ remotehost /usr /bin /echo '\a'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .