ทำให้คอมพิวเตอร์ส่งเสียงบี๊บจากลำโพงในตัวจากระยะไกล


28

ฉันจะสามารถสร้าง Linux Computer Beep (ลำโพงในตัวจากระยะไกล (SSH) ได้อย่างไรเนื่องจากไม่มีลำโพงภายนอก) ฉันมีอูบุนตู 9.04 และสามารถติดตั้งแพ็คเกจเพิ่มเติมได้ถ้าต้องการ นี่จะเป็นสิ่งที่ดีสำหรับการค้นหากล่องบางกล่องหากคุณมีมากกว่าหนึ่งยืนอยู่รอบ ๆ และลืม IP ที่เป็นกล่อง


11
ฉันหวังว่าคำถามของคุณไม่ได้เป็นการ์ตูนที่ใช้งานได้จริง: xkcd.com/530
Telemachus


1
@CiroSantilli 新疆改造中心六四事件法轮功คำถามนี้เก่ากว่าคำถามเหล่านี้
wsd

@wsd ฉันไม่ได้บ่งบอกถึงความซ้ำซ้อนและฉันทามติในปัจจุบันคือปิดด้วย "คุณภาพ": meta.stackexchange.com/questions/147643//เนื่องจาก "คุณภาพ" ไม่สามารถวัดได้ฉันจึงไปที่ upvotes ;-) มีแนวโน้มว่าคำถามใดจะเข้ามาที่คำหลักที่ดีที่สุดของ Google สำหรับ newbie
Ciro Santilli 新疆改造中心法轮功六四事件

@CiroSantilli 新疆改造中心六四事件法轮功ขอขอบคุณสำหรับการชี้แจง :)
wsd

คำตอบ:


23

ลอง:

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

คุณอาจต้องโหลดโมดูลเคอร์เนลสำหรับลำโพงในตัวก่อน (เช่นหากโมดูลถูกขึ้นบัญชีดำจากการโหลดอัตโนมัติ):

sudo modprobe pcspkr

สิ่งนี้ใช้ได้ในขณะที่คำสั่งบี๊บไม่ทำงาน ฉันเพิ่งตั้งค่านี้ให้ทำงานบนเครื่องเพื่อนร่วมงาน สำหรับฉันในseq 1 10000; ทำ echo -e '\ a'> / dev / console; นอน 1 เสร็จแล้ว
Nick Stinemates

ไม่ได้ส่งเสียง
Nick Stinemates

ใช้งานได้ดีกับ CentOS / RHEL ฉันไม่พบแพ็คเกจบี๊บใด ๆ
ลาสมิด 87

@NickStinemates ตรวจสอบให้แน่ใจว่าคุณมีลำโพง PC บนเมนบอร์ดของคุณ
dykeag

นี่คือทางออกที่ง่ายที่สุด! นอกจากนี้ขอโทษที่รับเพียงแค่ 9 ปีเท่านั้น
wsd


6

จากหน้า man beepบนเครื่อง Ubuntu ของฉัน:

IOCTL WACKINESS

ผู้ใช้บางคนจะพบกับสถานการณ์ที่เสียงบี๊บตายด้วยการร้องเรียนจาก ioctl () เหตุผลนี้เมื่อปีเตอร์ Tirsek ดีพอที่จะชี้ให้ฉันเกิดจากการที่เคอร์เนลจัดการกับความพยายามในการส่งเสียงบี๊บที่ดัง (สำหรับผู้ที่ไม่ได้เขียนโปรแกรม: ioctl เป็นฟังก์ชั่น catch-all ที่ให้คุณสามารถกระตุ้นสิ่งต่างๆ ไม่มีกลไก poking-at อื่น ๆ ที่กำหนดไว้ล่วงหน้า) tty ซึ่งเป็นวิธีการส่งเสียงบี๊บ เรื่องสั้นคือเคอร์เนลตรวจสอบว่า:

  • คุณเป็น superuser

  • คุณเป็นเจ้าของ tty ปัจจุบัน

สิ่งนี้หมายความว่ารูทสามารถทำงานบี๊บได้ตลอดเวลา (เพื่อความรู้ที่ดีที่สุดของฉัน!) และผู้ใช้ในพื้นที่สามารถทำงานบี๊ปได้ แต่ผู้ใช้รีโมตที่ไม่ใช่รูทจะไม่สามารถใช้บี๊ปในสภาวะปกติ

นี่อาจเป็นเหตุผลว่าทำไมบี๊ปปฏิเสธที่จะทำงานจากระยะไกล คุณสามารถตรวจสอบว่านี่เป็นสาเหตุที่แท้จริงหรือไม่โดยเรียกใช้sshด้วยตัวเลือก-tซึ่งจะบังคับให้มีการจัดสรร pseudo-tty

โซลูชันที่ต้องการน้อยกว่าคือการสร้างสคริปต์ตัวตัดที่ดำเนินการส่งเสียงบี๊บและให้สิทธิ์การรูทสคริปต์นี้ หากเรียกใช้งานสคริปต์นี้ผ่านsshจะสร้างเสียงบี๊บอย่างแน่นอนคุณจะรู้ว่าปัญหาคือการขาดเทอร์มินัลการควบคุม


3

เพียงพิมพ์

ssh user@remote-machine
beep

ทดสอบบน Ubuntu Desktop 8.x สิ่งนี้จะส่งเสียงบี๊บบนรีโมตเซิร์ฟเวอร์แม้ว่าจะไม่มีเซสชั่นโลคัลบนเซิร์ฟเวอร์นั้นทำงานอยู่ (เช่น: แม้ว่าหน้าจอเข้าสู่ระบบ GNOME จะแสดงบนจอภาพที่ต่ออยู่กับเซิร์ฟเวอร์)

มองไปที่

man beep

สำหรับรายละเอียดเพิ่มเติม บน Debian / Ubuntu จะต้องติดตั้งแพ็คเกจเสียงบี๊บและลำโพงจะต้องไม่ถูกปิดเสียง


ผมสงสัยว่าทำไมคุณเขียน"ลำโพงจะต้องไม่ถูกปิดเสียง" กล่องUbuntu Desktopของฉันไม่มีการติดตั้งไดรเวอร์เสียงและทั้งคู่beepและechoตัวเลือกทั้งหมดใช้ลำโพงในตัวของฉัน แม้ว่าจะman beepระบุอย่างชัดเจนว่า"ส่งเสียงบี๊บลำโพงหลายวิธี"ฉันยังไม่ได้ตรวจสอบว่าเกิดอะไรขึ้นหากมีไดรเวอร์เสียงติดตั้งอยู่
Arjan

อย่างน้อยในพีซีของฉันฉันสามารถปิดเสียงลำโพงด้วย gnome-volume-control และเนื่องจากฉันไม่สามารถส่งเสียงบี๊บฉันจึงมักจะทำ
Kim

ดังนั้นbeepจะไม่ใช้ลำโพงในตัวในระบบของคุณ? หรือตัวควบคุมระดับเสียง (ซึ่งถูกปิดการใช้งานบนกล่อง Ubuntu ของฉัน) ยังควบคุมลำโพงในตัวด้วย อาจสนุกเพื่อดูว่าechoโซลูชันทำงานแตกต่างจากหรือไม่
Arjan Ar

gnome-volume-control สามารถใช้เพื่อควบคุมลำโพงในตัวแยกจากกัน คุณหมายความว่าอย่างไรเมื่อปิดการใช้งาน จะเกิดอะไรขึ้นเมื่อคุณเรียกใช้ gnome-volume-control จากบรรทัดคำสั่ง
Kim

ขออภัยเพิ่งลบ 10.8 การติดตั้งออกไป ปิดการใช้งานใน: ไม่มีการติดตั้งไดรเวอร์เสียงดังนั้นจึงมีเครื่องหมายหยุดที่ด้านบนของไอคอนเสียงในเมนู GNOME
Arjan Ar

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: ปฏิเสธการอนุญาต
ls -la / dev / tty1
crw ------- 1 รูทราก 4, 1 2009-09-28 16:33 / dev / tty1


0

เรียกใช้คำสั่งระยะไกลไปยังเครื่องระยะไกล:

ชื่อโฮสต์ rsh / usr / bin / echo '\ a'
หรือ
ผู้ใช้ ssh @ remotehost / usr / bin / echo '\ a'


จะไม่มีใครต้องการเปลี่ยนเส้นทางไปยังสถานีปลายทางระยะไกลอย่างที่ Thomas แนะนำเพื่อให้เซิร์ฟเวอร์ระยะไกลส่งเสียงบี๊บแทนที่จะเป็นไคลเอ็นต์ SSH ในพื้นที่
Arjan

ท่านสามารถทำได้: echo "\ a"> 'tty'
harrymc

echo -e "\a" > /dev/ttyก็จะเตือนบน SSH ลูกค้าที่ไม่ได้อยู่ในลำโพงในตัวบนเซิร์ฟเวอร์ :-) tty0, tty1และconsoleดูเหมือนจะทำงานตามที่ปรากฏในคำตอบอื่น ๆ
Arjan Ar

0

หรือคุณสามารถเรียกใช้สิ่งต่อไปนี้เพียงครั้งเดียว:

chmod o + x` ซึ่งส่งเสียงบี๊บ '

วิธีนี้จะช่วยให้ผู้ใช้ทุกคนสามารถใช้งานไฟล์เสียงบี๊บได้ซึ่งส่วนใหญ่จะปลอดภัยพอสมควร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.