Архив рубрики: PHP

Сохранение конфигурации Dlink в файл через SNMP

Иногда требуется на всякий случай иметь бекапы конфигурации работающих в данный момент свичей. Один из вариантов — поднимаем сервер TFTP и просим свич сохранить свою конфигурацию на него.

Пример скрипта:

      PutLog("-- Стартуем сохранение конфиги у $device_name");    
      $cm="snmpset -v2c -c X-Files $ip 1.3.6.1.4.1.171.12.1.2.18.1.1.3.3 a $tftpserver";
      PutLog("--- устанавливаем tftp сервер: $cm");    
      $rez=`$cm`;      
      if (strripos($rez,"IpAddress")>0){
        $cm="snmpset -v2c -c X-Files $ip 1.3.6.1.4.1.171.12.1.2.18.1.1.5.3 s $device_name.cfg";
        PutLog("---- устанавливаем имя файла: $cm");              
        $rez=`$cm`;      
        if (strripos($rez,"STRING")>0){
            $cm="snmpset -v2c -c X-Files $ip 1.3.6.1.4.1.171.12.1.2.18.1.1.8.3 i 2";
            PutLog("----- устанавливаем конфиг для сохранения: $cm");              
            $rez=`$cm`;                  
            if (strripos($rez,"INTEGER")>0){
                $cm="snmpset -v2c -c X-Files $ip 1.3.6.1.4.1.171.12.1.2.18.1.1.12.3 i 3";
                PutLog("----- сохраняем конфиг : $cm");              
                $rez=`$cm`;                  
              if (strripos($rez,"INTEGER")>0){                
                  sleep(10);
                  //переименуем полученный файл
                  $newname=$device_name.Date("-Y-m-d-H-i");
                  $rez=`mv /var/tftp/$device_name.cfg /var/tftp/$newname.cfg`;
                   echo "$rez\n";
                  //добавим в архив
                  $rez=`zip /var/tftp/$device_name.zip -m /var/tftp/$newname.cfg`;
                  echo "$rez\n";
              } else {
               PutLog("-- ОШИБКА сохранения конфига");    
            };
            } else {
            PutLog("-- ОШИБКА установки конфига");    
            };            
        } else {
        PutLog("-- ОШИБКА установки имени файла");    
      };
      } else {
        PutLog("-- ОШИБКА установки tftp сервера у $device_name");    
      };

Перебор каждого дня месяца за выбранный период, с выделением последнего дня месяца

Задача: перебрать каждый день, в выбранном периоде, отдельно выделяя последний день месяца.

Решение:

echo "<h1>Расчет за период с $dtstart по $dtend</h1>";

$date=$dtstart;   
while($date <= $dtend){
    echo "$date<br/>";    
    if (trim($date)==getLastDayOfMonth2(trim($date))) {
	echo "<b>$date</b><br/>";	
    };
  $date = date('Y-m-d', strtotime($date.' + 1 days'));       
};
function getLastDayOfMonth2($dateInISO8601){    
    $date = explode('-', $dateInISO8601);
    $zx=$date;
    if ( !checkdate ( $date[1] , $date[2] , $date[0] ) )
        return false; 
    $start = new DateTime( $dateInISO8601 );
    $end = new DateTime( $dateInISO8601 );
    $end->add( new DateInterval( 'P2M' ) );
    $interval = new DateInterval( 'P1D' );
    $daterange = new DatePeriod($start, $interval, $end);
    $prev = $start;
    foreach ($daterange as $date){
        if ($prev->format('m') != $date->format('m') )
            return  $zx[0]."-".$zx[1]."-".(int) $prev->format('d'); 
        $prev = $date;
    }    
    return false;
}


Новый проект — «Маячек»

Более подробное описание, на странице проекта. А если в кратце, то сервис с открытым кодом позволяющий отслеживать местоположение устройства Android. Состоит из двух частей: приложение под Андроид и отдельный сайт http://маячек.грибовы.рф

Выезжающие (выскальзывающие) панели на Jquery

Сначала хотел написать сам, но попалась на глаза хорошая основа — плагин для jquery liKnopik. После легкой доработки напильником, вполне стал годен для использования. Что доделано?

  • теперь не конфликтует с bootstrap
  • есть возможность изменения содержимого выезжающих панелей «на лету»

Демо / Скачать

Вставка QR кода в текст RTF

Ну примерно так.. Пришлось еще конвертировать из png в jpg, т.к. png рандомно не распознается Microsoft Word как картинка.

CreateQr($blibase,$number,abs($rec),$number.'qr_pay.png');
	
	png2jpg	("/tmp/$number"."qr_pay.png","/tmp/$number"."qr_pay.jpg",100);
	
	$b=fopen("/tmp/$number"."qr_pay.jpg","rb");    
	$imgData=getimagesize("/tmp/$number"."qr_pay.jpg");
	$newImage="";
	$newImagePre="{\\*\\shppict{\\pict \\jpegblip \\picw".$imgData[0]." \\pich".$imgData[1]." \\wbmbitspixel24 ";
	while (!feof($b)) {
	    $newImage.= fgets($b);
	}
	$hex=bin2hex($newImage);
        $imgDat=$newImagePre.$hex."}}"; 
	//    $temp .$imgDat;
	$temp = str_replace("!qrkode!", $imgDat, $temp);

function png2jpg($originalFile, $outputFile, $quality) {
    $image = imagecreatefrompng($originalFile);
    imagejpeg($image, $outputFile, $quality);
    imagedestroy($image);
}