특정문자열 취합하여 숫자를 센다음 소팅하여 출력 > PHP
PHP

특정문자열 취합하여 숫자를 센다음 소팅하여 출력

조회 32회 댓글 0건

아래는 IP 주소를 취합하여 갯수를 센다음 소팅하고 배열에 쉽게 넣기 위해서 간단하고 급하게? 만들었던것 입니다.

쉘에서 사용하는 방법은 아래 링크를 참고하세요.



  $aList     = array();
  $file      = './wlog_lsit.txt';
  $data      = file_get_contents($file);
  $aLine     = explode("\n", $data);
  for($ii=0; $ii<count($aLine); $ii++)
  {
    $line       = $aLine[$ii];
    preg_match('/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\] \"(\S+) (.*?) (\S+)\" (\S+) (\S+) (\".*?\") (\".*?\")$/',$line, $aMatches);
    // print_r($aMatches); Exit;

    $realIP     = $aMatches[7];
    $aList[$realIP] += 1;

  }
  asort($aList);
  print_r($aList);

  // 100개 이상의 갯수만 출력하기
  $aBadIP     = array();
  foreach( $aList as $ip => $num ) {
    if ( $num < 100 ) continue;

    $ip       = trim(str_replace('"', '', $ip));
    $aBadIP[$ip] = $ip;
  }
  // 배열로 쉽게 넣어주기 위한 출력
  echo "'" . implode("','", $aBadIP) . "'" . PHP_EOL;
 


f08f4a3d7c3248096854e2720bc04fa9_1671327115_186.png
 


프로그램은 간단합니다.

웹로그 파일을 읽어서 IP에 들어 있는 부분을 배열로 중복제거 하고 결과는 100개 미만인것 버리고 이상인것만 별도 출력하는 기능입니다.


* 쉘에서 IP 주소 취합하기

아파치 웹로그에서 IP주소 취합하여 정렬하는 방법 > 리눅스서버 



  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
전체 130건 1 페이지
  • profile_image 오래전 부터 있었지만 외면을 많이 받아 왔다.문제는 배움의 시간인데 그리고 활용성과 지원을 언제 까지 해주느냐의 문제가 된다.또한 PHP로 만들어야 하는데 이는 웹사이트에 특화되어 있기 때문에 꼭 나쁘다는 것은 아니지만 활용성에 대한 문제도 있다.얼마나 많이 사용되지 않는가는 아래 사이트를 보면 알 수 있다. PHP-GTK - DownloadsPPHP 공식사이트의 링크를 타고 들어갔는데 관리가 안되어 GTK2 버전에 대한 소개만 있다.  결론은…
  • profile_image 잘못되었다고 표현 할 수도 있지만 기준을 정해준것이 아니기 때문에 잘못이라고 말하긴 그렇지 않나 싶습니다.한달전과 한달후의 문제 인데요.한달의 기준은 다음과 같습니다. 보통의 한달은: 30일, 31일2월은: 28일, 29일  echo '잘못된 하달전: ' . date('Y-m-d H:i:s', strtotime('2023-03-31 00:00:00 -1 month')) . PHP_EOL;  echo '일자를 사용  : ' . date('Y-m-…
  • profile_image 객체에 대한 생성자와 소멸자에 대한 것입니다.생성자는: 인스턴스 생성될때 자동으로 뭔가 실행 시키고 싶을 때 사용소멸자는: 인스턴스 종료될때 자동으로 뭔가 실행 시키고 싶을 때 사용  // 생성자, 소멸자 테스트용 클래스  class A  {    private $msg3 = '';  // 생성자    public function __construct($msg) {      $this->msg3   = $msg;      echo __…
  • profile_image 테스트를 위한 더미 파일 입니다.대량으로 파일을 전송하는데 얼마정도의 시간이 걸릴지 체크 하여 이 방식으로 사용가능 한지 확인 하는 용도 등으로 사용 될 수 있습니다.  // mkdir dummy_file  $dummyPath  = __DIR__ .'/dummy_file';  $maxFileNum = 20;  for ( $aa=1; $aa<=$maxFileNum; $aa++ ) {    $fileSizeMega   = rand(10,20)…
  • profile_image 실행도중 멈추는 현상은 여러가지가 있을 수 있지만 이번엔 메모리 관련 입니다.Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 196608 bytes)이런 메시지가 나오면서 메모리가 부족하다고 할때 사용하는 옵선에 대한 것입니다.    set_time_limit(0);  ini_set('memory_limit','4096M');  date_defaul…
  • profile_image 특정 데이터에 대해서 세션이 변경되거나 다시 로그인 하거나 여러가지 형태의 데이터를 유지하고 관리 하려면 파일로 저장하거나 대량이면 DB를 사용합니다. 여기서 많지 않은 데이터를 서로 공유하면서 관리를 해야 되는 그런 경우가 있을 수 있는데 이때 사용하면 좋을 것 같아 올려봅니다.예를 들면) 부정사용자나, 또는 특정 패턴을 가진 IP를 차단하거나 하는 등의 정보를 가지고 있다가 처리 하는 것입니다.PHP에서 프로세스간의 데이터를 공유하는 방법으…
  • profile_image 이미지파일인지 문서파일인지 구분등을 하기위해서 mime 값을 가지고 하는 방법도 있지만 일반적으로는 파일의 확장자를 이용해서 비교를 많이 합니다.이때 필요한 부분인데요. 간단한 방식의 파일 확장자만 얻어 내는 함수 입니다.  /**   * 파일 확장자   *   * @param string $file   *   * @return string   *   */  function file_ext( string $file ) : string {    …