[PHP] APC besturen via SNMP

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik wil graag mijn APC besturen via een web-based control panel zodat ik per poort de stroom kan aan en uitzetten. Om te weten te komen hoe dit moet heb ik de search hier gebruikt, en google. Toen heb ik een documentatie van APC PowerNet MIB gevonden, waar staat hoe je de APC moet aanroepen, en de SNMP functies op php.net. Maar ik snap niet hoe ik beide moet combineren. Hoe maak ik een 'SNMP connectie' met de APC ? En hoe stuur ik de commandos voor aan en uit ?

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-09 14:28
Met fsockopen misschien? Daarmee kan je dit doen aangezien je een bepaalde poort aan kan spreken. Dat is bij ons tenminste zo.

  • ReLight
  • Registratie: Augustus 2001
  • Laatst online: 16-09 09:32

ReLight

echo("What Now ? !")

? De APC masterswitch heeft toch een web interface ?

Mijn zoon & dochter zijn de toekomst, de rest is tijdsvermaak. Home assistant & & Nibe S2125-12/SMO-S40, RMU-s40 & Tado - Volvo C40 ER, SE


  • Tomsworld
  • Registratie: Maart 2001
  • Niet online

Tomsworld

officieel ele fan :*

Misschien kom je hier al mee opweg: http://www.webhostingtalk.nl/showthread/t-54674.html

"De kans dat een snee brood op een nieuw tapijt valt met de beboterde zijde onderaan, is recht evenredig met de prijs van het tapijt"


Verwijderd

Topicstarter
ReLight schreef op 19 augustus 2004 @ 10:06:
? De APC masterswitch heeft toch een web interface ?
Ja maar het moet ingebouwd worden bij een webbased control panel.
Yep, dit is precies wat ik zocht, dankje!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik moet de volgende 2 functies werkend hebben:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Functie voor het aanzetten of uitzetten van een port
    function set_apc ($ip, $community, $port, $aan) {
        if ($aan == 1) {
            if (@snmpset ($ip, $community, '.1.3.6.1.4.1.318.1.1.4.4.2.1.3.' . $port, 'i', 2)) {
                return true;
            } else {
                return false;
            }
        } else {
            if (@snmpset ($ip, $community, '.1.3.6.1.4.1.318.1.1.4.4.2.1.3.' . $port, 'i', 1)) {
                return true;
            } else {
                return false;
            }
        }
    }

// Functie voor het uitlezen of een APC port aan of uit staat, true = aan, false = uit
    function get_apc ($ip, $community, $port) {
        if (@snmpget($ip, $community, 'wat moet hier staan?' . $port) == 'On') {
            return true;
        } else {
            return false;
        }
    }

Voor het begrijpen van de APC heb ik de APC-powernet.mib erbij gepakt, maar hier word ik niet wijzer van (http://www.intermapper.com/contrib/mibs/APC-Powernet.mib). Ik snap wat er staat, maar ik heb geen idee hoe ik die objecten nou vertaal naar de cijfers zoals '1.3.6.1.4.1.318.1.1.4.4.2.1.3'. Deze heb ik van iemand anders gekregen.

Dus mijn vraag: Weet iemand wat de SNMP command is voor het bekijken van de outlet? Ik weet wel dat ik de 'sPDUOutletCtl' wil uitlezen.

[ Voor 5% gewijzigd door Verwijderd op 20-08-2004 18:14 ]


Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Heel simpel: je moet de code weten voor die poort. In SNMP zijn alle objecten hierarchisch genummerd met OBJECT IDENTIFIER s. Zo is de OBJECT IDENTIFIER van APC dus
iso org(3) dod(6) internet(1) private(4) enterprises(1) apc(318)
oftewel 1.3.6.1.4.1.318
en daarbinnen heb je dus bv
products OBJECT IDENTIFIER ::= { apc 1 }
wat dus oftewel 1.3.6.1.4.1.318.1 is.
Wat je dus doet is je port ID uitzoeken, dan heb je een OBJECT IDENTIFIER met een naam en een kortere OBJECT IDENTIFIER, die je dan recursief opzoekt totdat je bij de OBJECT IDENTIFIER van apc bent, en die heb je dus.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik snap niet hoe de hierarchie van de mib werkt. Hoe zet ik die namen om naar de nummers zodat ik zoiets krijg als (1.3.6.1.4.1.318.1).1.4.4.2.1.3. (vooral het laatste gedeelte)

[ Voor 77% gewijzigd door Verwijderd op 20-08-2004 21:15 ]


Acties:
  • 0 Henk 'm!

  • jaKKer
  • Registratie: Februari 2002
  • Laatst online: 13-09 17:08

jaKKer

liev ;x She's on Fire

Heb je al op de website van APC zelf gekeken? of ze gemailt?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, daar word ik ook niks wijzer van

Acties:
  • 0 Henk 'm!

Verwijderd

mischien kan je de MIB(s) met een MIB Browser vinden?
http://www.ireasoning.com/mibbrowser.shtml

voor het omzetten van namen -> nummers zijn er ook tools (voor linux ken ik alleen 'snmptranslate')

[ Voor 6% gewijzigd door Verwijderd op 21-08-2004 02:17 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dankje kattebak, met zo'n browser kom ik er wel uit! Ik heb even één voor windows gezocht, die werkt heel goed! De nummers kun je er ook heel makkelijk mee uitlezen.

Software: NuDesign Visual MiBrowser
Download: http://www.ndt-inc.com/dnld8.html

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
En de oplossing voor de functies die ik wou maken (voor mensen die via de search hier terrecht komen):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?
// Niet geschikt voor MasterSwitch firmware version 1.X, voor MasterSwitch firmware version 1.X de $commando van de $actie 'reboot' naar 3 veranderen
// Datum: 21/08/2004


// Functie voor het besturen van een port, geeft true of false terug. $actie aangeroepen door 'aan', 'uit' of 'reboot'
    function apc_bestuur ($ip, $community, $port, $actie) {
        if ($actie == 'aan') {
            $commando = 1;
        } elseif ($actie == 'uit') {
            $commando = 2;
        } elseif ($actie == 'reboot') {
            $commando = 7;
        }

        if (@snmpset ($ip, $community, '.1.3.6.1.4.1.318.1.1.4.4.2.1.3.' . $port, 'i', $commando)) {
            return true;
        } else {
            return false;
        }
    }

// Functie voor het uitlezen van de status van een port, geeft 'aan', 'uit' of 'onbekend' terug
    function apc_status ($ip, $community, $port) {
        $check = @snmpget ($ip, $community, '.1.3.6.1.4.1.318.1.1.4.4.2.1.3.' . $port);

        if ($check == 1) {
            return 'aan';
        } elseif ($check == 2) {
            return 'uit';
        } else {
            return 'onbekend';
        }
    }
?>
Pagina: 1