Zdalnie włącz sygnał dźwiękowy komputera na wbudowanym głośniku

28

Jak mogę zdalnie (SSH) wygenerować sygnał dźwiękowy komputera z systemem Linux (wbudowany głośnik, ponieważ nie ma żadnych zewnętrznych)? Mam Ubuntu 9.04 i mogę w razie potrzeby zainstalować dodatkowe pakiety. Byłoby to przydatne do znalezienia określonego pudełka, jeśli masz więcej niż jedno stojące w pobliżu i zapomniałeś, który adres IP jest którym pudełkiem.

wsd
źródło
11
Mam nadzieję, że twoje pytanie nie jest tak naprawdę kreskówką w pracy: xkcd.com/530
Telemachus
1
@CiroSantilli 新疆 改造 中心 六四 事件 法轮功 to pytanie jest starsze niż którekolwiek z nich.
wsd
@wsd Nie sugerowałem, że powielam, a obecny konsensus ma zakończyć się przez „jakość”: meta.stackexchange.com/questions/147643/... Ponieważ „jakość” nie jest mierzalna, wybieram opinie pozytywne. ;-) Prawdopodobnie sprowadza się do tego, które pytanie trafiło w najlepsze słowa kluczowe Google dla początkujących w tytule.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
@CiroSantilli 法轮功 改造 中心 六四 事件 法轮功 dziękuję za wyjaśnienie :)
wsd

Odpowiedzi:

23

Próbować:

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

Najpierw może być konieczne załadowanie modułu jądra dla wbudowanego głośnika (np. Jeśli moduł został umieszczony na czarnej liście z automatycznego ładowania):

sudo modprobe pcspkr
John T.
źródło
Działa to, gdy polecenie beep nie działa. Właśnie ustawiłem to, aby działało na maszynie dla współpracowników. dla mnie w seq 1 10000; do echo -e '\ a'> / dev / console; spać 1; zrobione
Nick Stinemon,
Nie wydał dźwięku.
Nick Stinemon,
Działa to dobrze na CentOS / RHEL, nie mogłem znaleźć żadnych pakietów sygnałów dźwiękowych.
plazmid87
@NickStinemon Upewnij się, że masz głośnik PC na płycie głównej
dykeag
To jest najłatwiejsze rozwiązanie! Przepraszamy również za spóźnienie tylko 9 lat.
wsd
14

pierwszy:

modprobe pcspkr

następnie rozwiązania z tematu, jak

ssh user@host
beep
maizy
źródło
(Co do modprobe: zobacz, jak uruchomić sygnał dźwiękowy? Po szczegóły).
Arjan
Musiałemsudo modprobe pcskr
IanVaughan
6

Ze strony man beep na moim komputerze Ubuntu:

IOCTL WACKINESS

Niektórzy użytkownicy napotkają sytuację, w której sygnał dźwiękowy umiera z powodu skargi od ioctl (). Powód tego, jak miło zauważył Peter Tirsek, wynika z tego, jak jądro obsługuje próbę pokepnięcia sygnału dźwiękowego (dla nie-programistów: ioctl jest rodzajem funkcji catch-all, która pozwala na szturchanie rzeczy, które nie mają innego predefiniowanego mechanizmu szturchania) tty, czyli jak to wydaje dźwięk. Krótko mówiąc, jądro sprawdza, czy:

  • jesteś superużytkownikiem

  • posiadasz obecny tty

Oznacza to, że root może zawsze uruchamiać sygnał dźwiękowy (zgodnie z moją najlepszą wiedzą!) I że każdy użytkownik lokalny może go uruchamiać, ALE użytkownik zdalny inny niż root nie może używać sygnału dźwiękowego w stanie naturalnym.

Może to być powód, dla którego sygnał dźwiękowy odmawia działania na odległość. Możesz sprawdzić, czy jest to główna przyczyna, wywołując ssh z opcją -t , która wymusza alokację pseudo-tty.

Mniej pożądanym rozwiązaniem byłoby utworzenie skryptu opakowującego, który wykonuje sygnał dźwiękowy, i przyznanie mu uprawnień do rootowania skryptu . Jeśli wykonanie tego skryptu przez ssh prawidłowo wygeneruje sygnał dźwiękowy, będziesz wiedział, że problemem jest brak kontrolującego terminala.

nagul
źródło
3

Po prostu wpisz

ssh user@remote-machine
beep

Testowany na Ubuntu Desktop 8.x, wyemituje sygnał dźwiękowy na zdalnym serwerze, nawet jeśli nie jest aktywna żadna sesja lokalna na tym serwerze (a więc: nawet jeśli ekran logowania GNOME jest wyświetlany na monitorze podłączonym do serwera).

Spójrz na

man beep

po więcej szczegółów. W systemie Debian / Ubuntu pakiet dźwiękowy musi być zainstalowany, a głośniki nie mogą być wyciszone.

Kim
źródło
Zastanawiam się, dlaczego napisałeś „głośniki nie mogą być wyciszone” . Moje pudełko Ubuntu Desktop nie ma zainstalowanych sterowników dźwięku i rzeczywiście obie beepte echoopcje korzystają z mojego wbudowanego głośnika. Chociaż man beepwyraźnie stwierdza „dźwięk głośnika na PC na wiele sposobów” , nie sprawdziłem, co się stanie, jeśli zainstalowano sterowniki dźwięku.
Arjan
Przynajmniej na moim komputerze mogę wyciszyć głośniki za pomocą gnome-volume-control. A ponieważ nie mogę znieść tego dźwięku, zwykle tak robię.
Kim
Więc więc beepnie używa wbudowanego głośnika w twoim systemie? Czy też regulacja głośności (która jest wyłączona w moim systemie Ubuntu) kontroluje również wbudowany głośnik? Może być fajnie zobaczyć, czy echorozwiązania zachowują się inaczej niż.
Arjan
Gnome-Volume-Control może być używany do osobnego sterowania wbudowanym głośnikiem. Co rozumiesz przez wyłączone? Co się stanie, gdy uruchomisz gnome-volume-control z wiersza poleceń?
Kim
Przepraszamy, właśnie usunąłem tę instalację 10.8. Wyłączone jak w: nie zainstalowano sterowników dźwięku, a zatem znak stopu na górze ikony dźwięku w menu GNOME.
Arjan
3

Możesz użyć:

ssh użytkownik @ maszyna zdalna
sudo sh -c "echo -e '\ a'> / dev / tty1"


Pamiętaj, że następujące nie działałoby. Nie powiedzie się nawet przed monitowaniem o sudohasło, ponieważ bashpowłoka ( ) dokonuje przekierowania, a powłoka nadal działa jako zwykły użytkownik, a nie jako root:

ssh użytkownik @ maszyna zdalna
sudo echo -e '\ a'> / dev / tty1
-bash: / dev / tty1: Odmowa uprawnień
ls -la / dev / tty1
crw ------- 1 root root 4, 1 2009-09-28 16:33 / dev / tty1
Tomasz
źródło
3

To polecenie załatwi sprawę:

modprobe pcspkr; echo -e "\a" > /dev/console;
Sayajin
źródło
0

Uruchom zdalne polecenie na zdalnym komputerze:

rsh nazwa hosta / usr / bin / echo '\ a'
lub
ssh user @ remotehost / usr / bin / echo '\ a'

harrymc
źródło
Czy nie byłoby konieczne przekierowanie do jakiegoś zdalnego terminala, jak sugerował Thomas, aby zdalny serwer wydał sygnał dźwiękowy, zamiast lokalnego klienta SSH?
Arjan
Można także zrobić: echo „\ a”> „tty”.
harrymc
echo -e "\a" > /dev/ttyna pewno będzie sygnał dźwiękowy na kliencie SSH, nie na wbudowany głośnik na serwerze :-) tty0, tty1i consolewydaje się działać, jak pokazano w innych odpowiedzi.
Arjan
0

Lub możesz po prostu uruchomić raz:

chmod o + x `which beep`

Umożliwi to wszystkim użytkownikom korzystanie z pliku wykonywalnego beep, co w większości przypadków jest prawdopodobnie wystarczająco bezpieczne.

Arjan
źródło