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.


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

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


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.


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.


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

3

To polecenie załatwi sprawę:

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

0

Uruchom zdalne polecenie na zdalnym komputerze:

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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.