Как я могу удаленно (SSH) издать свой Linux Computer Beep (встроенный динамик, так как внешних нет)? У меня есть Ubuntu 9.04 и я могу установить дополнительные пакеты, если это будет необходимо. Это было бы хорошо для нахождения определенного ящика, если у вас есть более одного стоящего рядом, и вы забыли, какой IP какой ящик.
8 ответов
Пытаться:
sudo sh -c "echo -e '\a' > /dev/console"
Возможно, вам придется сначала загрузить модуль ядра для встроенного динамика (например, если модуль попал в черный список из-за автозагрузки):
sudo modprobe pcspkr
первый:
modprobe pcspkr
тогда решения из темы, вроде
ssh user@host
beep
Со страницы руководства по звуковым сигналам на моей машине с Ubuntu:
IOCTL WACKINESS
Некоторые пользователи сталкиваются с ситуацией, когда звуковой сигнал умирает с жалобой от ioctl(). Причина этого, поскольку Питер Тирсек был достаточно любезен, чтобы указать мне, связана с тем, как ядро обрабатывает попытку сигнала звукового сигнала (для непрограммистов: ioctl - это своего рода универсальная функция, которая позволяет вам делать то, что нет другого предопределенного механизма нажатия на tty, то есть, как он подает звуковой сигнал. Коротко говоря, ядро проверяет, что либо:
ты суперпользователь
у вас есть текущий tty
Это означает, что root всегда может заставить работать звуковой сигнал (насколько мне известно!), И что любой локальный пользователь может заставить работать звуковой сигнал, НО удаленный пользователь без полномочий root не может использовать звуковой сигнал в своем естественном состоянии.
Это может быть причиной того, что звуковой сигнал отказывается работать удаленно. Вы можете проверить, является ли это основной причиной, вызвав ssh с опцией -t , которая вызывает псевдо-tty.
Менее желательным решением было бы создание сценария-оболочки, который выполняет звуковой сигнал, и предоставление этому корневому пользователю разрешений. Если выполнение этого скрипта через ssh должным образом выдаст звуковой сигнал, вы будете знать, что проблема заключается в отсутствии управляющего терминала.
Эта команда сделает свое дело:
modprobe pcspkr; echo -e "\a" > /dev/console;
Ты можешь использовать:
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
Просто введите
ssh user@remote-machine
beep
Протестировано на Ubuntu Desktop 8.x, оно будет издавать звуковой сигнал на удаленном сервере, даже если на этом сервере не активен локальный сеанс (таким образом: даже если на мониторе, подключенном к серверу, отображается экран входа в систему GNOME).
Посмотри на
man beep
Больше подробностей. В Debian/Ubuntu пакет звукового сигнала должен быть установлен, а динамики не должны быть отключены.
Или вы можете просто выполнить следующее один раз:
chmod o+x `which beep`
Это позволит всем пользователям использовать исполняемый звуковой сигнал, который в большинстве случаев является достаточно безопасным.
Запустите удаленную команду для удаленного компьютера:
имя хоста rsh /usr /bin /echo '\a'
или же
ssh user @ remotehost /usr /bin /echo '\a'