내가 맥으로 뭘 하고 있는지 로그 남기기 (애플스크립트)

예전부터 내가 컴퓨터로 뭘 하고 있는지 기록하는 스크립트를 꼭 만들고 싶었는데 어째 쉽지가 않아 차일피일 미루다가, 작년에 OSX를 처음 쓰면서 애플스크립트로 하나 만들었다.

애플스크립트는 이걸 만들면서 처음 써 봤는데, 전혀 적응이 되지 않아서 결국 이게 처음이자 마지막이 되었다.

이 스크립트의 전체 소스코드는 여기서 받을 수 있다.

만들기

내가 원하는 것은 매우 간단하다. 매 분 내가 사용하고 있는 애플리케이션에 대한 정보를 로그파일에 기록하는 것이다. 이 때 ip와 ssid(무선인터넷 ap 이름)도 같이 기록한다. 내가 어디서 컴퓨터를 사용했는지 추측할 수 있게 해주는 단서가 되게 때문이다.

이 요구를 해결하기 위한 나의 전략 역시 단순하다. 현재 사용중인 애플리케이션에 대한 정보를 한줄로 표준출력하는 스크립트를 작성하고, 매 분 실행되도록 cronjob으로 등록하는 것이다.

현재 쓰고있는 애플리케이션은 frontmost가 true일 것이다. 그 애플리케이션의 이름을 얻어 frontApp으로 저장한다.

tell application "System Events"
    set frontApp to name of first application process whose frontmost is true
end tell

윈도 타이틀도 유용한 정보다. 웹브라우저라면 거기에 웹사이트에 타이틀이 뜨니 특히 좋다. 아까 얻은 애플리케이션의 front window를 얻고 그 윈도의 타이틀을 가져와서 window_title로 저장한다.

tell application frontApp
    if the (count of windows) is not 0 then
        set window_title to name of front window
    end if
end tell

날짜, ip, ssid는 다음의 방법으로 얻었다. 애플스크립트에서 다시 쉘명령을 실행하다니 조금 지저분하다.

set theDate to (do shell script "date '+%Y/%m/%d-%H:%M'")
set theIp to do shell script "/sbin/ifconfig en0 | grep 'inet ' | awk '{print $2}'"
set theSsid to do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I | grep -E '\<SSID\>' | awk '{print $2}'"

표준출력은 쉽다. 그냥 변수 이름을 그대로 쓰면 된다. 문자열끼리 연결할때는 &를 쓴다.

"a4 " & theIp & " " & theSsid & " " & theDate & " " & frontApp & ": " & window_title

이렇게 스크립트를 만든 뒤, 1분에 한번씩 실행하여 표준출력된 결과를 파일에 추가하도록 하면 완성이다. crontab -e 해서 크론탭 편집에 들어가 다음과 같은 식으로 기록되도록 한 줄을 추가한다. (에러메시지도 기록이 남게 하고 싶으면 뒤에 2>> ~/work.error.log 식으로 덧붙여준다)

* * * * * osascript ~/bin/worklog.osa >> ~/work.log

ps. 이름을 worklog라고 붙여놓았는데 이거 아무리 봐도 worklog하곤 다르다. 좋은 이름이 없을까?

다음편 예고

안타깝게도 애플스크립트니까 OSX에서만 돈다. 다음번엔 같은 일을 하는 리눅스용 파이썬 스크립트에 대해 포스팅해보겠다. 리눅스용은 몇가지 사정으로 인해 좀 더 복잡하다.

내가 맥으로 뭘 하고 있는지 로그 남기기 (애플스크립트)”에 대한 3개의 생각

  1. 치과의료기기,치과용품,기공기기 전문 쇼핑몰 zetadental 입니다.우리는 치과재료 전문업체로서 세계20여개의 대형제조업체과 련합하여고객님에게 품질이 좋고 가격이 착한 최신 치과재료,치과용품,치과위생사기구와 기공기기를 치과인들에게 제공하고 있습니다. 우리는 중국의 광동,상해,홍콩등 교점외에 미국,캐나다,프랑스,독일,호주등 지역에도 자회사를 구축하여 보다 효율적인 서비스가 실현되고 있습니다.에어스케일러,광조사기,화이트닝장치 등 수백종류의 상품을 준비하여 여러분의 치료에 도움이 되는 제품과 서비스를 제공해드리겠습니다.

    좋아요

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중