2013-04-16 4 views
0

을 뺀는 좀 시스코 라우터를 가지고, 그리고 다른 것들 사이에 로그 파일을 벗고 일정 시간 동안 데이터베이스에 저장됩니다 스크립트를 기대합니다.복잡한 날짜 함수 - 비교

내가 가진 문제는 NTP가없고 그 중 일부는 꽤 오래 되었기 때문에 배터리가 죽었고 다시 시작하면 석기 시대로 되돌아 가서 석기 시대로 되돌려 보낼 것입니다. 라우터가 바로 후 다시 시작하면 내가 시계 내가 스크립트를 (매일) 실행할 때마다 설정하더라도

는, 로그는 년 전에 발생으로 기록하고 삭제할 수 있습니다.

그래서 내가 무엇을 찾고 다음, 시스템 시간에 쉬 시계를 비교 차이를 해결하고 올바른 시간을 확인하기 위해 로그에 적용하는 영리한 무언가이다.

그것은 조금 복잡하지만 나는 그것이 가장 강력한 방법 생각은 Cisco 것이 형식으로 출력 :

sh clock 
14:43:41.472 UTC Tue Apr 16 2013 

과 그것의 로그 기간이 형식에 있습니다

Jan 7 09:27:14 

누군가가 더 나은 해결책을 생각한다면 나는 모든 귀입니다. 현재 AWK를 사용하고 있지만 Perl이나 PHP 또는 무엇이 좋을까요.

+0

경우는 어떻게? 그것은 24 시간에서 여러 번 다시 시작하면 – choroba

+0

음, 우리는 어쨌든 로그를 잃고,하지만 우리는 아직 정확하게 남아 무엇을위한 시간의 차이를 판단 할 수 있습니다. 라우터를 다시 시작하면 알 수 있습니다. – Soop

답변

2

당신은 당신에게 당신을위한 일을 할 것입니다 PHP strtotime()를 사용하여 시계를 구문 분석 할 수 있습니다. 이것은 그들 (타임 스탬프 그냥 정수) 여기가 당신의 지연이며, 현재 시간 동안 수행 차이를 동일한 타임 스탬프를 반환합니다. 그런 다음 PHP date() function을 사용하여 좋은 형식으로 날짜를 재구성 할 수 있습니다. 예를 들어

는 : 라우터가 여러 번 다시 시작

<?php 
$router_clock = "14:43:41.472 UTC Tue Apr 16 2013"; // retrieve it from the router 
$a_log = "Jan 7 09:27:14"; 

$timestamp_router_clock = strtotime($router_clock); 

$timestamp_system = time(); // this gives the time of the system where the PHP script runs on 

$delay = $timestam_system - $timestamp_router_clock; 

$log_corrected = date("M j s:i:G", strtotime($a_log) + $delay); 
?> 
+0

대단히 고맙습니다. 내 멜론을 왜곡하고있었습니다! – Soop