Portál AbcLinuxu, 10. května 2025 05:27
Zdravim (;
udělal jsem funkční scriptík pod bashem, ale potřeboval bych udělat to samé v php.
Poradí mi někdo jak na to?
tady je to v bashi:
------------------
IP=192.168.0.1
oid=1.3.6.1.4.1.9.9.23.1.2.1.1.4
h1=$(snmpwalk -m ALL $IP -c public -v 2c $oid | head -1 | tail -1 | cut -d':' -f4 | cut -d' ' -f2)
h2=$(snmpwalk -m ALL $IP -c public -v 2c $oid | head -1 | tail -1 | cut -d':' -f4 | cut -d' ' -f3)
h3=$(snmpwalk -m ALL $IP -c public -v 2c $oid | head -1 | tail -1 | cut -d':' -f4 | cut -d' ' -f4)
h4=$(snmpwalk -m ALL $IP -c public -v 2c $oid | head -1 | tail -1 | cut -d':' -f4 | cut -d' ' -f5)
hh1=$((0x$h1))
hh2=$((0x$h2))
hh3=$((0x$h3))
hh4=$((0x$h4))
t=.
ch=($hh1$t$hh2$t$hh3$t$hh4)
echo $ch
-----------------
Jedná se o načítání hexa z snmp a převod na deca. Následně sestavení IP a tisk. (;
Hlavně netušim jak výstup z snmp osekám jako to umí příkazy head, tail, cut .
dotaz: snmpwalk -m ALL 192.168.0.1 -c public -v 2c 1.3.6.1.4.1.9.9.23.1.2.1.1.4
vystup: CISCO-CDP-MIB::cdpCacheAddress.10003.1 = Hex-STRING: 0A 14 00 FD
Děkuji
Dobry den.
Nemam cisco a nevim co je v 1.3.6.1.4.1.9.9.23.1.2.1.1.4
Tim padem nevim, zda nejsem mimo, ale proc nepouzit misto snmpwalk snmpget? :
<?php
$syscontact = snmpget("127.0.0.1", "public", "system.SysContact.0");
?>
Nicmene existuje i:
<?php
$a = snmpwalk("127.0.0.1", "public", "");
foreach ($a as $val) {
echo "$val\n";
}
?>
A jak ze stringu dostat nejaky substring se kouknete do dokumentace.
treba: http://us3.php.net/manual/en/ref.strings.php
Marek
Jestli jde jen o to v PHPku vyvolat ty sady příkazů, je to možné udělat pomoci fcí:
exec, passthru, system
Např.
$IP=192.168.0.1
$oid=1.3.6.1.4.1.9.9.23.1.2.1.1.4
$outa = Array();//for sure
$ret = false;//for sure
$h1= exec("snmpwalk -m ALL $IP -c public -v 2c $oid | head -1 | tail -1 | cut -d':' -f4 | cut -d' ' -f2",$outa,$ret);
if($ret == 0)
{
//v $outa[0] mám 1 řádek z výstupu
}
fce: hexdec, dechex (jen do 2^31 -1), nebo lépe base_convert
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.