리눅스 NC를 사용하는 법을 알아보도록 하자.

 

1. 개요

넷캣(Netcat)은 TCP나 UDP 프로토콜을 사용하는 네트워크 연결에서 접속/수신 중개를 수행하는 유틸리티 프로그램이다.  네트워크에 대한 디버깅이나 테스팅의 용도로 많이 사용된다.  가장 많이 사용되는 데에는 특정 호스트의 포트의 오픈 여부를 확인하는데 많이 쓰인다.

 

 

2. 설치확인

아래명령어를 통해 설치를 확인한다.

rpm -qa | grep ^nc-

만약 설치가 되어있다면 다음과 같은 메시지가 출력된다.

[root@zetawiki~]# rpm -qa | grep ^nc-
nc-1.84-10.fc6
[root@zetawiki~]# rpm -qa | grep ^nc-
nc-1.84-22.el6.x86_64

 

 

3. 설치하기

아래 명령어를 수행한다.

yum install nc

설치를 진행하면서 아래와 같이 최종적으로 Installed 버전 및 Complete! 메시지를 만난다면 성공!!

... (생략)
=======================================================
 Package    Arch      Version    Repository          Size
=======================================================
Installing:
 nc        x86_64    1.84-22.el6     Daum             57 k
 
Transaction Summary
=======================================================
Install       1 Package(s)
 
Total download size: 57 k
Installed size: 109 k
Is this ok [y/N]: y
... (생략)
Installed:
  nc.x86_64 0:1.84-22.el6
 
Complete!

 

 

 

 

파일 경로(절대 경로)를 작성한 목록을 기초로 다른 폴더로 해당 파일들이 속한 디렉터리 경로까지 동일하게 맞추어 복사해준다.

작업한 파일 리스트를 만들고 해당 파일만 별도로 뽑아 서버에 배포하기 위해 쓰인다.

 

 

 

core.cmd

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
echo.
 
echo ==============================================================================
 
echo * Processing file: [%~1]
 
 
 
if not exist "%~1" goto STEP_NOT_EXIST
 
 
 
set DIR_CURRENT=%~dp0
 
set FILE_FULLPATH=%~1
 
set DIR_FULLPATH=%~dp1
 
set DIR_PATHONLY=%~p1
 
set FILE_FULLNAME=%~nx1
 
set FILE_NAMEONLY=%~n1
 
set FILE_EXTONLY=%~x1
 
set FILE_EXTONLY=%FILE_EXTONLY:~1,3%
 
 
 
set TARGET_DIR=%DIR_CURRENT%%DIR_PATHONLY:~1%
 
set TARGET_FILE=%TARGET_DIR%%FILE_FULLNAME%
 
 
 
echo * Checking directory: [%TARGET_DIR%]
 
if not exist "%TARGET_DIR%" (
 
 echo ** Create directory
 
 mkdir "%TARGET_DIR%"
 
else (
 
 echo ** Directory already exist
 
)
 
 
 
echo * Checking file: [%TARGET_FILE%]
 
if not exist "%TARGET_FILE%" (
 
 echo ** Copy file from: [%FILE_FULLPATH%]
 
 echo **             to: [%TARGET_FILE%]
 
 copy "%FILE_FULLPATH%" "%TARGET_FILE%" > NUL
 
else (
 
 echo ** File already exist
 
)
 
 
 
goto STEP_END
 
 
 
:STEP_NOT_EXIST
 
echo * Processing stop file not exist 
 
 
 
:STEP_END
 
 
cs
 
 
startFileCopy.cmd
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
@echo off
echo **************************************************
echo * 파일복사 배치 프로그램                         *
echo * 사용법 ) list.txt 파일에                       *
echo *          복사할 파일 목록을 작성합니다.        *
echo *          ex) C:\test\f\f_testFile_2.txt        *
echo *                                                *
echo * 기존에 해당 파일이 있을경우 복사하지 않습니다. *
echo *                                                *
echo *                           * Create By Cheezred *
echo **************************************************
echo.
 
set /p key=실행하시겠습니까(Y/N)?
if /"%key%"=="y" ( 
  goto STEP_START_JOB
else (
  goto STEP_END_JOB
)
    
 
goto STEP_END_JOB
 
:STEP_START_JOB
setlocal enableextensions
for /"eol=# delims=" %%i in (list.txt) do call core.cmd "%%i"
 
endlocal
 
goto STEP_END
 
:STEP_END_JOB
echo 사용자의 요청으로 작업이 취소되었습니다.
 
 
:STEP_END
cs
 
 
list.txt
 
1
2
3
4
# 사용 예제 
# ex C:\Windows\System32\acproxy.dll
 
#제외하고 싶은 파일은 #을 맨앞에 입력
cs

 

리눅스에서 현재 열려 있는 포트를 확인하는 방법


열려 있는 모든 포트를 표시하기

netstat -nap

n:host명으로 표시 안함
a:모든소켓 표시
p:프로세스ID와 프로그램명 표시


LISTEN중인 포트를 표시하기

netstat -nap | grep LISTEN)



상대방 포트가 열려 있는지를 확인하는 방법

상대방 머신에 접속이 되지 않을 때 혹시 포트가 막혀 있는지를 확인해 보자.
netcat(nc) 네트워크 유틸리티를 이용하면 된다. 


특정 호스트의 특정 포트가 열려 있는지를 확인하기

nc -z 호스트주소 포트

ex) nc -z www.google.com 80

<결과예>

Connection to www.google.com 80 port [tcp/http] succeeded!

z: 포트 검색


특정 머신의 포트 범위를 지정하여 열린 포트를 확인하기

nc 호스트주소 -z 시작포트-끝포트

ex) nc 10.20.30.40 -z 19-21

<결과 예>
Connection to 10.20.30.40 21 port [tcp/ftp] succeeded!
Connection to 10.20.30.40 22 port [tcp/ssh] succeeded!
Connection to 10.20.30.40 23 port [tcp/telnet] succeeded!



특정 포트를 이용해 통신이 들어오는지 확인

nc  -l(소문자 엘) 포트번호

ex) nc -l 3320

<결과 예>
쉘이 기다리고 있다가 해당 포트로 통신이 들어오면 리스닝 상태가 풀림



리눅스에서 OS 비트수 확인하는 방법입니다. 

리눅스상에서 프로그램을 설치할 때 OS의 비트수에 맞게 설치해야 하는 경우가 있습니다. JDK라던가 그런 것들....

 

 

getconf 명령어를 통해서 OS의 bit 수를 확인할 수 있습니다.

 

32bit 커널인 경우 아래와 같이 32라는 숫자를 볼 수 있습니다. 

# getconf WORD_BIT
32
-------------------------------------------------------------------
# getconf LONG_BIT
32

64bit 커널인 경우 아래와 같이 LONG BIT에서 64라는 숫자를 볼 수 있습니다.

# getconf WORD_BIT
32
-------------------------------------------------------------------
# getconf LONG_BIT
64 

 

 

안녕하세요 이번 포스팅에서는 리눅스의 작업 관리자를 통해 리눅스 CPU 확인을 해보고 리눅스 메모리 확인을 할 수 있는 명령어에 대하여 다뤄보도록 하겠습니다.


1. 리눅스 CPU 확인


  리눅스 CPU 확인은 vi /proc/cpuinfo 를 통해 자세한 리눅스 CPU에 대한 하드웨어 정보를 확인할 수 있습니다.



  리눅스 CPU 사용량 확인 방법은 아래의 4번과 같이 작업관리자를 통해 확인하세요


2. 리눅스 메모리 확인


  리눅스 메모리 사용량 확인은 'free' 명령어를 통해 할 수 있습니다. 실행 결과는 아래와 같습니다.



  자세한 메모리 정보를 확인하고 싶다면 vi /proc/meminfo 명령어를 입력하여 내용을 확인하세요




3. 리눅스 용량 확인


  리눅스 메모리 사용량 확인 방법은 명령어 'df' 입니다. 입력 결과는 아래와 같습니다.





4. 리눅스 작업관리자


  윈도우 작업관리자 처럼 리눅스 작업관리자는 'top' 명령어로 실행됩니다. 실행 결과는 아래의 화면과 같습니다.


인증서 보기 또는 관리

이 단계를 수행하려면 반드시 관리자 계정으로 로그온해야 합니다.

인증서 관리자를 사용하여 인증서에 대한 정보를 보거나, 수정하거나, 삭제하거나, 새 인증서를 요청할 수 있습니다.

  • 시작 시작 단추 그림 단추를 클릭하고 검색 상자에 certmgr.msc를 입력한 다음 Enter 키를 눌러 인증서 관리자를 엽니다.‌ 관리자 권한 필요 관리자 암호나 확인을 묻는 메시지가 표시되면 암호를 입력하거나 확인을 제공합니다.

인증서 관리자 작업에 필요한 팁

  • 인증서는 인증서 - 현재 사용자 아래에 있는 폴더에 저장됩니다. 찾고 있는 인증서를 찾으려면 폴더 전체를 검색해야 할 수 있습니다.

  • 인증서 폴더를 열면 인증서가 표시되고 오른쪽 창에 인증서에 대한 정보도 표시됩니다. 용도 열은 각 인증서의 용도를 나타냅니다.

  • 같은 키나 다른 키를 사용하는 새 인증서를 요청할 수 있으며 인증서를 내보내거나 가져올 수도 있습니다. 이러한 작업을 수행하려면 인증서를 클릭하고 동작 메뉴를 클릭한 후 모든 작업을 가리킨 다음 원하는 작업에 해당하는 명령을 클릭합니다.


port를 열어주기 위해 다음과 같은 작업을 수행했다.


대상 port는 8080, 3030 두개이다.



 

- $ vi /etc/sysconfig/iptables
- 다음 내용(bold)을 파일 중간에 추가
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3030 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
- $ service iptables restart



혹은 다음과 같은 방법으로도 할 수 있다. (이게 더 나은듯)

- $ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
- $ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3030 -j ACCEPT
- $ iptables -D INPUT -j REJECT --reject-with icmp-host-prohibited
- $ iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
- $ service iptables save
- $ service iptables restart

 

 

※ reject 구문이 다른 구문보다 상위에 있을경우 reject 이후로는 작성한 내용이 적용되지 않는다.. 

 

Vi  editor

 

텍스트 입력 모드

 

범위 설정

 

커서 이동

i

커서 앞에서 삽입

1,$

모든

k

위로

a

커서 뒤에서 삽입

1,.

처음부터 현재 줄까지

j

아래로

o

현재 다음부터 삽입

.,$

현재부터 마지막 줄까지

l

오른쪽으로

O

현재 앞에서 삽입

.-2

현재부터 두줄까지

h

왼쪽으로

R

텍스트가 대치

.+2

현재부터 두줄까지

^

줄의 시작으로

텍스트 지우기

텍스트 치환

$

줄의 끝으로

x

문자

r

문자

b

단어 앞으로

dw

단어

cw

단어

w

단어 뒤로

dd

cc

Ctrl+d

화면 아래로

D

현재 줄의 끝까지

텍스트 붙이기

Ctrl+f

화면 아래로

:<R>d

블록단위의

<R>y

줄을 버퍼에 복사

Ctrl+u

화면 위로

탐색

pu

현재 다음에 붙이기

Ctrl+b

화면 위로

/sss

뒤쪽으로 sss탐색

:nnpu

nn다음에 붙이기

:nn

줄번호 nn으로

?sss

앞족으로 sss 탐색

파일 저장/불러오기

기타

n

마지막 탐색 명령 반복

:w

현재 이름으로 저장

Ctrl+l

화면을 다시 그림

탐색/치환

:w mm

mm으로 저장

:!<C>

잠깐<C> 명령 실행

:<R>s/ sss/ ttt/

처음 줄만 치환

:e mm

mm파일 편집

:q

종료

:<R>s/ sss/ ttt/g

모두 치환

:n

다음 파일 편집

:q!

저장 않고 종료

                       

 

 

Shell 사용하기

 

:!<C>

shell명령 실행 Enter키로 복귀

f

동일 검색

:sh

Shell prompt실행, exit 복귀

/<CR>

순방향 점체 검색

Ctrl+z

Vi process 중지, fg 복귀

?<CR>

역방향 전체 검색

화면 커서 이동

;

동일 반복 검색

z

현재 행을 화면의 상단으로 이동

N, n

전체 반복 검색

z.

현재 행을 화면의 중앙으로 이동

/^

검색 문자열을 행의 시작에 한정

Ctrl+E

아래로 이동

/$

검색 문자열을 행의 마지막에 한정

Ctrl+Y

위로 이동

/.

문자를 나타낸다

H

현재 화면의 상단으로 커서를 이동

/[ ]

문자 집합,  ^ 여집합

M

현재 화면의 중앙으로 커서를 이동

/ *

0 이상의 반복을 의미

L

현재 화면의 하단으로 커서를

/ \\<

패턴을 단어의 시작에 한정

텍스트 수정

/ \\>

패턴을 단어의 끝에 한정

r

문자 치환

/ \\

\\ 뒤의 문자를 에스케이프

R

커서 우측으로 입력되는 문자 치환

병합 / 명명

s

문자를 여러 문자로 치환, Esc종료

J

행을 행으로

cw

단어 치환

m

행을 a에서 z중의 하나로 표시

c$

커서부터 행의 마지막까지 치환

블록 지정 붙여 넣기

c^

행의 시작부터 커서까지 치환

yw

현재 커서가 있는 단어

cc

전체 치환

y$

현재 커서가 있는 곳에서 행의

Vi 옵션

y^

현재 커서가 있는 곳에서 행의 시작

vi –r <filename>

임시저장 파일 읽음

yy

현재 커서가 있는 행의 전체

vi –R <filename>

Read Only 읽음

p

붙여 넣기

vi +n <filename*gt;

시동 시에 n번째 행을 보여줌

 

 

           

 

1. Subversion 설치

# yum install subversion

 

2. Repository 생성

# mkdir /home/svn                 

# cd /home/svn

# svnadmin create --fs-type fsfs [저장소 이름]

   ex) svnadmin create --fs-type fsfs sampleRepo

# chmod –R g+w [저장소 이름]  or  # chmod 664 [저장소 이름]

   (그룹권한에 쓰기권하을 부여하겠다는 뜻)

3. Subversion 설정

# cd /home/svn/[저장소 이름]/conf

    ex) cd /home/svn/sampleRepo/conf

# vi svnserve.conf

    다음과같이 설정

 

[general]

anon-access = none (true : 누구나 읽기 가능, none : 안됨)

auth-access = write (인증된 사용자만 쓰기)

password-db = passwd (사용자 계정 정보 DB로 passwd 파일을 사용하겠다는 뜻)

authz-db = authz (사용자 계정 권한 정보 DB로 authz 파일을 사용하겠다는 뜻)

realm = sampleRepo (SVN 설명 또는 타이틀로 생각하면 됨)

 

[sasl] (SASL 암호화시 사용)

# use-sasl = true 

# min-encryption = 0
# max-encryption = 256

 

 

 

 

 

 (※ 각 설정값에 공백이 존재하면안됨, 즉, realm을 작성할경우 realm앞에 스페이스가 들어가면 오류남)

 

4. Subversion 사용자 계정 생성 

# vi passwd

아이디 = 비번

[user]

user01 = qwer1234

user02 = qwer1234

user03 = qwer1234

user04 = qwer1234

...

..

 

 

 

 

5. Subversion 사용자 권한설정

# vi authz

사용자별로 권한을 지정할 경우

[sampleRepo:/]

user01 = rw  

user02 = rw

...

 

 

모든사용자에 대한 공통권한 지정

[sampleRepo:/]

* = rw

 

5. Subversion 서버 시작 

# svnserve -d -r /home/svn

기본포트 3690이 아닌 다른 포트를 사용하면

# svnserve -d -r /home/svn --listen-port [포트번호]

 

6. 에디터 설정

subversion에서 사용할 기본적인 에디터 지정
지정하지 않으면 커밋등을 할수 없게 된다.
.bash_profile등에 추가
SVN_EDITOR=/usr/bin/vim
export SVN_EDITOR  

 

 

7.디렉토리 만들기 (안만들고 나중에 거북이 툴(TortoiseSVN)을 이용해서 생성해도 된다.)

     # svn mkdir svn://{Server domain or IP}/[저장소 이름]/trunk

# svn mkdir svn://{Server domain or IP}/[저장소 이름]/branches

# svn mkdir svn://{Server domain or IP}/[저장소 이름]/tags

ex) # svn mkdir svn://125.7.203.253/sample/trunk
vi가 실행되면 :q!로 빠져나간다.

 

Log message unchanged or not specified
a)bort, c)ontinue, e)dit, C를 누르고 엔터를 누르면

Committed revision 1. 메세지가 나온다.

      메시지가 나오지 않으면 계정관리및 디렉토리 권한 설정을 다시 확인한다

 

위 SVN 명령어 사용시에 svn 권한을 가진 리눅스 계정의 비밀번호를 물어볼수도 있습니다.

(저의 경우에는 root 계정으로 실행중이라 root 비밀번호를 물어봅니다.)

그리고 커밋을 위해 svn 사용자/비번을 입력하면됩니다.

예시

 

 [root@holictou svn]# svn mkdir svn://svn.matoker.com/test/trunk
svn: warning: cannot set LC_CTYPE locale
svn: warning: environment variable LANG is ko
svn: warning: please check that your locale name is correct
Authentication realm: <svn://svn.matoker.com:3690> test
Password for 'root':
Authentication realm: <svn://svn.matoker.com:3690> test
Username: matoker
Password for 'matoker':

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <svn://svn.matokeri.com:3690> test

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes

Committed revision 1.

 

 

기타

 

레파지토리의 설정된 폴더의 내용

# svn list svn://{Server domain or IP}/[저장소 이름]

branches/

tags/

trunk/

 

10. SVN 서버 시작

 

# svnserve -d -r /home/svn

 

기본포트 3690이 아닌 다른 포트를 사용하면

# svnserve -d -r /home/svn --listen-port [포트번호]

 


11. svn 서버 확인 기본 포트는 3690

 

# netstat -ant | grep 3690 

 


12.  svn 서버 강제종료

 

# ps -ef | grep svnserve

# kill -9 {PID}

 

또는

 

# killall svnserve (svnserve 키워드가 들어간 프로세스 모두 강제 종료)

 

 

 

13. 거북이툴로 붙거나 이클립스로 붙어서 작업을 하려고하는것 이 최종 목표일것이다.

그떄 접속 Url은  svn://123.233.112.121/레파지토리명/ 으로 접속하면된다.

 

 


# 일부내용은 http://matoker.com/30180737519 (마토커)님의 블로그를 참고하여 작성되었습니다.

 

 

 

 

 

 



프로그램을 실행하려고 할때 아래와 같은 메세지가 나오는 경우가 있다..

(난 AWS CLI를 실행하려니까 나왔다..)



위의 내용은 개발자들이 작업할때 "아 이게 또 뭐여?" 할수도 있는데..


설명에 잘 나와 있다.. 이벤트로그를 보라고 써있는것이다. 보통은 프로그램을 실행할때 필요한 패키지가 없어서 위의 메세지를 만나게된다.


위와 같은 오류가 발생하게 되면 

제어판 > 이벤트 뷰어


를 확인하도록 한다.


그러면 로그에 아래와 같은 유사한 내용을 볼 수 있다.


"????!@#!#!#!"에 대한 활성화 컨텍스트를 생성하지 못했습니다. 종속 어셈블리 Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50608.0"을(를) 찾을 수 없습니다. 자세한 진단을 위해서는 sxstrace.exe를 사용하십시오.


빨간색 부분을 구글링 하면 해당 현상에 대한 오류에 대한 리포팅을 찾을 수 있다.



대게 Microsoft.VC80.CRT나 Microsoft.VC90.CRT와 같은 경우는 Visual C++ Redist 패키지를 설치하면 해결이 가능하다.


추가 : 관련 AWS URL : https://forums.aws.amazon.com/thread.jspa?threadID=142537&tstart=0


+ Recent posts