Date로 시간 세팅

Posted at 2009/03/19 16:22 // in Tips/Utility programs // by Daniel

date "+%Y%m%d %T"

하면

20090319 07:20:25

이런 식으로 나옵니다.

한 서버에서 이렇게 프린트한 다음,

이걸 복사해다가

다른 서버에

date "+%Y%m%d %T" -s "20090319 07:20:25"

해주면 그 시간으로 세팅됩니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

netcat으로 원격 실행

Posted at 2009/03/19 15:21 // in Tips/Utility programs // by Daniel

신뢰하는 시스템간에서 간단하게 원격 명령을 시키고 싶을 때

(저는 임베디드 보드랑 호스트의 경우였습니다)

호스트에서 스크립트로 명령어를 전송하면 타겟에서 실행하게 하고 싶었어요


nc를 사용했습니다.

타겟은 서버가 되고 호스트는 클라이언트가 됩니다.

서버(타겟)

서버 스크립트 (/root/ncsrv_daniel.sh)

#!/bin/sh
while true
do
echo starting new nc session
nc -v -l -p 1234 -e /bin/sh
done

shell 을 띄우도록 설정.

타겟의 프롬프트에서 해당 스크립트 실행


클라이언트(호스트)

호스트 스크립트

echo ./remCmd.sh\;exit | nc 192.168.1.111 1234[1]

nc로 접속한다음 ./remCmd.sh;exit를 입력하도록 함.

remCmd.sh가 원격으로 타겟에서 실행하고자 하는 프로그램. 타겟의 /root/에 있음.


테스트 스크립트 (nctest.sh)

#!/bin/bash

ok_count=0
fail_count=0

for i in `seq 1 100`;     100번 반복 테스트.
do
echo ${i}th run...
echo ./remCmd.sh\;exit | nc 192.168.1.111 1234
result=$?
echo done ${i}th run. return $result
if [ $result -eq 0 ] ;
then
((ok_count++))
else
((fail_count++))
fi
sleep 1      종료후 nc 서버가 다시 뜨는 데 시간이 걸려서 기다려줌.
done
echo OK: $ok_count
echo FAIL: $fail_count


[1] 또는

nc 192.168.1.111 1234 –c “echo ./remCmd.sh\;exit” (또는 적절한 스크립트)

를 실행해도 될 것임. (테스트해보진 않았음)

크리에이티브 커먼즈 라이센스
Creative Commons License

wubi-ubuntu installer 가 뭔가 했더니

Posted at 2009/03/18 01:22 // in Tips/Utility programs // by Daniel

Wubi Logo

우분투 인스톨러라 돼 있는데

뭔가 했지요

이번에 노트북에 설치해보니까

WUBI란 ubuntu 리눅스를 윈도우의 ntfs 위에서 돌리도록 세팅해주는 프로그램입니다.

image


설치하면 해 주는 일은

1) C또는 D 드라이브(NTFS)에 가상 이미지 파일을 만들어서 디스크로 사용하게 만든다.

2) 윈도우의 부트로더에 ubuntu로의 부팅을 메뉴로 넣어준다.

3) 이 메뉴를 선택하면 NTFS상의 이미지 파일을 파일시스템으로 인식하여 부팅을 하게 한다.

입니다.

그래서 파티션을 건드리지 않고 단지 윈도우 부트로더에 메뉴를 추가하는 것으로 듀얼부트가 됩니다.

일단 부트되고나면 파티션이 윈도우용인 NTFS 파티션 위에 한 파일을 가상으로 EXT3 디스크로 쓰는 것 뿐 일반적인 리눅스 시스템과 동일합니다.

아이디어 괜찮네요

단점은

1. NTFS위에서 한 파일을 가상으로 디스크로 잡는 거라서 파일시스템 오버헤드(속도)가 좀 있음. NTFS->EXT3로 쓰기 때문입니다.

2. 파일(디스크이미지)이 뻑나면 복구가 일반적인 방법으로 안됨

이랍니다.


그리고

비스타에서 아직 문제 있음.

현재 있는 8.04도 그렇고 8.10도 그렇고

비스타에서 문제는

1. WUBI 실행하고 설치시 office IME랑 충돌나서 죽어버림.

실행하자마자 죽어버리는데 IME옵션에서 Microsoft IME로 바꿔주면 안죽습니다.

설치 이후에는 어차피 듀얼부트니까 상관없구요.

2. 설치하고 나면 부트로더에 메뉴가 추가돼야 되는데 안돼있습니다.

그래서 수동으로 부트메뉴를 설치해야 함. http://stardust99.blogspot.com/2009/02/wubi-install-on-windows-vista-sp1.html 에서 가져왔습니다.

1. 먼저 IME를 Office 2007 IME 대신 Microsoft IME로 바꾼다.
2. Vista에서 Kubuntu를 설치한다. 원래라면 여기서 설치가 끝나고 모든게 해피하게 되어야 하나, 나의 경우는 그렇지 않았다. 부트메뉴에 아무것도 나타나지 않았고, Windows Vista로만 부팅이 되었다.
3. EasyBCD를 다운받아서 깔고, Linux/Wubi를 고르면 NeoGrub을 깔면서 Grub을 사용할 수 있다.
4. 그.러.나. 이 버전의 Grub은 root ()/ubuntu/disks와 같은 것을 처리하지 못한다. 설정 파일을 살펴보면 c:\NST\NeoGrub.mbr을 통해 부팅을 시키는 것을 알 수 있는데, 이것을 wubildr.mbr로 바꿔치기를 한다. wubildr.mbr은 c:\에 있다.
4. wubildr.mbr을 c:\NST\NeoGrub.mbr에 Overwrite한다.
5. c:\ubuntu\disks\boot\grub\menu.lst를 c:\NST\menu.lst로 복사한다.
(install의 경우 c:\ubuntu\disks\install\boot\grub\menu.lst이던가 하는 것을 복사해주면 될 것이다.)

다시 설명하면 EasyBCD를 설치하고 grub을 부트메뉴에 설치, 설치한 .mbr 파일을 ubuntu용으로 교체, menu.lst파일 찾아서 복사해줌. ubuntu\disks\install\boot\grub\menu.lst 를 복사하면 되더군요.

크리에이티브 커먼즈 라이센스
Creative Commons License

awk 에서 shell 변수 사용하기

Posted at 2009/02/13 19:56 // in Tips/Utility programs // by Daniel
awk 에서 shell 변수 사용하기 - http://devfrog.egloos.com/293560

#!/bin/sh
if [ $# -ne 4 ]
then
    echo "Usage: log_cnt <file_name> <err_code> <log_point|0> <proc_hour>"
    exit
fi
cnt=1
if [ $3 -ne 0 ]
then
cat $1 | awk 'BEGIN{FS=";"}{ if ( $10 == '"${2}"' && $7 == '"${3}"' ) print }' | grep ^$4 | wc -l
else
while [ "$cnt" -ne 5 ]
do
    echo "log point $cnt: c"
    cat $1 | awk 'BEGIN{FS=";"}{ if ( $10 == '"${2}"' && $7 == '"${cnt}"' ) print }' | grep ^$4 | wc -l
    cnt=`expr $cnt + 1`
done
fi
-----
shell script 에서 awk 표현식 안에서 shell 의 input parameter 를 쓸 경우가 있다.
이때, awk 에서 shell 변수로 인식시키기 위해서는 ' " ${변수명} "  ' 과 같은 방식으로 사용해야 한다.

크리에이티브 커먼즈 라이센스
Creative Commons License

bash wait 명령어

Posted at 2009/02/11 11:15 // in Tips/Utility programs // by Daniel

bash 스크립트에서 백그라운드로 실행시키는 스크립트가 있을 때 그 스크립트의 종료를 기다려 처리하고 싶은 일이 있을 때가 있죠

그때 쓰는 게 wait입니다.

#!/bin/sh
./sort_db.sh &
echo "1st Line"
./bkptmp.sh &
echo "2dn line"
wait
echo "Some operation will follow this"

이런식으로 쓰면 됩니다. &로 백그라운드 실행한 스크립트를 기다려줍니다.

http://unstableme.blogspot.com/2008/06/bash-wait-command.html

Task contention상황에서 QoS를 위한 연구를 하는 중인데 스크립트로 돌리려니 이게 필요해서 찾아봤습니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

vim에서 탭 사용하기와 마우스

Posted at 2008/11/14 15:17 // in Tips/Utility programs // by Daniel

image

putty에서 탭을 사용한 vi를 띄운 상태입니다.

vim7.0이상에서 지원되며

사용법은

:tabnew 파일명

입니다 (맨 윗줄에 탭 바가 생김)

http://kltp.kldp.org/stories.php?story=07/01/25/5010287

:tabn

:tabp

로 이동가능한데

이게 귀찮아서 마우스를 enable 시켰습니다.

:set mouse=n

전 으로 했습니다. (n이나 a가 적당한 듯)

그런데 그렇게 하니 putty에서 편리하게 쓰던 더블클릭(낱말이 선택됩니다)이 기능이 바뀌더군요

그래서 약간 불편하지만 마우스 모드를 바꾸고 쉬프트를 활용했습니다

:set mousem=popup

이렇게 하고,

쉬프트로 더블클릭하면 원래 터미널(putty)에서 마우스 기능과 비슷하게 선택이 됩니다. 드래그도 먹구요

이렇게 쓰려구요.

크리에이티브 커먼즈 라이센스
Creative Commons License

shc - 셸 스크립트 컴파일러

Posted at 2008/10/30 13:59 // in Tips/Utility programs // by Daniel

image

http://www.datsi.fi.upm.es/~frosal/sources/shc.html

셸 스크립트를 컴파일할 수 있습니다. 스크립트를 그냥 텍스트형태로 쓰지 않고 바이너리 파일로 만들어서 쓰게 해줍니다.

셸 코드를 보여주고 싶지 않을 때 쓸 수 있겠지요.

사용법

[code]
$ shc -f <script.sh>
[/code]

shc를 실행하면  -f로 이름을 준 스크립트 파일을 읽어서 <스크립트이름.x.c> 파일의 C 소스코드를 만들고 그걸 컴파일 해서 스트립한 바이너리를 <스크립트이름.x>를 만들어줍니다.

image

[code]
$ ls run_tests.sh*
run_tests.sh  run_tests.sh.x  run_tests.sh.x.c
$ file run_tests.sh.x
run_tests.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), stripped
[/code]

크리에이티브 커먼즈 라이센스
Creative Commons License

camstudio로 vista에서 화면 녹화하기

Posted at 2008/08/06 22:00 // in Tips/Utility programs // by Daniel


이전에 쓴 글처럼, camstudio로 화면 녹화를 할 수 있습니다.
http://camstudio.org/


현재 2.5 베타1이 나와있네요.

윈도 vista에서 실행하려면 어찌해야 할 지 살펴봤습니다.
avi로 녹화하는 건 잘 되는데 플래시로 녹화하거나 변환하는건 에러가 나는군요

일단 avi로 먼저 만든 후에 swf 변환에 가서 옵션중에 Add preloader와 Add player control을 없애니 안죽고 나옵니다.
추가로 Camstudio->options->program options->Temporary directory for encoding을 Use installed directory로 경로조정하였습니다.


그렇게 해서 만든 화면이 저겁니다.
 rm -rf /
(실제로 실행하면 큰일 나는 무서운 명령어죠. 그럴수록 자꾸 해보고 싶어지는.. 재미삼아 모양 내봤습니다.)

그림 1) camstudio의 옵션에서 temporary 디렉토리 변경.(죽는 것을 해결하는데 도움이 되는건 아닐 수도 있음)

사용자 삽입 이미지

그림2) swf 변환시 옵션.(먼저 avi로 녹화후 변환할 때 옵션 변경해준다)
사용자 삽입 이미지

크리에이티브 커먼즈 라이센스
Creative Commons License

ssh로 원격백업

Posted at 2008/07/07 14:19 // in Tips/Utility programs // by Daniel
tar/gz후 원격으로 풀기
# tar czfp - mypath | ssh host "cd /mypath; tar xfzp -"


# ssh host "cd /home/mypath; tar czfp - ." > my.tgz


# tar czfp - /home | ssh host "cat > /dev/tape"
# tar czvfp - /home | ssh host "cat > home.tgz"
크리에이티브 커먼즈 라이센스
Creative Commons License

putty에서 ls 색상 맘에 안들 때

Posted at 2008/06/03 14:27 // in Tips/Utility programs // by Daniel

image

레드햇 페도라 코어 6입니다.

putty로 접속하면 이처럼 디렉토리 색깔이 맘에 참 안듭니다.

그래서 매번 putty 색상을 수정하곤 했습니다.

image

데비안 4.0입니다. 색깔이 좀 더 보기 쉽지요?

디렉토리 색깔이 특히 밝아서 맘에 듭니다.

이 차이는 어디서 나오냐면, LS_COLORS라는 환경변수입니다. (관련 링크, 관련링크2)

LS_COLORS를 보지요.

# echo $LS_COLORS
no=00:fi=00:di=00;34:ln=00;36:.....생략

규칙은 [특수파일|*.확장자]= [속성];[색]
이고, 구분자는 ":" 입니다.

di는 디렉토리를 의미하고 속성 00에 색 34라고 돼 있네요.

데비안의 세팅을 보면

$ echo $LS_COLORS
no=00:fi=00:di=01;34:ln=01;36:

이렇게 01 로 속성이 돼 있습니다. 이러면 putty에서 bold 색상이 됩니다.

image image

이렇게 Blue Bold와 그냥 Blue는 차이가 있습니다.

putty에선 Bold 색상이 더 밝아서 어두운 배경에 더 잘 보입니다.

> 그러므로 putty에서 색이 맘에 안들 때는 LS_COLORS를 고쳐주면 됩니다.

이렇게 .bashrc에 써줍니다.

export LS_COLORS='no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:'

이런식으로 맘에 안드는 부분들을 Bold로 변경하면 됩니다.

색상은 다음과 같습니다.

------------
ansi 색상표
------------
[text num] [bg num] [color]
30 40 black
31 41 red
32 42 green
33 43 yellow
34 44 blue
35 45 magenta
36 46 sky
37 47 white

-------
속성(?)
-------
00 delete_method
01 bold
05 blink
07 reverse

[출처] 리눅스의 터미널 색상 변경.|작성자 레올로

크리에이티브 커먼즈 라이센스
Creative Commons License