KategorieWeb Developer

Jak zainstalować Nginx + PHP + MySQL + phpMyAdmin na Raspberry PI (Raspbian) ?

Raspberry PI dzięki swojej cenie znajduje bardzo wiele zastosowań, jednym z nich może być mini serwer www. Jednak ze względu na nie najmocniejszą specyfikację należy wykorzystywać lepiej zoptymalizowane wersje czy to serwera WWW np. Nginx czy też PHP (PHP-FPM). Poniżej zaprezentuję jak zainstalować pełen serwer www wraz z PHP, MySQL oraz phpMyAdmin.
Czytaj dalej

KategorieSkrypty

[Skrypt] Jak zaimportować urządzenia z DUDE do Smokeping

DtoS (Dude to Smokeping) to skrypt mający za zadanie import listy urządzeń z programu DUDE  i export ich do Smokeping. Do poprawnego działania skryptu potrzebny jest dostęp do DUDE po http.

Skrypt powinien być wykonywany z poziomu konsoli w uprawnieniami root’a lub użytkownika z uprawnieniami do operacjach na smokeping.

 

[php]

<?php
/*
* Generator pliku z programu Dude do Smokeping
*
* Autor: Piotr Lewandowski
* E-mail: picom@esnet.pl
*
*/

###################################################################
############################# Funkcje #############################
###################################################################

/*
* Zamiana polskie znakow na bez ogonkow
*/
function rewrite($string)
{
$a = array( ‘Ę’, ‘Ó’, ‘Ą’, ‘Ś’, ‘Ł’, ‘Ż’, ‘Ź’, ‘Ć’, ‘Ń’, ‘ę’, ‘ó’, ‘ą’,
‘ś’, ‘ł’, ‘ż’, ‘ź’, ‘ć’, ‘ń’ );
$b = array( ‘E’, ‘O’, ‘A’, ‘S’, ‘L’, ‘Z’, ‘Z’, ‘C’, ‘N’, ‘e’, ‘o’, ‘a’,
‘s’, ‘l’, ‘z’, ‘z’, ‘c’, ‘n’ );

$string = str_replace( $a, $b, $string );
$string = preg_replace( ‘#[^a-z0-9]#is’, ‘ ‘, $string );
$string = trim( $string );
$string = preg_replace( ‘#\s{2,}#’, ‘ ‘, $string );
$string = str_replace( ‘ ‘, ‘-‘, $string );

return $string;
}

function downloadContent($url, $postdata = null)
{
if (!function_exists(‘curl_init’))
{
die(‘Sorry cURL is not installed!’);
}

$ch = curl_init();

curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . ‘/cookies.txt’);
curl_setopt ($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . ‘/cookies.txt’);

if($postdata)
{
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
}

$content = curl_exec ($ch);

curl_close($ch);

return $content;
}

/*
* Sortowanie tablicy dwuwymiarowej
*/
function stw($array, $cols)
{
$colarr = array();

foreach ($cols as $col => $order)
{
$colarr[$col] = array();

foreach ($array as $k => $row)
{
$colarr[$col][‘_’.$k] = strtolower($row[$col]);
}
}

$eval = ‘array_multisort(‘;

foreach ($cols as $col => $order)
{
$eval .= ‘$colarr[\”.$col.’\’],’.$order.’,’;
}

$eval = substr($eval,0,-1).’);’;
eval($eval);
$ret = array();

foreach ($colarr as $col => $arr)
{
foreach ($arr as $k => $v)
{
$k = substr($k,1);

if (!isset($ret[$k]))
{
$ret[$k] = $array[$k];
}

$ret[$k][$col] = $array[$k][$col];
}
}

return $ret;
}

###################################################################
####################### Kod wlasciwy skryptu ######################
###################################################################

/*
* Login do dude
*/
$username = "admin";

/*
* Haslo do dude
*/
$password = "admin";

/*
* Adres url do dude po http
*/
$url = "http://1.1.1.1:80";

/*
* Lokalizacja wynikowego pliku
*/
$file="/etc/smokeping/config.d/dude.conf";

/*
* Logowanie do dude po http
*/

$html = downloadContent($url . "/dude/main.html", "user=" . $username . "&password=" . $password . "&process=login");

/*
* Sprawdzenie czy login i haslo sa poprawne.
* Jezeli login i haslo sa poprawne w zawartosci $html bedzie pole formularza logowania
* $sprlogowanie zwroci pusty wynik
*/
if(false !== strpos($html, ‘<input type="password" name="password">’))
{
die(‘Bledny login lub haslo!’);
}

/*
* Odczyt listy urzadzen
*/
$html = downloadContent($url.’/dude/main.html?page=devices’);
$x = 0;
$y = 0;
$dev = array();
$dom = new DOMDocument();

foreach(preg_split("/((\r?\n)|(\r\n?))/", $html) as $line)
{
$find1="2";
$find1=strpos(trim($line),"td align=\"right\">");

if($find1==1)
{
if($y==1)
{
@$dom->loadHTML(‘<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head><body>’.$line.'</body></html>’);
$nodes = $dom->getElementsByTagName(‘td’);

foreach($nodes as $link)
{
$dev[$x][‘stan’]=$link->nodeValue;
}

$y=0;
}

$find2=strpos(trim($line),"device_info");

if($find2>0)
{
@$dom->loadHTML(‘<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head><body>’.$line.'</body></html>’);
$nodes = $dom->getElementsByTagName(‘a’);

foreach($nodes as $link)
{
$dev[$x][‘nazwa’]=$link->nodeValue;
$dev[$x][‘href’]=$link->getAttribute(‘href’);

$href=trim($dev[$x][‘href’]);
$startid=strpos($href,"id");
$stopid=strlen($href);
$id=”;

for($d=$startid+3;$d<=$stopid-1;$d++)
{
$id.=$href[$d];
}

$dev[$x][‘id’]=$id;

/*
* Odczytywanie szczolowych informacji o urzadzeniu m.in. adres IP
*/
$html3 = downloadContent($url.$dev[$x][‘href’]);

foreach(preg_split("/((\r?\n)|(\r\n?))/", $html3) as $line3)
{
$find3="2";
$find3=strpos(trim($line3),"name=\"address\"");

if($find3==37)
{
@$dom->loadHTML(‘<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head><body>’.$line3.'</body></html>’);
$nodes = $dom->getElementsByTagName(‘input’);

foreach($nodes as $link)
{
$dev[$x][‘ip’]=$link->getAttribute(‘value’);
}
}
}
}

$y=1;
}

$find4=strpos(trim($line),"map_info");

if($find4>0 || $find4!="")
{

@$dom->loadHTML(‘<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head><body>’.$line.'</body></html>’);
$nodes = $dom->getElementsByTagName(‘a’);

foreach($nodes as $link)
{
$dev[$x][‘mapa’]=rewrite($link->nodeValue);
}

$x++;
}

$find1="2";
}
}

$x=0;
$tab = array();

foreach($dev as $line)
{
$tab[$line[‘mapa’]][$x][‘nazwa’]=$line[‘nazwa’];
$tab[$line[‘mapa’]][$x][‘ip’]=$line[‘ip’];
$tab[$line[‘mapa’]][$x][‘href’]=$line[‘href’];
$tab[$line[‘mapa’]][$x][‘stan’]=$line[‘stan’];
$tab[$line[‘mapa’]][$x][‘id’]=$line[‘id’];

$x++;
}

/*
* Tworzenie pliku i otwarcie do zapisu
*/
$fp = fopen($file, "w");

if(false === $fp)
{
die(‘Nie udalo sie utworzyc pliku w lokalizacji "’ . $file . ‘"’);
}

/*
* Sortowanie po kluczu (menu glowne)
*/
ksort($tab);

$dane="";

foreach($tab as $numer => $line)
{
$plus=preg_replace("/[^A-Za-z0-9 _-]/", ”, $numer);
$menu1=preg_replace("/[^A-Za-z0-9 _-]/", ”, $numer);
$title1=$numer;

$dane.="";
$dane.="
+ ".$plus."
menu = ".$menu1."
title = ".$title1."
";

/*
* Sortowanie podmenu po nazwie
*/
$line=stw($line, array(‘nazwa’=>SORT_ASC));

foreach($line as $line2)
{
$pp=preg_replace("/[^A-Za-z0-9]/", ”, $line2[‘id’]);
$menu2=$line2[‘nazwa’];
$title2=$line2[‘nazwa’];
$ip=$line2[‘ip’];

$dane.="
++ ".$pp."
menu = ".$menu2."
title = ".$title2."
host = ".$ip."
";
}
}

/*
* Zapisanie danych
*/
fputs($fp, $dane);

/*
* Zamknięcie pliku
*/
fclose($fp);

/*
* Zmiana uprawnień do pliku
*/
chmod($file,0755);

/*
* Reboot smokepinga
*/
exec("/etc/init.d/smokeping restart",$output);

[/php]