기본 콘텐츠로 건너뛰기

내부 IP 장비 yum update하는 하기!!! (proxychains + ssh tunnel)

내부 IP를 사용하는 장비를 최신커널이나 시스템 update하는 경우 ssh tunnel를 이용하는 방법과 iptable를 이용하여 route 하는 방법이 있음. 내부 network이 제어가능 하면 iptable을 이용하는 경우가 더 쉽고 편하지만. 일단 가능하지 않는 경우 ssh tunnel을 이용 update하는 방법입니다.  proxychains 설치. http://proxychains.sourceforge.net/ $ ./configure $ make $ make install A ( 외부IP1 , 내부IP1 ) B ( 내부IP2 ) 1. A 장비 ( 54321 ) 포트 (tunnel 생성) ssh -f -N -D 54321 localhost ssh 아이디2@B내부IP2 -R6666:localhost:54321 2. B장비 (proxychains 환경설정) Setup /etc/proxychains.conf to use the forwarded socks proxy: [ProxyList] # SSH reverse proxy socks4  127.0.0.1 6666 3. 설치확인 (dns lookup test) $ proxyresolv ftp.daum.net |S-chain|-<>-127.0.0.1:6666-<><>-4.2.2.2:53-<><>-OK 211.62.252.36 4. 시스템 업데이트 ( 업데이트) $ proxychains yum update $ proxychains apt-get update 5. 오류처리 ERROR: ld.so: object 'libproxychains.so.3.0.0' from LD_PRELOAD cannot be preloaded: ignored. 이런 메시지가 발생하면 proxychains,   proxyresolv을 vi로 LD_P...

glog 를 이용하여 SIGSEGV 스택정보 파일로 저장하기.

unix계열에서  c/c++로 코딩하면 전체 core파일을 용량때문에 남기기 힘든데 glog를 사용하면 sigsegv가 발생해도 stack정보를 남길 수 있는 function을 제공합니다. #include #include #include #include int fd = 0; void write_to_core(const char* data, int size) { write(fd, data, size); } int main(int argc, char *argv[]) { InstallFailureWriter(write_to_core); InstallFailureSignalHandler(); InitGoogleLogging(argv[0]); fd = open("core.txt", O_CREAT | O_WRONLY , 0644); int a = 10 / 0; return 0; } 참고: http://google-glog.googlecode.com/svn/trunk/doc/glog.html

ctags 사용법

소스코드 하위디렉토리 있는 소스코드 분석시 tag를 만들어야하는 makefile에 등록해서 사용하는 방법입니다. tag: rm -rf tags cscope.files find src \ \( -name '*.c' -o -name '*.cpp' -o -name '*.cc' -o \ -name '*.h' -o -name '*.hpp' \) \ -print > cscope.files ctags -L cscope.files 참조:  http://simjesun.blog.me/30092545252 참고:  http://www.iamroot.org/xe/index.php?mid=Lecture&document_srl=42646

svn diff a.c 를 하면 vimdiff로 바로 보이게 하려면

svn diff a.c 를 하면 vimdiff로 바로 보이게 하려면 vimdiff.sh를 만들고 ~/subversion/config 에 diff-cmd를 추가하면 vimdiff로 diff를 확인 할 수 있습니다. $ more ~/bin/vimdiff.sh #!/bin/sh while test $# -gt 2; do shift; done vimdiff $@ $ cat ~/.subversion/config | grep diff-cmd diff-cmd = vimdiff.sh 참고: http://kldp.org/node/52160#comment-20069 1

Oracle Instant Client + sqlldr install

Instant Client Downloads + SQL*Loader 설치 http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 아래와 같이 버젼에 따라서 3가지를 다운로드 합니다. basic, sdk, sqlplus instantclient-basic-linux.x64-11.2.0.3.0.zip instantclient-sdk-linux.x64-11.2.0.3.0.zip instantclient-sqlplus-linux.x64-11.2.0.3.0.zip 설치되어있는 oracle 에서 rdms , nls , sqlldr 를 복사합니다. cp -r /home/oracle/product/10/rdbms ~eek/usr/instantclient_10_2/ cp -r /home/oracle/product/10/nls ~eek/usr/instantclient_10_2/ # 파일 복사 cp -r /home/oracle/product/10/bin/sqlldr ~eek/usr/instantclient_10_2/ # 권한설정 chown -R eek.eek ~eek/usr/instantclient_10_2/ # 환경변수 등록 export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601 export ORACLE_HOME=/home/eek/usr/instantclient_10_2 export ORA_NLS10=$ORACLE_HOME/nls/data

oradiag_??? 로그 생성안되게 하는 방법

cx_Oracle이나 oci로 개발된 프로그램을 사용하다 보면 $HOME에 orgdiag_사용자계정으로 로그가 대량으로 저장되는 경우가 발생합니다. 이런 경우에 로그가 남지 않도록 하던지 아님 다른 경로에 저장하는 방법은  아래와 같은 방법으로 처리할 수 있습니다. 로그 안남기는 방법은. 환경변수에 추가 export TNS_ADMIN=/home/eek/conf/ 해당경로에 sqlnet.ora파일 생성해서 DIAG_ADR_ENABLED=off TRACE_LEVEL_CLIENT=off LOG_FILE_CLIENT=/dev/null 설정값을 추가하면 로그 파일이 생성되지 않음. 자세한 설정 정보는 http://docs.oracle.com/cd/B28359_01/network.111/b28317/sqlnet.htm#BIIDEAFI 참고하세요. 끝.

python xlsx으로 저장하기

openpyxl를 사용하면 간단하게 사용 할 수 있음. 다운 받는곳 http://ericgazoni.wordpress.com/2011/10/31/openpyxl-1-6-6/ https://bitbucket.org/ericgazoni/openpyxl/src sample code #!/usr/bin/env python from openpyxl.workbook import Workbook from openpyxl.writer.excel import ExcelWriter from openpyxl.cell import get_column_letter wb = Workbook() dest_filename = r'empty_book.xlsx' ws = wb.worksheets[0] ws.title = "range names" for col_idx in xrange(1, 40):     col = get_column_letter(col_idx)     for row in xrange(1, 600):         ws.cell('%s%s'%(col, row)).value = '%s%s' % (col, row) ws = wb.create_sheet() ws.title = 'Pi' ws.cell('F5').value = 3.14 print dir(wb) wb.save(filename = dest_filename)