본문 바로가기

it/etc

Golang으로 Synology 연동 Telegram 봇 만들기 재택근무를 하면서 q10에서 타오 나스를 구매했습니다. 주 용도는 마크 서버 및 torrent 머신인데, 헤놀로지 세팅을 하다 보니 욕심이 생겨서 외부에서도 텔레그램 봇을 통해 torrent파일이나 마그넷 링크로 다운로드할 수 있게 했습니다. 여기서는 그 방법을 공유하려고 합니다. 목표 Telegram bot: 예전에 python으로는 만들어본 적이 있는데, 이번에는 Golang으로 만들어 보려고 합니다. Torrent 파일은 disk station의 감시 경로에 넣어주면 되고, magnet은 Synology API(SYNO API)에서 지원하네요. 시놀로지 세팅: Download Station 감시 설정, API 설정, API 연동용 계정 생성 등을 해야 합니다. 그리고 시놀로지에서는 Golang을 지.. 더보기
jmeter를 사용한 가변길이 TCP Binary 패킷 처리 방법 Use Dynamic Binary Packet for JMeter성능 테스트를 위해 가장 많이 사용된다는 Tool인 JMeter을 사용하기로 했습니다.JMeter는 HTTP, HTTPS, FTP, REST, TCP등 다양한 프로토콜을 지원한다고 하는데, TCP Binary 패킷에 대한 송수신 처리 자료는 찾기 힘들었습니다. 여기서 JMeter를 사용한 가변길이 TCP Binary 패킷 처리를 설명합니다.JMeter의 beanShell을 사용해서 송수신 패킷을 만들고, 별도 제작한 plugin을 사용해 TCP 송수신 처리를 할 것입니다.Test 시나리오테스트할 서버는 로컬에 1234 port를 listen하고 있습니다.요청 패킷에 요청 seq가 포함됩니다.요청/응답 header 패킷은 동일합니다.struc.. 더보기
Windows 에서 포트 포워딩 기능 사용하기. VMWare등을 사용하는데, Bridged 모드로 설정하지 않고 (IP 여유가 없거나, 설정하기 귀찮을때..)기본값인 NAT 모드로 설정해두고 아래 명령으로 하시면 됩니다. CMD 창을 관리자 모드로 열고, * Forwarding 설정 > netsh interface portproxy add v4tov4 listenport=80 listenaddress=192.168.0.100 connectport=80 connectaddress=192.168.229.100 * Forwarding 해제 > netsh interface portproxy delete v4tov4 listenport=80 listenaddress=192.168.0.100 * 설명 - listenport: 내 PC에서 Listen할 Port .. 더보기
리눅스 배포판별 docker 설치 방법 Docker 설치공식 문서: http://docs.docker.com/installation/64 bit 기준으로 테스트 해봤습니다. Red Hat Enterprise 6.2공식 문서에는 rhel 7 부터 지원하지만, 아래 방법으로 설치 가능yum 저장소를 centos 로 수정.rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm vi /etc/yum.repos.d/epel.repo # cd /etc/yum.repos.d # cp rhel-debuginfo.repo rhel-debuginfo.repo.bak # vim rhel-debuginfo.repo baseurl=http://download.fedoraprojec.. 더보기
최적의 makrdown editor는 sublime text OSX에서 다시 Windows환경으로 넘어오면서, makrdown editor를 찾아 해맸다. 결론은 OS 구분없이 Sublime Text 였다. [Sublime Text 3] + [MarkdownEditing] 플러그인 + [OmniMarkdownPreviewer] 플러그인 + [Table Editor] 플러그인 조합이다. 문제는 Windows 환경에선 한글 입력창이 이질감이 느껴진다는 것인데, 그것도 [IMESupport] 플러그인으로 완벽하진 않지만 쓸만해 졌다. 하지만, OS 차이로 일부 단축키가 바뀐건 아직 적응이 잘 안된다. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=.. 더보기
문자열 치환 하나의 파일에서 치환 vi 사용:%s/old/new/g sed 사용sed -i 's/old/new/g' ./file.html 여러 파일을 한꺼번에 치환find ./ -name "*.html" -exec sed -i 's/old/new/g' {} \; 특정 파일만 제외하고 치환find . ! \( -name '*.jar' -prune \) -exec sed -i 's/old/new/g' {} \; 더보기
shell script로 구현하는 URL 상태 체크 Shell Script로 특정 URL의 상태를 체크하고자 합니다. curl을 이용하면 간단 하네요.curl은 결과를 exit code로 리턴 합니다.exit codes list는 아래 man page를 참고하세요.( http://curl.haxx.se/docs/manpage.html ) #! /usr/bin/sh function check { if [ $? -ne 0 ] ; then echo "Error occurred getting URL $1:" if [ $? -eq 6 ]; then echo "Unable to resolve host" fi if [$? -eq 7 ]; then echo "Unable to connect to host" fi exit 1 fi } curl -s -o "/dev/nul.. 더보기
shell script로 구현하는 multi tail multi tail 유틸은 이미 있습니다. http://www.vanheusden.com/multitail/ 하지만, 설치를 해야 하죠 간단하게 shell script로 구현 하는 방법이 있어서 소개 합니다. $ vi multitail.sh #!/bin/ksh function sig_int { echo 'sig_int' kill `jobs -p` } for file in "$@" do tail -f $file & done trap 'sig_int' 2 wait 이상입니다. 더보기
솔라리스 메일 전체 삭제 솔라리스에서 메일 전체 삭제 벙법.콘솔에서 아래와 같이 입력하면 된다. $ printf "d*q"|mailx -N [출처] http://www.unix.com/unix-dummies-questions-answers/38598-delete-all-mails-solaris.html 더보기
CVS Commit 로그를 남겨보자 -. 요구사항 파악 및 설계 적용 패키지 작성을 위해 수정된 파일 목록을 추출 할 방법을 찾아 보기로 했다. 업무 때문에 소스 관리를 CVS 로 하고 있다. CVS의 단점은 개별 파일이력은 확인 할 수 있는데, 수정된 파일 목록을 뽑기가 쉽지 않다는 것이다. 구글링을 해보니 CVS에서 Commit 시점에 뭔가 처리할 수 있다는 것을 알았다. 먼저, CVS 서버에 접속해서 저장소의 CVSROOT 디렉토리를 보자 -rwxrwxr-- 1 cvs cvs 544 4월 22 09:23 checkoutlist -rwxrwxr-- 1 cvs cvs 694 3월 21 2009 checkoutlist,v -rwxrwxr-- 1 cvs cvs 882 4월 26 16:03 commitinfo -rwxrwxr-- 1 cvs c.. 더보기