Mam problem z Stringiem/tablica w sumie nie wiem, bo jeżeli daje if(is_array()) to nic się dzieje, a jeżeli nie dam is_array foreach krzyczy mi: " Invalid argument supplied for foreach()".
Sposób działa kodu :
Loguję po przez SSH na Mikrotika (brzegowego), pobieram wartość ARP poleceniem "ip arp print" to wszystko super działa dostaje wartość do zmiennej, później wklejam to do kodu który powinien mi to przerabić w sposób czytelny dla mojego przełożonego . Ale niestety nie przerabia blokuje się na foreach. Dodam że kiedy strumień danych zapisze w pliku, a później pobiorę wartości z pliku działa normalnie, ale stwierdziłem że szkoda mi miejsca na dysku, żebym co jakiś czas zapisywał wartości z arp'a:
** // - sposób wyświetlenia danych, lub krótki opis działania
if($conn == true) { // $conn to połaczenie ssh2 : ssh2_connect($Adres_ip, $ssh_port_mt) - to działa OK $stdout_stream = ssh2_exec($conn, '/ip arp print'); $dio_stream = ssh2_fetch_stream($stdout_stream, SSH2_STREAM_STDIO); $result_dio = stream_get_contents($dio_stream); } $i = 0; // OR $test = $result_dio; foreach ($test as $value){ $i++; if($i >= 4 && !empty($value)){ // komentarze np : Flags: X - disabled, I - invalid, H - DHCP, D - dynamic, P - published, oraz czy wartosc nie jest pusta // 904 D IP Bridge // 906 D Adres IP|_|Bridge|_| { //886 DC AdressIP MAC Bridge|_| if($i >= 4 && $i <= 13){ // wartosci ponizej 10 (liczone z komentarzami u gory) //0-9 DC IP Mac bridge|_| }elseif($i >= 13){ //10-x DC IP Mac bridge|_| } $ip_adres = array('IP','IP','IP','IP'); // nie zarejestrowane adresy IP w bazie, ale używane w firmie. $sql = 'select name, inet_ntoa(ipaddr) from nodes where inet_ntoa(ipaddr) = \''.$ip.'\''; $result = $mysqli->query($sql); if($row = $result->fetch_assoc()){ //echo ($row['name']. ' | '. $ip . PHP_EOL); } } } } }
Niestety nie mogę podać wartości var_dump pełnej więc tylko początek:
Wynik: string(77890) "Flags: X - disabled, I - invalid, H - DHCP, D - dynamic, P - published, C - complete # ADDRESS MAC-ADDRESS INTERFACE /*** XXX adresow IP z MAC oraz interface **/