# [gelöst] Töne über Systemlautsprecher ausgeben?

## 3PO

Hallo Zusammen,

ich habe mir aus einem uralt PC (PII, 450 MHZ) einen Fileserver mit Gentoo 2006.1 gebastelt.

Da an diesem System weder Monitor noch Sound vorhanden ist möchte ich folgendes realisieren.

Der PC soll nach dem Hochfahren, also nach "starting local", einen Piepton oder besser noch eine Tonfolge über den Systemlautsprecher abspielen. Dies soll: "Bin jetzt betriebsbereit" signalisieren.

Da selbe sollte nach einen shutdown bzw. halt Befehl gehen, als Meldung: "Melde mich ab"

Geht so etwas überhaupt?Last edited by 3PO on Thu Jan 11, 2007 1:17 pm; edited 1 time in total

----------

## phixom

Hier 

http://www.geocities.com/stssppnn/pcsp.html

und hier

http://gentoo-wiki.com/HOWTO_Virtual_PC_Speaker

kann evtl. geholfen werden. Es ist zwar nicht ganz das was du willst, aber eine gute Alternative.

phixom

----------

## mv

 *3PO wrote:*   

> Der PC soll nach dem Hochfahren, also nach "starting local", einen Piepton oder besser noch eine Tonfolge über den Systemlautsprecher abspielen.

 

```
emerge beep

beep -f 261.6 -n -f 329.6 -n -f 392.0 -n -f 523.2 -r 3
```

Edit: Beeper support im Kernel muss aktiviert sein (und man sollte root sein).

----------

## STiGMaTa_ch

Hmm...

Also wenn ich prüfen möchte ob mein Fileserver oben ist starte ich einfach von irgend einem Rechner aus ein ping <IP_des_Fileservers> Irgendwann wechselt er dann von "Destination Host unreachable" zum normalen pingen. Dann weiss ich, dass er oben ist.

Lieber Gruss

STiGMaTa

----------

## 3PO

 *mv wrote:*   

> 
> 
> ```
> emerge beep
> 
> ...

 

Danke, das werde ich mal testen.

Jetzt hätte ich aber noch eine Frage: Gibt es es irgendwo eine Doku zum beep Befehl, vorallem über die Parameter?

----------

## nikaya

 *3PO wrote:*   

>  Gibt es es irgendwo eine Doku zum beep Befehl, vorallem über die Parameter?

 

Ähm,man beep?  :Wink: 

----------

## 3PO

Okay das funktioniert schonmal ganz gut.

btw: "man beep" war eine gute Idee, da hätte ich auch selber drauf kommen können....  :Rolling Eyes: 

So, nun kommt der nächste Teil.

Wenn ich nun eine Datei z.B. start.sh mit folgendem Inhalt anlege,

```
#!/bin/sh

beep -f 261.6 -n -f 329.6 -n -f 392.0 -n -f 523.2 -r 3
```

wie mache ich das, dass es  nach "starting local" ausgeführt wird?

----------

## reyneke

```

echo  "$(which start.sh) > /dev/null" >> /etc/conf.d/local.start

```

HTH,

rey

----------

## WiredEd

Du könntest auch einfach die Zeile

```
echo -e "\a"
```

in das entsprechende Runscript einfügen. Wäre das nicht noch einfacher?

----------

## b3cks

 *STiGMaTa_ch wrote:*   

> Hmm...
> 
> Also wenn ich prüfen möchte ob mein Fileserver oben ist starte ich einfach von irgend einem Rechner aus ein ping <IP_des_Fileservers> Irgendwann wechselt er dann von "Destination Host unreachable" zum normalen pingen. Dann weiss ich, dass er oben ist.
> 
> Lieber Gruss
> ...

 

Das ist doch viel zu einfach.

Bei uns machen wir das ähnlich. Bei unseren Windows-Servern, haben wir das Sound-System einfach an die Gegensprechanlage angeschlossen. So bekommt das jeder Mitarbeiter mit. Dieser schöööne Start- und Runterfahr-Sound! Um unsere Unix/Linux-Server brauchen wir uns in Bezug auf Reboot keine gedanken machen. Außerdem melden dich das eh per Mail.

SCNR!

----------

## 3PO

ERLEDIGT

Ich habe mein Problem gelöst.

Hier nochmal die Schritte die ich gemacht habe:

1.] Beep installieren

```
emerge -av beep
```

2.] Die /etc/init.d/local wie folgt angepaßt:

```
#!/sbin/runscript

# Copyright 1999-2006 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

depend() {

   after *

}

start() {

   ebegin "Starting local"

   beep -f 1000 -n -f 2000 -n -f 1500 -r2

   # Add any misc programs that should be started

   # to /etc/conf.d/local.start

   if [[ -e /etc/conf.d/local.start ]] ; then

      source /etc/conf.d/local.start

   fi

   eend $? "Failed to start local"

}

stop() {

   ebegin "Stopping local"

   beep -f 1500 -r2 2000 -n -f  1000 -n

   # Add any misc programs that should be stopped

   # to /etc/conf.d/local.stop

   if [[ -e /etc/conf.d/local.stop ]] ; then

      source /etc/conf.d/local.stop

   fi

   eend $? "Failed to stop local"

}

# vim:ts=4

```

Das wars schon, jetzt "dudelt" es jedesmal wenn der PC up ist, bzw. vor jedem shutdown, halt oder reboot.

Danke nochmal an Alle

cu

3PO

----------

## firefly

öhm wiso das init-script verändern, wenn es dafür die dateien /etc/conf.d/local.start und /etc/conf.d/local.stop gibt?

Desweiteren ist nach dem nächsten baselayout-update deine Änderung wieder weg.

----------

## 3PO

 *firefly wrote:*   

> öhm wiso das init-script verändern, wenn es dafür die dateien /etc/conf.d/local.start und /etc/conf.d/local.stop gibt?
> 
> Desweiteren ist nach dem nächsten baselayout-update deine Änderung wieder weg.

 

Danke. --> Ich werde es demensprechend ändern.

----------

## reyneke

Also ... 

/etc/conf.d/local.{start|stop} sind meines Wissens nach dafür da, dass man kleine Scripten oder Dienste, für die es (noch) keine originären Gentoo-Initscripts gibt, beim Booten starten und beim Runterfahren stoppen lassen kann. Also eher ein Quick'n'dirty-Zugang zum Boot-Prozess.

Du hast jetzt ein eigenes Init-Script geschrieben. Wenn Du das unter /etc/init.d abspeicherst, kannst Du es mit 

```

rc-update <Script-Name> <Runlevel>

```

im gewünschten Runlevel ausführen lassen. Ich würde empfehlen, es zum Runlevel default hinzuzufügen. Da es die Zeilen

```

depend() {

after *

}

```

enthält, wird es dann auch erst ausgeführt, wenn alle anderen Init-Scripte dieses (finalen) Runlevels abgearbeitet sind und zeigt dann an, daß der Rechner bereit ist.

HTH,

rey

----------

## 3PO

Also ich habe jetzt meine /etc/conf.d/local.start und /etc/conf.d/local.stop wie folgt angepasst:

 :Arrow:  local.start

```
#!/bin/bash

# /etc/conf.d/local.start

# This is a good place to load any misc.

# programs on startup ( 1>&2 )

beep -f 1000 -n -f 2000 -n -f 1500 -r2

if [ -d /usr/livecd/gconf ]

then

   ln -sf /usr/livecd/gconf /etc/gconf

fi

if [ -d /usr/livecd/db ]

then

   ln -sf /usr/livecd/db /var/db

fi

if [ -d /usr/livecd/profiles ]

then

   ln -sf /usr/livecd/profiles /usr/portage/profiles

fi

if [ -d /usr/livecd/eclass ]

then

   ln -sf /usr/livecd/eclass /usr/portage/eclass

fi

```

 :Arrow:  local.stop

```
# /etc/conf.d/local.stop

# This is a good place to unload any misc.

# programs you started above.

# For example, if you are using OSS and have

# "/usr/local/bin/soundon" above, put

# "/usr/local/bin/soundoff" here.

beep -f 1500 -r2 2000 -n -f  1000 -n

```

@ reyneke,

Danke für die Tipps ,aber ich will ja kein Script im eigentlichen Sinne ausführen, sondern nur einen einfachen Befehl. Und dafür, denke ich mal, reichen die beiden Einträge völlig aus.   :Wink: 

----------

## reyneke

 *3PO wrote:*   

> 
> 
> @ reyneke,
> 
> Danke für die Tipps ,aber ich will ja kein Script im eigentlichen Sinne ausführen, sondern nur einen einfachen Befehl. Und dafür, denke ich mal, reichen die beiden Einträge völlig aus.  

 

Oh, mein Fehler. Ich dachte, Du hättest ja ein eigenes Initscript mit der entsprechenden Syntax direkt in /etc/conf.d/local.start geschrieben. Das wäre etwas ... unorthodox gewesen und darauf wollte ich Dich eigentlich nur (etwas ausführlich  :Smile: ) hinweisen.

Nix für ungut und Gruß,

rey

----------

