Portál AbcLinuxu, 11. května 2024 22:57


Dotaz: bash vs. php

15.6.2009 10:53 beginer666 | skóre: 9
bash vs. php
Přečteno: 366×
Odpovědět | Admin

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

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.6.2009 11:34 marek
Rozbalit Rozbalit vše Re: bash vs. php
Odpovědět | | Sbalit | Link | Blokovat | Admin

 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

22.6.2009 18:02 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: bash vs. php
Odpovědět | | Sbalit | Link | Blokovat | Admin

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

 

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.