• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

snmp sein Daemon und ein Nachrichtendienst (?)

DrSputnik

Member
Suse SLES8SP3 Kernel 2.4.21-268 oder so...

Folgendes Problem.

Ich habe eine Netzwerk USV einen WinXP PC und halt den Linuxserver.

Wenn ich der USV den Strom wegnehme erscheint auf dem Win-PC via Nachrichten Messenger die Nachricht - USV Saft weg!!
mit ethereal gesnifft erhält auch der Linux die Nachricht - nur wer ist dafür verantwortlich, das diese angezeigt wird - das macht die Machine nämlich nicht.

Darauf installiert habe ich von APC den PowerChute Network Shutdown, der bietet auf Port 3052 der Linux eine http-Configuration an.
Dort habe ich alles wie bei dem Win-PC eingerichtet, auch dort ist das PCNS installiert.

Im Install-Path /usr/local/bin/Powerchute habe ich im bin-Dir ein Script "notifier" gefunden. Diese gibt nur leider beim händischen Starten folgende Fehlermeldung raus:

./notifier: line 38: [: =: unary operator expected


Ich glaube, dass dieses Script nicht funktioniert, oder gar nicht erst aufgerufen wird.
Habe es auch mal in die Ecke gestellt und ein eigenes dort erstellt.

/usr/bin/wall "test"

die Datei test existiert.
Bringt aber auch nichts.

Hier das notifier-Script:

-----------------------------------------
#!/bin/sh
# @(#)UNIX_notifier.sh 1.0
# Copyright 1999, American Power Conversion, Inc.
#
# NAME: notifier.sh
#
# REV: 1.0
#
# LAST MODIFIED: 3/29/99 14:05:25
#
# DESCRIPTION: Will send the message to the users specified.
# The parameters passed include -
# USER: single user to receive messages
# MSG: message to be sent
# SENDTOALL: ALL (send to all users)
# SPECIFIC - send to USER

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/etc:/usr/ccs/bin
export PATH

# Send the message to a single user
SendSingle() {
USER=`echo $USER | sed s/\"//g`
echo $MSG | write $USER 2>/dev/null
}

# Send the message to all users
SendAll() {
echo $MSG | wall 2>/dev/null
}

SOURCE=$2
SPACE=" "

# Add all words of a multi-word message together
MSG=$1
shift
until [ $1 = \"PowerChute\" ]
do
MSG=`echo $MSG$SPACE$1`
shift
done
# Remove references to PowerChute network shutdown
shift
# Decide if message is to ALL users or to a specific user
if [ $1 = SPECIFIC ]
then
#send message to specific users only
USER=$2
SendSingle
else
# send message to all users
SendAll
fi

# Cleanup

rm -f $MSG
rm -f $USER
rm -f $SPACE


----------------------------------------

Hoffentlich kann mir jemand schnell und gut weiter helfen..

Frohe Weihnachten und ´nen guten Rutsch.

Dr.Sputnik
 

gaw

Hacker
Dieses Skript erwartet einen oder zwei Parameter mit denen angegeben wird wer angesprochen wird. Das Program wall versendet Rundrufe an alle tty und ptys:
linux@otto:~>echo "Merry Christmas" | wall

Eine ähnliche Stelle findet sich im Skript in der Funktion SendAll:
Code:
.SendAll() {
echo $MSG | wall 2>/dev/null
}


In einem weiteren Teil wird der erste übergebene Parameter als Beginn der Nachricht identifiziert Dann werden alle weiteren Parameter als Teil der Nachricht übernommmen bis das Wort PowerChute die Nachricht abschließt. Danach entscheidet das nächste Wort fasll es existoert darüber was mit der Nachricht passiert. Steht dort SPECIFIC wird als nächstes Wort der User erwartet an den die Nachricht gesendet wird.

Das Skript verfügt über keinerlei Behandlung von fehlerhaften Eingaben, so dass zu vermuten ist, dass es von einem anderen Skript aufgerufen wird in etwa so:
Einzelnnachricht an den user otto:
linux: /usr/local/bin/Powerchute# ./notifier.sh Hallo Otto PowerChute SPECIFIC otto

Nachricht an alle:
linux: /usr/local/bin/Powerchute# ./notifier.sh Das ist eine Rundruf PowerChute

Also solltest du einen xterm oder eine Konsole öffnen und beobachten ob eine Nachricht ankommt. darüberhinaus muss natürlich ein Server auf besagten Port lauschen oder im inetd bzw xinetd eingetragen sein.


mfg
gaw
 
OP
D

DrSputnik

Member
Ja, besten Dank erstmal,

dann kann ich am Montag mal schauen, ob mir das weiterhilft.

Die Hotline von APC ist nämlich der Meinung, dass Linux genau wie Windows einen Nachrichtendienst hat - Schade, dass die ihre eigene Software nicht kennen
 

gaw

Hacker
Was an dem Skript funtioniert denn nicht? Oder anders ausgedrückt was erwartest du?

Diese Skript erzeugt keinen grafischen output, also kein popup-Fenster, Dialog oder ähnliches.

mfG
gaw
 
OP
D

DrSputnik

Member
gaw schrieb:
Oder anders ausgedrückt was erwartest du?

ich erwarte, dass nach eingabe von
Code:
./notifier NACHRICHT PowerChute

eine broadcoastmeldung erscheint, genau wie die vom wall

oder sehe ich das falsch
????
Dr.
 
OP
D

DrSputnik

Member
der snmpd - also, der läuft und läuft und läuft....

btw.

ich habe eine Mail von APC erhalten:

leider wird der Suse Linux Enterprise Server ofiziell nicht von unserer Software unterstuetzt.


-------------------------------------------------
Best Regards

APC Technical Support Engineer
Ballybrit Business Park
Galway, Ireland
 

gaw

Hacker
Das bedeutet nur, dass die keinen Support leisten wollen, nicht das es evt. nicht doch funktioniert. Schließlich lässt sich snmp sio konfigurieren dass es auf Nachrichten auf bestimmten Ports lauscht und entsprechend reagiert. Versuchen lohnt sich vielleicht.

mfG
gaw
 
OP
D

DrSputnik

Member
Denke auch, dass der läuft, habe aber keine Zeit zum Testen und ausprobieren, ausserdem zahlt das auch wieder keiner. Habe jetzt eine serielle Schnittstelle eingebaut und mache das ganze darüber.

Besten Dank für die Hilfe.

Gruss Dr.Sputnik
 
Oben