bash
명령을 사용하여 MySQL에서 사용자 계정 세부 정보를 가져오는 명령이 있습니다.
select creationdate from users;
이것은 나에게 다음과 같은 결과를 제공합니다
Name Account Creation Date Mobile
User1 2015-06-18 16:00:00 29292922
User2 2015-06-18 16:06:00 56896906
User2 2015-06-18 16:08:00 16842146
이제 내가 원하는 것은 각 사용자를 현재 날짜 시간과 일치시키고 ACCOUNT
생성 CREATION
날짜 DATE
가 5분 미만인 경우 유사한 계정을 나열해야 합니다.
New accounts are user2 and user3
그런 것. 이렇게 하면 이제 계정이 등록되었음을 알리는 문자 메시지를 보낼 수 있습니다.
답변1
mysql
당신을 위해 이 일을 할 수 있어야 합니다. 하지만 출력을 사후 처리해야 한다면 다음을 사용합니다.
perl -MTime::Piece -lne '
if (/^(\S+)\s+(\d{4}\S+\s+\S+)/ and
$t = Time::Piece->strptime($2, "%Y-%m-%d %T") and
time - $t->epoch <= 5*60
) {print $1}'
사용자 이름에는 공백 문자가 포함될 수 없다고 가정합니다.
답변2
GNU awk를 사용하면 다음을 수행할 수 있습니다.
awk '
{ time = $2 " " $3; gsub(/[-:]/, " ", time); t = mktime(time) }
(systime() - t) <= 300 {print $1}
'
답변3
이 스레드를 업데이트하는 것을 잊었습니다. 그날 다음을 사용하여 솔루션을 찾았습니다.
mysql -u$SQLUSER -p$SQLPASS -e "use $DB; select creationdate,login,package,expirydate,mobile from users WHERE creationdate >= NOW() - INTERVAL 5 MINUTE;"