StatusController.php
2.07 KB
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
namespace Swpb\Bundle\CocarBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Swpb\Bundle\CocarBundle\Controller\SnmpController;
class StatusController extends Controller
{
/**
* @Route("/status", name="cocar_status")
* @Template()
*/
public function statusAction()
{
$oids = array(
"index" => ".1.3.6.1.2.1.2.2.1.1",
"descr" => ".1.3.6.1.2.1.2.2.1.2",
"adminStatus" => ".1.3.6.1.2.1.2.2.1.7",
"operStatus" => ".1.3.6.1.2.1.2.2.1.8"
);
#verificar o campo geraAlarme='S' na tabela tb_circuits
$em = $this->getDoctrine()->getManager();
$circuits = $em->getRepository('CocarBundle:Circuits')->findAll();
foreach($circuits as $cir)
{
$obj = new SnmpController(
$cir->getIpBackbone(),
$cir->getCommunitySnmpBackbone(),
$cir->getCodeInterface()
);
if($obj->sysUpTime())
{
$numInterface = $cir->getNumSnmpinterface();
$MensageIBs = $oids{'descr'} . ".$numInterface " .
$oids{'adminStatus'} . ".$numInterface " .
$oids{'operStatus'} . ".$numInterface ";
list($ifDescr, $ifAdminStatus, $ifOperStatus) = $obj->fcSnmpGet($MensageIBs);
$ifDescr = str_replace("-aal5 layer", "", $ifDescr);
$ifDescr = str_replace("atm subif", "", $ifDescr);
if($cir->getSerialBackbone() == $ifDescr)
{
$cir->setAdminStatus($this->status($ifAdminStatus));
$cir->setOperStatus($this->status($ifOperStatus));
$em->persist($cir);
$em->flush();
}
}
else
{
$cir->setAdminStatus($this->status('INAT'));
$cir->setOperStatus($this->status('INAT'));
$em->persist($cir);
$em->flush();
}
}
return new Response();
}
public function status($status)
{
return preg_match("/1/i", $status) ? "UP" :
(preg_match("/2/i", $status) ? "DOWN" : "INAT");
}
}