간만의 휴식에 한일들

 3월 1일부터 새로운 회사에 입사하게 되어서 2월은 약 한달 정도 쉬게 되었다. 쉬기 전 까지는 이것도 하고 저것도 하고 계획도 많았지만 막상 쉬게 되면 이런 저런 제약 때문에 생각대로 되지 않는다. 특히 꼬맹이 학교에서 돌아오는 시간이 있으니 그에 맞춰 집에 있으려면 할 수 있는 것도 그렇게 많지 않은 것 같다. 그나마 한 것 들이라고는 영화본 것 밖에 없는 듯. 슬램덩크, 아바타2, 앤트맨&와스프 퀀텀 매니아. 요렇게 3개의 영화를 보고 왔다. 슬램덩크 추억의 만화책을 애니화 한 만화 영화. 뭐 나쁘지 않은 영화 였다. 전체적으로는 약간 루즈한 느낌이 들지만 마지막 클라이막스 부분에서는 음악과 함께 좋은 연출을 본 듯 한 느낌이다. 두번 본 사람도 있다고 하는데 그 정도 까지는 아닌 듯. 아바타2 볼까 말까 고민한 영화. 이미 뒷편 들까지 어느정도 촬영이 끝났다는 이야기를 듣고 보기로 결정. 처음으로 4dx 영화관에서 보았는데 의자의 흔들림 등 그 외 효과들이 그렇게 효과가 있다고는 생각을 못하겠다. 가~끔씩 타이밍이 딱 맞을 때도 있지만 오히려 신경이 쓰여서 영화에 집중 못하는 경우도 꽤 있었던 듯 하다.  화면에 집중하고 싶어서 더빙판으로 관람 했는데 더빙 판은 4dx밖에 없드라.. 내용도 괜찮고 그래픽도 괜찮고 눈도 즐거웠다. 다음 편이 나오면 또 보러 가고 싶다. 앤트맨&와스프 퀀텀 매니아 인터넷의 평가는 좋은편이 아닌 듯 하다. 이것도 4dx로 관람 하고 왔는데 나쁘지는 않은 듯 하다. 딱 거기까지. 양자 세계에 또하나의 우주가 존재한다는 가설은 이전부터 있었던 이야기. 결국 우리가 살고 있는 지구도 누군가의 양자 세계 일 수도 있다는 것.  하지만 양자 세계의 묘사가 뭐랄까 스타워즈 짝퉁이라는 느낌이 강하게 든다. 스타워즈를 본 적 없는 사람에게는 신선한 충격으로 다가 올지도 모르겠다. 영화를 볼때는 개연성같은걸 신경 쓰면 지는 거다. 그냥 무지성으로 생각하지 말고 시간 때우기로만 본다면 나쁘진 않은 듯 하지만 하나씩 따지기 시작

rsyslog에서 facility 없이 로그 내용 분리하기

 제목이 참 쓰기 애매한데 간단히 말하면 퍼실리티 없이 rsyslog에 전송된 로그 파일을 messages에 출력하지 않고 다른 파일로 따로 출력 하는 방법이다. wifi 라우터에서 syslog설정이 가능하기는 한데, facility설정이 없어서 어떻게 해야 하나 고민 하던중에 인터넷에서 찾은 해결방법을 기록한다.   알고보니 rsyslog 에서도 여러가지 옵션이 제공되고 있다. 현재 전송되고 있는 wifi 라우터는 총 3대로서 WDS기능을 이용하고 있지만 여러가지 사정으로 인해 모두 내부 IP를 지정해 놓은 상황이다. rsyslog.conf 를 변경해도 되겠지만, /etc/rsyslog.d/ 밑에 확장자를 conf로 해서 넣어놓으면 알아서 읽어들여주니 rsyslog.d밑에 파일을 작성했다. :fromhost-ip, isequal, "192.168.1.2" -/var/ log /airstation/WAPM -1166 D -1.l og :fromhost-ip, isequal, "192.168.1.3" -/var/ log /airstation/WAPM -1166 D -2.l og :fromhost-ip, isequal, "192.168.1.4" -/var/ log /airstation/WAPM -1166 D -3.l og fromhost-ip 로 전송되는 IP를 구분하여 지정한 파일에 출력하는 방식인데, 위와 같이 한다면 messages에도 중복 출력되어 버린다. 해결방법은 아래와 같이 키워드를 추가하는 법이 있다. 처음에는 & ~ 를 지정하였으나 ~ 키워드는 없어질 예정이라 stop으로 대체해 주었다. :fromhost-ip, isequal, "192.168.1.2" -/var/ log /airstation/WAPM -1166 D -1.l og & stop :fromhost-ip, isequal, "192.168.1.3" -/va

Windows의 제품키 표시해주는 Script

 가끔씩 윈도우즈의 제품키를 확인할 필요가 있다. 특히나 회사에서 PC들을 관리할때 이 PC가 대체 어떤 제품키를 이용하고 있는 중인지 파악이 안될때 매번 레지스트리 편집기를 열어서 확인하는게 귀찮은 작업이었다. 구글링으로 검색하여 보니 아니나 다를까 같은 고민을 하는 수많은 유저들에 의해서 이미 많은 vbs스크립트가 제작되어 있었기에 그중에 아무거나 하나 골라 백업용도로 저장해 놓도록 한다. Windows7이하의 경우 Set WshShell = WScript.CreateObject( "WScript.Shell" ) KeyPath = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId" MsgBox ExtractKey (WshShell.RegRead(KeyPath) ) Function ExtractKey (KeyInput) Const KeyOffset = 52 i = 28 CharWhitelist = "BCDFGHJKMPQRTVWXY2346789" Do Cur = 0 x = 14 Do Cur = Cur * 256 Cur = KeyInput(x + KeyOffset) + Cur KeyInput (x + KeyOffset) = (Cur \ 24 ) And 255 Cur = Cur Mod 24 x = x - 1 Loop While x >= 0 i = i - 1 KeyOutput = Mid(CharWhitelist, Cur + 1 , 1 ) & KeyOutput If ((( 29 - i) Mod 6) = 0 ) And (i <> - 1 ) Then

phpでAWSのstatusページから異常を検知してchatworkへ通知する

 Amazonは「 http :// status . aws . amazon . com 」から AWS のサービス状況を確認できるページを提供している。ブラウザでアクセスすると各リージョンのサービス簡単に確認できる。そして、 RSS にも対応しているので RSS フィーダーを使ってサービスに異常が発生した場合、通知してくれる。   今回はphpを使ってRSSフィーダーを定期的にチェックし、新しいアイテムがフィーダーされたらそれを確認する仕組みを作ってみた。たまにしか起きないけど1回起きたら大きい影響を与えるので定期的に確認した方が絶対いい。   確認対象サービスはリージョンと関係ないグローバルサービスとリージョンに装束されるサービので2つに分けた。別に1つにしてもいいけど、RSSフィーダーのURLが微妙に違うので分けただけ。   $awspub = array ( "cloudfront" , "route53" , "route53domainregistration" , \ "import-export" , "management-console" , "marketplace" , \ "awswaf" ); $awsreg = array ( "apigateway" , "cloudwatch" , "dynamodb" , "ecr" , "ecs" , "ec2" , \ "elb" , "emr" , "elasticache" , "glacier" , "kinesis" , "rds" , \ "route53" , "sns" , "sqs" , "s3" , "vpc" , "autoscaling"

AWS에서 zabbix를 이용한 autoscaling ec2 자동등록/자동삭제

  zabbix가 오픈소스로서 참 많은 기능을 제공 하고 있는데, jira와 마찬가지로 되는건 많은데 가려온 곳은 아슬아슬하게 피해가는 재주를 가지고 있는 듯 하다. 필요한 기능은 거의 다 있는데 될듯 하면서도 안되는데 jira와 zabbix. 특히 AWS에서 제공하는 AutoScaling Group을 이용한 EC2의 scale out/in 을 이용하면 zabbix에서 기본으로 제공되는 기능으로는 EC2를 제대로 모니터링 할 수가 없다. 어찌어찌 Host 등록은 한다 하더라도, EC2가 scale in 되어 terminated되었을 경우엔, 그냥 그대로 zabbix agent 와 통신할 수 없다는 에러를 내뿜으며 방치되어 버린다. 인터넷을 뒤져보아도 깔끔하게 처리할 수 있는 방법이 없고, 스크립트와 다른 기능들을 이용하여 scale out/in 에 의한 EC2의 자동등록/자동삭제를 구현하고 있었다. 그러나 이마저도 실제로 해보니 메뉴가 틀리거나 옵션이 없거나, 실제로 동작하지 않는 경우도 많았다. 최종적으로는 여러가지 정보를 취합하여 실제로 동작하는 방법을 찾아 냈으니 참고 삼아 이곳에 남기도록 한다. 시행착오 auto discovery 기능을 시도 해보았지만, 24bit 네트웍에 대해 15분 이내로 처리가 끝나지 않아, 다음 discovery가 계속하여 지연되는 현상이 발생했다. 15분 이면 terminated된 인스턴스에대해 agent 통신 에러가 발생하는 타이밍이기 때문에 유효한 방법이 아니라고 생각되어 포기하였다. ※ zabbix version : 4.0TLS ※ 특별한 설정내용이 없는 항목은 디폴트값이나 환경에 맞추어 적절히 설정할 것   zabbix_agentd.conf 먼저 ec2의 zabbix_agentd.conf 파일을 수정해 줄 필요가 있다. //ec2의 instance id를 얻기위해 ec2에서 meta-data를 조회한다. //meta-data조회를 위한 curl명령어 실행을 위해 지정 EnableRemoteC

AWSの放置されたEBSをchatworkへ定期的に通知

  毎日ec2やamiを作成/削除を繰り返している環境では気付かないうちに放置されているEBSが増えてくる。考えられる原因としては色々あるけど大きくは以下の2つではないかと思っている。 AMIからEC2を起動する場合の話だけど、AMI作成時に「EBSをインスタンス削除時に一緒に削除する」というオプションにチェックしなかった場合、そのAMIから起動したEC2を削除するときは毎回そのEBSが残ってしまう 不要になったらAMIを削除するとAMIに紐づいているEBSやスナップショットは削除されないらしい。定期的に不要AMIを方付ける仕組みを採用しているなら定期的に放置EBSも増えるはず。 なので以下のスクリプトを作成して定期的にチャットワークに通知するようにした。 #!/usr/bin/php <? $query= "/usr/local/bin/aws --region ap-northeast-1 ec2 describe-volumes --filters Name=status,Values=available" ; $result=json_decode(`$query`); put_msg($result); function put_msg ($obj) { $TOKN= "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ; $CWEP= "https://api.chatwork.com/v2/rooms" ; $RMID= "XXXXXXXX" ; $now=time(); $ebsinfo= "" ; $cntebs=count($obj->Volumes); if ($cntebs > 0 ) { for ($i= 0 ; $i<count($obj->Volumes); $i++) { $cy=substr($obj->Volumes[$i]->CreateTime, 0 ,

sftp에서 파일과 디렉토리의 ls 결과에 대해

sftp로 파일을 전송하다가 조금 이상한 일을 겪었다. sftp로 서버에 접속한 후 파일을 전송하고 디렉토리를 “ls -l” 로 확인했을 때와 디렉토리내의 파일을 직접 “ls -l”로 확인했을때, 파일의 timestamp가 틀리게 나오는 걸 확인했다. sftp 클라이언트와 sftp 서버 쪽 timezone을 확인 해 본 결과 sftp 클라이언트는 timezone이 Asia/Tokyo 였고, sftp 서버쪽의 timezone은 UTC로 설정되어 있는게 이유가 아닐까 싶어 확인을 해 보았다.   timezone 변경과 확인 먼저 서버쪽에 ssh 로그인 후 timedatectl 로 확인해 본결과 역시나 UTC로 설정되어 있었다. timedatectl set-timezone Asia/Tokyo 명령어로 서버쪽 timezone도 클라이언트와 동일하게 설정해 주니 ls -l 로 디렉토리와 파일을 지정했을때 timestamp 가 엉뚱하게 나오는 현상은 해결 되었다.  그런데 문제는 해결 되었는데 도대체 왜 이런 현상이 발생하는지 이해가 안간다. 디렉토리와 파일 모두 timestamp 가 동일하게 나온다면 그러려니 하겠는데 디렉토리와 파일에 대해 ls -l 을 실행한 결과가 다르게 나온다는건 조금 이해가 되지 않는다. 인터넷을 검색해 보아도 특별히 보고된 issue 같은 건 없는 듯 하니… 소스 파일을 직접 검색해 보는 수 밖에 없을려나.   sftp 소스 분석 sftp 의 소스 파일은 어디에서 받을 수 있을까. 검색 결과   https :// www . openssh . com /   에서 다운 받을 수 있었다. 미러 리스트로부터 적당한 링크를 클릭하여 wget 으로 openssh-8.0p1.tar.gz 파일을 다운 받아 압축 해제를 하고 소스를 확인 하였다. 관련 있는 함수는 sftp-common.c 파일의 ls_file()과 sftp-client.c의 do_readdir() 함수 정도 일려나. do_lsreaddir(struct sft

맥북에서 GoPro9 바로 연결하여 동영상 다운받기

 gopro9을이용중인데, 전원을 연결하였을 경우 자동으로 업로드 되도록 설정을 해놓았지만 극악의 업로드 속도로 포기. 그렇다고 매번 메모리카드를 뺏다가 끼웠다가 하는 것도 귀찮아서 맥북에서 어떻게 바로 동영상을 다운 받을 수 있는지 확인한 결과를 적는다. 준비작업 먼저 GoPro9의 USB설정을 조금 바꾸어 주어야 한다. 설정에서 기본설정 메뉴 말고 연결 메뉴로 들어가면 USB접속을 설정하는곳이 있는데 기본으로 Gopro Connect가 설정되어 있다. USB 접속을 Gopro Connect에서 MTP로 바꾸어 준다. 그렇지 않으면 파인더에서 내기기에 Gopro가 표시되지 않는다. 접속과 다운로드 설정을 변경하였다면 USB-C 타입 케이블을 이용하여 Gopro와 맥북을 연결한 후, 파인더를실행한다. 파인더에서 홈으로 이동하면 "그림"이라는 디렉토리가 표시 되니 더블클릭하여 이동한다. 그 안에 "Photos Library"가 있으니 다시 더블클릭한다. 그럼 왼쪽 패널에 내 기기로서 Gopro가 표시되니 맥북으로 옮기고 싶은 동영상을 선택하여 복사한다. USB접속 설정을 MTP로 변경하지 않으면 내기기가 표시되지 않으니 주의.