2012년 5월 19일 토요일

리눅스 팁들.

리눅스 팁들

"rename 으로 여러개 파일 이름을 한번에 바꾸기"

가끔 파일의 확장자를 바꿔야 하는 상황이 있다.
예를 들어 php3로 된 확장자를 php로 바꿔야 하는데 바꿀 파일이
수십 개라고 하면 손가락이 고생을 좀 해야한다.
이때 rename명령을 사용하면 손가락의 막노동을 완전히 피할 수 있다.
rename php3 php *.php3

"vi 팁들"

  • 메뉴얼 보기
    c/c++언어를 편집하다가 함수의 메뉴얼을 보고 싶다면 함수 이름에 커서를 위치시키고 대문자 `K'를 눌러보자
  • 명령 모드에서 현재 파일 이름은?
    명령 모드에서 현재 파일 이름은 %왼쪽 꺾쇠이다. C언어를 작성하다 보면 make 명령을 사용할 경우가 있다. 만약 make 명령에 옵션으로 현재 파일 이름을 넘겨줘야 할 경우 유용하다.
    예를 들어 NAME 변수에 현재 파일 이름을 넘겨줘야 한다면
    :make -e NAME=%<
    로 쓰면 됩니다.
  • 백스페이스 키 사용하기
    백스페이스키가 커서 뒤의 글자를 지우는 본래의 용도로 작동하지 않을 때 vimrc에 아래 줄을 추가해 주면 된다.
    set backspace=indent,eol,start

"유용한 find 명령어"

  • 파일 찾기
    login파일을 / 디렉토리 아래에서 찾는다.
    $find / -name '.login' -print
  • 파일을 찾고 내용도 출력한다.
    $find / -name '.login' -exec cat
  • 쓰기 권한이 있는 파일과 디렉토리 찾기
    $find / -type f ( -perm -2 -o -perm -20 ) -exec ls -lg  ;
    $find / -type d ( -perm -2 -o -perm -20 ) -exec ls -ldg  ;
  • SetUID나 SetGID 설정된 파일 찾기
    $find / -type f ( -perm -004000 -o -perm -002000 ) -exec ls -lg  ;
  • 소유자가 없는 파일 찾기
    $find / -nouser -o -nogroup -print
  • 최근에 변경된 파일 찾기
    -ctime 다음에 원하는 일 수를 적는다. 아래는 10일 이내에 변경된 파일 찾기
    $find / -ctime -10 -type f

"rpm 명령 예제"

  • 깔기
    rpm -ivh package.rpm : i=install, v=verify , h=hash mark
  • 지우기
    rpm -ev package : e=erase
  • 패키지 정보 살피기
    rpm -qpl package.rpm : q=qeury, p=pacake file, l=list package.rpm 의 화일목록을 출력
  • rpm -ql package 깔려있는 package의 화일목록을 출력
  • rpm -V package ;리 패키지가 현재 어떤 상태인지, 초기 설치시와 어떻게 변화되었는지
  • rpm -Va ;=all, 모든 패키지에 대해 검사
  • rpm -qf file ;당 file이 어떤 패키지에 들어있는지 검사
  • rpm -qf /bin/echo ; sh-utils-2.0-4kr 로 나오네요
  • rpm -qp --scripts package.rpm ; 패키지에 들어있는 스크립트를 보여준다
  • rpm -qi package ; 패키지 정보를 출력
  • rpm -qa ; 깔려있는 모든 패키지 출력
  • rpm -qa | grep ftp ; grep 명령과 파이프로 연결하면 유용하다. 보기는 ftp에 관련된 패키지 만을 출력한다

"리눅스에서 시디 이미지 뜨기"


Linux mkisofs 명령을 이용합니다. 만들어진 파일은 iso9660 형식입니다.

# mkisofs -R -J -l -L -T -V "MyHome" -b boot.img -o myhome.iso /home/hulhul

이런 식으로 합니다.
-R, -J 옵션: 긴 이름의 파일명이 가능하게 합니다.
-l, -L : '.' 이 여러개 들어간 파일명이 가능하게 합니다.
-T :파일 이름 변환 테이블을 만듭니다. TRANS.TBL 이란 파일이 생성됩니다.
-V : 시디 볼륨명 입니다.
-b : 부팅 이미지를 포함시켜 부팅시디를 만듭니다.
-o : 만들어질 시디 이미지 이름
마지막으로 굽고 싶은 파일들을 나열...

만들어진 이미지 파일은 일반 시디 마운트 하듯이 마운트 할 수 있습니다.

#mount -t iso9660 -o loop -r myhome.iso /mnt

마운트 되면 아래와 같은 마운트 정보를 볼 수 있습니다.
/home/hulhul/myhome.iso on /mnt type iso9660 (ro, loop=0, user=hulhul)

"VNC Server/Client 설정"

vncserver 실행하기

1. 먼저 서버에서 vncserver를 실행시켜야 합니다.
$>vncserver

2. 처음 vncserver를 실행하면 vnc서버용으로 사용할 암호를 물어봅니다.
적당한 암호를 입력해 주세요. (주의:계정 암호와 다르게 할 것을 권합니다)

3. 암호 생성이 성공하면 홈디렉토리에 .vnc 디렉토리를 생성하고 기본 설정을 
저장하게 됩니다.

4. 서버가 사용가능한 display 번호를 찾아서 서버를 시작합니다.
New 'X' desktop is your.host.com:display번호
* 서버 실행시에 사용자가 display 번호를 지정할 수 있습니다.
$> vncserver :display번호

5. 네트워크가 가능한 컴퓨터이면 어디서든 vnc 서버에 접속할 수 있습니다.
display번호를 다르게 하여 여러 서버를 실행할 수 있습니다.
필요없는 서버는 중지시킬 수 있습니다.
$>vncserver -kill :diplay번호

vnc서버 접속하기

1. vnc서버의 주소는 '호스트명:display번호' 형식입니다.
즉, 'your.host.com:display번호'가 됩니다.

2. Linux에서 vncviewer 명령을 이용하여 접속할 수 있습니다.

3. Windows에서 무료프로그램이 여러가지가 있습니다. vnc 홈페이지에서 제공하는
프로그램을 무료 소프트웨어이고 설치할 필요가 없이 바로 실행가능합니다.

*** 주의사항 ******************
vnc서버와 클라이언트 간의 통신은 암호화되지 않습니다. 
따라서 전송되는 내용을 중간에서 훔칠 수 있어 보안에 문제가 있습니다.
이를 방지하기 위하여 ssh을 이용하여 포워딩하여 접속하는 방법이 있습니다.
http://www.uk.research.att.com/vnc/sshwin.html 를 참조하시기 바랍니다.

ssh를 이용한 vnc 접속하기

vnc서버가 암호화되지 않은 통신을 하기 때문에 필히 ssh 를 이용하도록 설정할 
수 있다.  따라서 vncviewer를 이용하여 바로 vnc 서버에 접속할 수 없고 ssh의 
포트 포워딩을 이용해야 합니다.

vnc서버가 5900 포트부터 사용하는데 이들 포트를 외부에서 접근할 수 없도록 
막는다 (firewall 이용).

ssh의 포트 포워딩 기능을 이용하면 ssh가 사용하는 22번 포트를 이용하여 
vnc 서버를 사용할 수 있습니다.

윈도우에서 putty를 이용하는 방법을 설명드립니다. 포트 포워딩 기능을 제공하는 
ssh 클라이언트라면 모두 가능합니다.

1. putty 0.53b 버전 이상부터 가능합니다. openssh home에서 구할 수 있습니다.

2. putty를 실행하면 왼쪽 Category 판넬에 Connection -> SSH -> Tunnels 를 
선택하세요.

3. 오른쪽 판넬에서 Add new forwarded port의 source port에 5900 을 적습니다.
Destination 에 your.host.com:59xx 를 적습니다. 
59xx 의 xx는 사용할 디스플레이 번호입니다.
예를 들어 vncserver를 실행해서 8번 디스플레이가 할당되었다면 5908이 됩니다.
(현재 자신이 사용하는 디스플레이 번호는 홈디렉토리 .vnc/ 밑에서 확인할 수
있습니다. your.host.com:8.pid 란 파일이 있다면 8번을 사용하는 것입니다)

4. Local 과 Remote를 선택하는 곳에서 Local을 선택하시고 Add 버튼을 누르세요.

5. 왼쪽 Category 판넬에서 Session을 선택하세요.

6. 오른쪽 판넬에서 Host Name에 your.host.com을 쓰시고 Protocol 에서 
SSH를 선택하세요.

7. putty를 실행할 때 마다 설정을 다시하는 불편이 없도록 Saved Sessions에 
적당한 이름 (예: myvnc ssh) 을 적고 Save 버튼을 눌러주세요.
putty를 다시 시작하면 저장한 세션을 불러오기만 하면 됩니다.

8. your.host.com에 접속을 하세요. 처음 접속시에 질문 창이 뜨는데 
your.host.com 접속을 허용할지 묻는 과정이니 yes를 선택하세요.

9. 8번 과정까지 실행하여 your.host.com에 접속하여 로그인한 상태로 putty 설정은
끝입니다.

10. 윈도우용 vncviewer를 실행해서 접속할 서버에 localhost로 입력하세요.
원래 your.host.com:display번호를 입력해야 하지만 이를 localhost의 0번 
디스플레이로 포워딩한 것입니다. 

"procmail로 스팸메일 때려잡기!"

* sendmail이 smrsh을 쓸경우 발생되는 문제
sendmail에서 restricted shell인 smrsh을 쓰는 경우 .forward 파일로 
procmail을 사용하는 것이 가능하지 않을 수 있다.
smrsh에서 사용가능한 프로그램으로 등록을 해주면 된다. 
Redhat 7.2 버전 이상에서 /etc/smrsh에 등록하면 된다.
 $>cd /etc/smrsh
 $>ln -s /usr/sbin/procmail

* .forward 파일 설정
자신의 홈디렉토리 아래에 .forward 파일을 만들고 아래와 같이 적는다 
(쌍따옴표 포함)
   "|exec /usr/bin/procmail"
procmail의 위치를 정확히 적어야 하므로 whereis로 찾아서 써준다.

* .procmailrc설정하기
자신의 홈디렉토리 아래에 .procmailrc파일을 만들어 원하는 필터링을 써주면 된다.
간단한 예이다.

 MAILDIR=$HOME/mail # Default mail directory

    ###Subject '' 광고 '' mail/Drafts '' m
    :0:
    * ^Subject.*광고
    mail/Drafts
 
제목에 광고가 들어간 메일은 mail/Drafts 파일로 옮기도록 되어있다.

"ssh에서 암호없이 로그인하기"

$> ssh-keygen -b 1024 -N "" -t dsa
$> cp .ssh/id_dsa.pub .ssh/authorized_keys
$> chmod go-r .ssh/authorized_keys

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...