IPv6를 이용한 ssh 접속 실패 로그에 아래와 같은 부분이 발견되었습니다. 2001::......:1%12121212 통상 알고 있는 형태와는 다르게 퍼센트(%) 기호가 들어가고 뒤에는 알수 없는 숫자(하지만 항상 같은 숫자인것으로 보아 더미는 아닌)가 출력되어 있습니다. 도대체 뭘까 하는 마음에 이리저리 검색을 해보았는데 관련된 정보가 생각보다 많았습니다. 검색 키워드는 zone id 그중에 나름 꽤 잘 설명이 되어 있는 링크를 아래 첨부합니다. https://en.wikipedia.org/wiki/IPv6_address 아직 IPv6가 익숙하지 않아서 많은 사람들이 알지 못하는 정보인듯 하여 공유하도록 합니다. (링크 중 관련된 부분 첨부)Link-local addresses and zone in..
mips compiler의 버전이 낮다면.. 정말 많은 삽질을 하게 된다. 단언컨대, mips-gcc 4.3이하 버전에서 평범한 시나리오(별 옵션 없이 cmake)로는 절대 컴파일 안된다. 4.7 버전은 되는것 확인했지만, 그 사이의 버전은 확인하지 못했다. compiler 버전을 바꿀수 없는 상황이라면.. 뭐 어쩔수 없이 몇가지 옵션을 꺼주면 된다. 일단 본인의 생각으로는 xtradb와 innodb 두개만 without 옵션으로 꺼주면 된다. (옵션으로 어떻게 disable 시키는지 모르는 사람을 위해 친절히.. 코드 제공) cmake -DXTRADB_OK=1 -DWITHOUT_XTRADB=1 -DWITHOUT_INNOBASE=1 최소한 이정도..누군가 국내외에서 나와 같은 삽질을 하지 않기를 바라는 ..
C 언어에서의 삼항연산자(?:)를 python에서는 어떻게 사용해야 할까요? 아래와 같은 C 코드가 있습니다. printf ("%s", result?"True":"False"); python 코드로는 다양한 방법이 있겠지만 아래와 같이 사용이 가능합니다. >>> result="Test" >>> print "%s" % ("True" if result else "False") True >>> C에 익숙해있다면 어색한 문법이지만, 나름 python 철학을 생각하면.. 가독성이 좋아보입니다.
본 설정은 ubuntu 3.13.0-32 에서 진행했습니다. 1. 설치 sudo apt-get install tacacs+ 2. 서버 재시작 (디버깅 수정이나, 사용자 추가/변경 후) sudo /etc/init.d/tacacs_plus restart 3. 사용자 추가 1) 사용자 설정 파일 /etc/tacacs+/tac_plus.conf 2) 사용자 등록 형태 key = auth_pass # client 와의 공유 암호 user = oops { default service = permit pap = cleartext "oops_01" } 4. 디버깅 1) 비버깅 설정 파일 /etc/default/tacacs+ 2) 내용 수정 DAEMON_OPTS="-d 2048 -C /etc/tacacs+/tac_plu..
mariadb-10.0.19 를 mips로 cross-compile 하면서 발생 된 문제를 몇가지 기록해봅니다. 일단 개발서버 환경은 32bit, 타겟은 mips(64bit) 입니다.기본적으로 mariadb 소스를 받으면 BUILD 폴더 밑에 mips관련 configure가 있지만..위 환경에서는 정상적인 동작을 못하는듯.. 그래서 하나하나 error를 잡아가며 compile을 시도 했습니다. 1) 컴파일은 일반 버전(?)과 동일하게 컴파일 폴더를 만들고 그 폴더 내에서 cmake를 진행합니다. - 그 과정은 여기를 참고 - 단, CC, CXX 등은 환경에 맞는 컴파일러를 사용합니다. - 제 경우 개발서버 환경이 32bit 머신이기 때문에 n32 옵션 사용. 이 옵션은 gcc, gcc+ 양쪽에 다 들어가..
하아..별걸로 다 삽질을 하네.그래도 건진게 있으니까 한시름 놓습니다. 오늘 이슈는 localhost 로의 mysql 접속입니다. $ mysql -uroot -ptest ERROR 1045 (28000): Access denied for user 'root'@'127.0.0.1' (using password: YES) 일단 패스워드가 틀렸다는 에러인데.. (test라는 패스워드는 블로깅을 위한 샘플임) "root가 접속을 하는데 패스워드가 틀렸다" 입니다. 당연한 이야기죠? 근데 외부에서 접속할때 항상 test라는 패스워드를 써왔는데 이게 뭔가 싶었죠, 검색을 해보면 패스워드 초기화를 위해 mysqld를 skip-grant-tables 옵션을 써서 다시 올리고 패스워드를 재설정 하라는 내용밖에 안보입니다..
갑작스럽게 sendmail 을 컴파일하고 설치하게 된 이유는 python 에서 SMTP 를 사용해서 mail 을 전송하는데, 에러가 발생했고, 해당 에러의 원인이 localhost 에 sendmail server 가 없었기 때문이었습니다. Traceback (most recent call last): File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/mnt/ramdisk/do/F3work/F3/nfw2/kct..
주기적으로 proftpd 데몬이 죽는 문제가 발생했습니다. 보통 주말 보내고 월요일에 출근해보면 데몬이 죽어있었는데요 (평소에는 누군가 재시작을 시켜서 눈치를 못챈건지도..) 관련 로그를 보니 아래와 같았습니다. $ sudo cat /var/log/proftpd/proftpd.log.1 .............. 2015-02-23 06:53:10,154 ubuntu14-44 proftpd[61907] ubuntu44.future.co.kr: ProFTPD killed (signal 15) 2015-02-23 06:53:10,176 ubuntu14-44 proftpd[61907] ubuntu44.future.co.kr: ProFTPD 1.3.5rc3 standalone mode SHUTDOWN proft..
mysql 5.0.51a 버전을 사용하다가 10.0.16-MariaDB 로 패치를 하는 과정 중에 겪은 문제 입니다. mariaDB를 깔끔하게 설치하고, client를 접속하려는데 아래와 같은 에러가 발생했습니다. $ ./bin/mysql -u root 'vt100': unknown terminal type. 많은 오픈소스를 포팅하고 사용해봤지만, 이런 에러는 처음이었는데요.. 정확히 무슨 말인지 몰라서 검색을 해보고 해결 방안을 마련해봤습니다. 일단 첫번째 시도는 아래처럼 terminal type을 변경해보았습니다. $ export TERM=linux 하지만 결과는 같았습니다. $ ./bin/mysql 'linux': unknown terminal type. 관련 검색의 대부분이 위와 같은 해결 방법을..
mariaDB를 사용하기 위해 소스를 다운받고 설치를 해보았습니다. apt-get 등을 이용한 방법이 아닌, 소스 자체를 받아서 직접 컴파일 해보았는데요. 아래와 같은 방법으로 진행되었습니다. 일단 mariaDB를 컴파일 하기 위해서는 cmake가 필요 합니다. 이미 cmake가 있는 경우 아래 순서를 무시하고 진행하도록 합니다. 1) cmake 설치 $ wget http://www.cmake.org/files/v3.0/cmake-3.0.2-Linux-i386.tar.gz $ tar xzf cmake-3.0.2-Linux-i386.tar.gz $ mv cmake-3.0.2-Linux-i386 /usr/local/cmake $ ln -s /usr/local/cmake/bin/cmake /usr/local/..
우분투의 터미널 Keyboard Shortcuts의 종류와 설정 방법입니다. 일단 시스템에서 메뉴를 찾는 방법도 있지만, 터미널을 열어서 직접 설정하는 방법도 있습니다. 터미널을 열어서 Edit 메뉴의 Keyboard Shortcuts 를 선택합니다. 그럼 아래와 같이 기본적으로 설정된 shortcuts을 확인 할 수 있습니다. 다른 키는 사용빈도가 적은데, 우분투를 사용하고자 한다면.. File과 Tabs의 내용은 기본적으로 숙지해야겠습니다.
간혹 shell에서 어떠한 값을 변수로 사용해야 하는 경우가 생깁니다.이를테면 특정 프로세스에서 사용중인 file descriptor를 확인하기 위해서는 아래와 같겠습니다. 우선 cron으로 테스트 해보면 아래와 같이 cron의 pid(644)를 구할 수 있습니다. 얻은 pid(644)를 이용해서 사용중인 file descriptor를 아래와 같이 확인 할 수 있습니다. 하지만 두번에 걸쳐 실행되어야 하는 명령어는 불편할때가 있습니다. 위 내용은 아래와 같이 한번에 수행할 수 있습니다. 이 예제는 $()의 활용에 대한 부분입니다.$()가 아니더라도 |(pipe)나 환경변수 등을 이용해서 한번에 수행할 수 있는 방법은 많이 존재합니다.
shell script에서 함수 구현은 아래와 같습니다.#!/bin/sh add() { echo "test" } add 결과 : test 네. 무척 간단하죠? 그럼 이번에는 위 함수에 인자를 전달해보겠습니다. #!/bin/sh add() { echo $@ } add 1 3 결과 : 1 3$@는 배열 전부를 출력하는 문장입니다. 이번에는 결과를 return 받아보도록 합니다.add() { return $(($1+$2)) } add 1 3 echo $? 결과 : 4 ( "$((" 와 "))" 는 수학 계산으로 인식 됩니다 ) 굉장히 간한한 코드겠지만, shell script에서 함수 사용법을 엿볼수 있는 예제입니다.함수의 return과 인자 전달도 말입니다.
쉘스크립트의 종류는 다양한데 그중 bash와 ash를 뽑아봅니다. 이야기 하고자하는 내용은 두 스크립트의 차이입니다. 보통 ash는 busybox를 통해 사용가능한데요, 지금 본인이 개발하고 있는 스크립트가 어떤 쉘로 실행되는지 (필히)확인이 필요합니다. 이유는 동일해보이는 스크립트지만 지원가능한 문법이 다르기 때문입니다. 예를들면 아래와 같은 배열 (우리에게 친숙한) 을 bash에서 사용합니다. daemon_list=("oops" "test") 참조는 아래처럼 하겠지요. echo ${daemon_list[@]} 하지만 이 내용이 ash로 실행되면 바로 아래와 같은 syntax error를 출력하고 실행되지 않습니다. (ash는 bash스타일의 배열을 지원하지 않습니다.) ./oops: line 3: s..
KISA에서 OpenSSL 취약점을 악용한 공격 주의를 당부했습니다. (관련기사) 취약점이 발견된 버전은 OpenSSL 1.0.1부터 1.0.1f 및 OpenSSL 1.0.2-beta와 1.0.2-beta1 등이라고 하는데요, 패치버전은 나와있지만 당장 패치가 어려운 경우 '-DOPENSSL_NO_HEARTBEATS' 옵션을 설정하고 재컴파일 하라고 권고하고 있습니다. 그래서 한번 컴파일해봤습니다. 우선 '-DOPENSSL_NO_HEARTBEATS'는 Configure에서 활성화 시킵니다. Configure의 도움말을 보면 아래처럼 사용할 수 있습니다. 그럼 아래와 같이 사용하면 되겠네요. 하지만 정상적으로 실행되지 않았네요? unix-ish systems라면 ./config를 사용하랍니다. 그럼 아래처..
종종 db에 저장되어 있는 unixtime을 풀어서 봐야 하는 경우가 있습니다.이럴때 사용하는 mysql 명령어를 살펴봅니다. 우선 현재 시간을 알아볼까요? mysql> select now(); +---------------------+ | now() | +---------------------+ | 2014-03-20 16:08:04 | +---------------------+ 1 row in set (0.00 sec) mysql> 이번에는 1395299569 와 같은 형태의 UTC 시간을 변경해서 봅니다. mysql> select from_unixtime(1395299569); +---------------------------+ | from_unixtime(1395299569) | +-------..
git pull 했을때 아래와 같이 다른 사람의 commit과 충돌이 나는 경우가 발생합니다.[oops]$ git pullremote: Counting objects: 99, done.remote: Compressing objects: 100% (68/68), done.remote: Total 69 (delta 51), reused 0 (delta 0)Unpacking objects: 100% (69/69), done.From 10.25.1.20:/work/git/oops dab9a8b..b49cd63 master -> origin/masterUpdating dab9a8b..b49cd63error: Your local changes to the following files would be overwrit..
- Total
- Today
- Yesterday