캠핑과 개발

 

 

GitLab root 비밀번호를 모를경우 확인 하는 방법은  아래와 같다.

cat /etc/gitlab/initial_root_password  | grep Password:

 

 

만약 docker에 의해 GitLab가 실행중이라면 아래 명령을 통해 컨테이너 확인 후 컨테이너로 접속 후 실행한다.

#docker 컨테이너 확인
docker ps

# 컨테이너 접속
docker exec -it [이미지 ID] /bin/bash

'DEVELOPMENT > Server' 카테고리의 다른 글

Windows10에서 WebDAV 설정  (0) 2021.11.18
Synology Git Server  (0) 2021.11.15
docker container vi 설치  (0) 2021.01.05
ProFTPD 접속 클라이언트 제한 설정  (0) 2019.05.13
apache 일반 계정으로 실행하기  (0) 2019.01.14

SFTP 서비스를 통해 특정 홈 디렉터리 하위에 다른 경로의 디렉터리를 제공함.

 

처음 시도는 심볼릭 링크를 통해 해결하고 했지만 상위 디렉터리로 이동되는 문제가 발생하였고

이를 해결하기 위해서는 권한 변경, ssh 설정 등을 변경해하는 절차가 필요함. 

운영중인 경우 sshd 재기동, 설정 변경에 따른 부담감이 발생

 

mount 명령어의 --bind 옵션을 통해 디렉터리 -> 디렉터리 마운트로 해결하기로 함

 

 

/SFTP_SERVICE_DIR/DATA1 경로의 자료를 serviceuser1 사용자의 홈디렉터리의 DATA1으로 서비스 하고자함 

사전에 사용자의 홈 디렉터리에 DATA1으 경로는 생성되어야 함

 

마운트

sudo mount --bind /SFTP_SERVICE_DIR/DATA1 /home/serviceuser1/DATA1

 

읽기만 사용할 경우

sudo mount --bind -o ro /SFTP_SERVICE_DIR/DATA1 /home/serviceuser1/DATA1

-o 옵션을 통해 ro 값(읽기만)을 전달

 

마운트 해제

sudo umount /home/serviceuser1/DATA1

  

 

 

'DEVELOPMENT > Linux' 카테고리의 다른 글

파일 감시를 위한 inotifywait  (0) 2020.08.20
Linux bash shell script 기본 사용법  (0) 2020.08.18
logroate 옵션  (0) 2017.11.22
특정 계정으로 쉘 실행하기  (0) 2017.11.15
CentOS7 방화멱(firewalld) 설정  (0) 2017.04.24

SQL Developer에서 변수를 사용할 일이 있어 방법을 정리한다.

 

 

1. 테이블에 변수 선언 예시

--변수 선언
DEFINE PARAM_TABLE_NM = 'TB_USER';

--쿼리 질의
SELECT * 
FROM &PARAM_TABLE_NM;

--변수 해제
UNDEFINE PARAM_TABLE_NM;

 

2. 테이블 & 컬럼명 변수 예시

-- 변수 선언
DEFINE PARAM_TABLE_NM = 'TB_USER';
DEFINE PARAM_COLUMN_NM = 'USER_NAME';

--쿼리 질의
SELECT &PARAM_COLUMN_NM
FROM &PARAM_TABLE_NM;

--변수 해제
UNDEFINE PARAM_TABLE_NM;
UNDEFINE PARAM_COLUMN_NM;

 

3. 테이블 & 컬럼명 & 값에 변수 지정 예시

조건 값의 문자열 변수를 사용할 경우 ''로 감싸서 사용한다.

--변수 선언
DEFINE PARAM_TABLE_NM = 'TB_USER';
DEFINE PARAM_COLUMN_NM = 'USER_INNB';
DEFINE PARAM_USER_IDX = 11;

--쿼리 질의
SELECT &PARAM_COLUMN_NM
FROM &PARAM_TABLE_NM
WHERE &PARAM_COLUMN_NM = '&PARAM_USER_IDX';

--변수 해제
UNDEFINE PARAM_TABLE_NM;
UNDEFINE PARAM_COLUMN_NM;
UNDEFINE PARAM_USER_IDX;

windows 환경에서 WebDAV를 사용할 경우 다음 2가지를 설정을 합니다.

 

1. HTTP 프로토콜 허용

기본적으로 Windows 네트워크에서 WEBDAV연결시에는 HTTPS 프로토콜이 기본 입니다.

따라서 이를 HTTP로변경 해야합니다. 일반적으로 가정이나 SOHO 환경에서는 인증서 기반의 HTTPS프로토콜 셋팅이 쉽지 않기 때문입니다.

    - 먼저 레지스트리 편집기에서 "HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > WebClient > Parameters"

      로 이동

    - 다음에 "BasicAuthLevel" 값을 "1"에서 "2"로 변경(키 이름이 없다면 "DWORD Value" 키를 새로 만듭니다.)

       *각 값의 의미는 다음과 같습니다.

         0 - Basic authentication disabled

         1 - Basic authentication enabled for SSL shares only

         2 or greater - Basic authentication enabled for SSL shares and for non-SSL shares

        "0"은 아예 사용금지로 변경, "1"은 HTTPS만 허용, "2"는 HTTP도 허용

    - 그다음 리부팅.....그다음 재시도

       * "네트워크 위치 추가" 에서 "http://DDNS주소 or IP:설정포트"로 추가

 

2. 파일 사이즈 용량 조정

기본적으로 WEBDAV를 통해 연결 할수있는 단일 파일의 최대 사이즈는 50Mb 입니다. 따라서 연결 성공후에도 동영상 재생이 안되는 불상사가 발생 합니다. 파일 사이즈의 한계값 변경을 통해 이를 해결 합니다.

   - 먼저 레지스트리 편집기에서 "HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > services > WebClient > Parameters"

     로 이동 합니다.

   - 다음에 "FileSizeLimitInBytes" 값을 보면 바이트(byte)로 되어있습니다. 단위를 10진수로 바꿔서 확인해보면 50000000이란 값이

     적혀있는데  메가바이트(mb)로 환산하면 약 47.7메가 기본 전송사이즈로 설정되어 있습니다.

   - 4GB로 변경 :값의 속성을 10진수로 변경 하시고 4194304000 으로 변경

       * WEBDEV 프로토콜은 4Gb를 넘길수 없으므로 약간 모자란 "4194304000" 로 변경 합니다.

'DEVELOPMENT > Server' 카테고리의 다른 글

GitLab 초기 비밀번호 확인  (0) 2024.01.09
Synology Git Server  (0) 2021.11.15
docker container vi 설치  (0) 2021.01.05
ProFTPD 접속 클라이언트 제한 설정  (0) 2019.05.13
apache 일반 계정으로 실행하기  (0) 2019.01.14

 

1. git Server 저장소 추가

ssh user@host 접속

 

콘솔 접속 후

sudo -i #Root 권한 획득

cd /volumn1 #volumnx로 이동

mkdir git #저장소로 사용할 디렉터리 생성. /git/test

cd git

mkdir test

cd test 

git init --bare #저장소 초기화

cd ..

chown -R gitUser@users test

 

2.clone 테스트

git clone ssh://[Git users]@[hostname]/[Git repository path]
ex) git clone ssh://[Git users]@[hostname]/volume1/git/test

 

 

 

'DEVELOPMENT > Server' 카테고리의 다른 글

GitLab 초기 비밀번호 확인  (0) 2024.01.09
Windows10에서 WebDAV 설정  (0) 2021.11.18
docker container vi 설치  (0) 2021.01.05
ProFTPD 접속 클라이언트 제한 설정  (0) 2019.05.13
apache 일반 계정으로 실행하기  (0) 2019.01.14

#docker exec -it [컨테이너 아이디] bash

#apt-get update

#apt-get upgrade

#apt-get install vim

'DEVELOPMENT > Server' 카테고리의 다른 글

Windows10에서 WebDAV 설정  (0) 2021.11.18
Synology Git Server  (0) 2021.11.15
ProFTPD 접속 클라이언트 제한 설정  (0) 2019.05.13
apache 일반 계정으로 실행하기  (0) 2019.01.14
CentOS7에 Apache 서비스 등록  (0) 2017.12.27

리눅스 시스템에서 파일의 생성, 삭제, 이동 등을 감시하여 어떤 작업을 처리할때 유용한다.

 

1. 설치

먼저 설치되어 있지 않다면 다음 명령어로 설치한다.

yum install inotify-tools

 

2. 사용법

#!/bin/sh

MONITOR_PATH=/home/test

inotifywait -m -e create -r "$MONITOR_PATH" |
while read dirname eventlist filename
do
  echo ${dirname} ${filename}
done

 

3. Options

-h|--help

  도움말을 보여줍니다.

 

@<file>

감시에서 지정된 파일을 제외합니다.

 

--exclude <pattern>

   확장 정규식 <pattern>과 일치하는 파일의 모든 이벤트를 제외합니다.

 

--excludei <pattern>

   --exclude와 같지만 대소 문자를 구분하지 않습니다.

 

-m|--monitor

     이벤트를 영원히 경청하십시오. 이 옵션이 없으면 inotifywait는 하나의 이벤트가 수신 된 후 종료됩니다.

 

-d|--daemon

    --outfile로 지정된 파일에 이벤트 로깅 이벤트를 백그라운드에서 실행한다는 점을 제외하면 --monitor와 동일합니다. --syslog를 의미합니다.

 

-r|--recursive

디렉토리를 재귀 적으로 감시합니다. 

 

--fromfile <file> 

  <file> 또는 stdin의 경우`- '에서 감시 할 파일을 읽습니다.

 

-o|--outfile <file>

stdout이 아닌 <file>에 이벤트를 인쇄하십시오.

 

-s|--syslog

stderr 대신 syslog에 오류를 보냅니다.

 

-q|--quiet

더 적게 인쇄합니다 (인쇄 이벤트 만).

 

-qq

아무것도 인쇄하지 않습니다 (이벤트도 아님).

 

--format <fmt>

지정된 printf와 유사한 형식 문자열을 사용하여 인쇄합니다. 자세한 내용은 man 페이지를 참조하십시오.

 

--timefmt <fmt>

--format 문자열에서 % T와 함께 사용하기위한 strftime 호환 형식 문자열입니다.

 

-c|--csv

CSV 형식으로 이벤트를 인쇄합니다.

 

-t|--timeout <seconds>

단일 이벤트를 수신 할 때 <seconds> 초 동안 이벤트를 기다린 후 시간이 초과됩니다. <seconds>가 0이면 inotifywait가 시간 초과되지 않습니다.

 

-e|--event <event1> [ -e|--event <event2> ... ]

특정 이벤트를 수신합니다. 생략하면 모든 이벤트가 수신됩니다.

 

4. Events

이벤트 설명
access 파일 또는 디렉토리 내용을 읽었습니다
modify 파일 또는 디렉토리 내용이 기록되었습니다.
attrib 파일 또는 디렉토리 내용이 기록되었습니다.
close_write 쓰기 가능 모드로 열린 후 파일 또는 디렉토리가 닫힘
close_nowrite 읽기 전용 모드로 열린 후 파일 또는 디렉토리가 닫힘
close 읽기 / 쓰기 모드에 관계없이 파일 또는 디렉터리가 닫힘
open 열린 파일 또는 디렉토리
moved_to 감시 된 디렉토리로 이동 된 파일 또는 디렉토리
moved_from
감시 된 디렉토리에서 이동 된 파일 또는 디렉토리
move
감시 된 디렉토리로 (부터) 이동 된 파일 또는 디렉토리
create
감시 된 디렉토리 내에 생성 된 파일 또는 디렉토리
delete
감시 디렉토리 내에서 삭제 된 파일 또는 디렉토리
delete_self
파일 또는 디렉토리가 삭제되었습니다.
unmount
마운트 해제 된 파일 또는 디렉토리를 포함하는 파일 시스템

5. 종료 코드

0 - 시청을 요청한 이벤트가 수신되었습니다.
1 - 시청을 요청하지 않은 이벤트가 수신되었습니다. (일반적으로 delete_self 또는 마운트 해제) 또는 일부 오류가 발생했습니다.
2 ---timeout 옵션이 제공되었으며 이벤트가 발생하지 않았습니다. 지정된 시간 간격으로.

 

 

1. shell script의 시작

shell script의 시작은 다음으로 시작한다.

!#/bin/sh

 

2. 문자열 출력

문자열의 출력은 다음과 같다.

echo "hello" #자동 줄바꿈
printf "hello" #c언어와 비슷

 

3. 주석

주석은 #으로 시작합니다.

# 이것은 주석입니다.
function {
 #주석입니다.
 ehco "hello"
}

 

4. 변수의 선언

쉘 스크립트에서 변수명은 대소문자 구분하지 않는다.

기본적으로 전역변수이며 변수 앞에 local을 붙여서 지역변수로 사용할 수 있다..

변수명과 값은 "="로 구분하며, 공백 없이 변수명=값으로 지정한다. 

기본적으로 변수명에 할당된 값음 모두 문자열로 인식한다.

선언된 변수는 해당 스크립트에서만 유효하며 다른 쉘 스크립트에서도 사용하려면 export를 붙여서 환경변수로 만들어야 한다.

변수의 해제는 unset로 한다.

 

아래의 예제에서 var1, var2는 모두 문자열로 인식한다.

var1=1
var2="1"

 

할당된 변수를 사용하기 위해서는 $, ${변수명}를 사용하여 할당된 변수를 사용한다.

var=1
echo $var

 

${변수명}을 사용할 경우에는 변수에 담긴 값에 연산을 이용할 수 있다.

사용법 설명
${변수명:위치} 위치 다음부터 문자열 추출
${변수명:위치:길이} 위치 다음부터 지정한 길이만큼 문자열 추출
${변수명:-기본값} 변수가 값이 없을 경우 기본값 지정
${변수명:?값} 변수의 값이 없을 경우 값출력 후 스크립트 종료
${변수명?값} 변수 미선언시에 값 출력 후 스크립트 종료
${#변수명} 문자열 길이

 

#!/bin/bash

value="abcdef"
echo ${#value} #변수값의 길이 출력
#result=>6

echo ${value:2} #특정 위치부터 출력
#result=> cdef

echo ${value:2:2} #특정 위치부터 길이만큼 출력
#result=>cd

# null이면 입력값 초기화 후 출력, 아니면 변수값 출력
echo ${value=ghijkl} 
echo ${value2=ghijkl}
#result=>abcde
#result=>ghijkl

#null이 아니면 입력값 출력, 아니면 빈값 출력
echo ${value+ghijkl}
echo ${value2+ghijkl}
#result=>ghijkl
#result=>

#null이면 입력값 출력, 아니면 변수값 출력
echo ${value-ghijkl}
echo ${value2-ghijkl}
#result=>abcdef
#result=>ghijkl

#null이면 오류, 아니면 변수값 출력
echo ${value?ghijkl}
echo ${value2?ghijkl}
#result=>abcdef
#result=>./test.sh line x: value: ghijkl

변수는 특수 매개변수를 제공한다.

  • $$ : 현재 스크립트의 PID
  • $? : 최근에 실행된 명령어, 함수, 스크립트 자식의 종료 상태
  • $! : 최근에 실행한 백그라운드(비동기) 명령의 PID
  • $- : 현재 옵션 플래그
  • $_ : 지난 명령의 마지막 인자로 설정된 특수 변수

 

만약 할당된 변수를 숫자로 사용하고 싶다면 expr 명령어를 사용한다.

또 다른 방법은 $(()) 감싸고 계산 하는 방법이 있다. $(()) 계산식 안에 있는 숫자들은 문자열이 아니라 숫자로 연산이 된다.

var1=1
var2="2"
echo `expr $var1 + $var2`
echo $(($var1 + $var2))

 

 

 

5. 배열의 선언

쉘 스크립트는 1차원 배열만 사용한다. 배열을 선언할 때는 인덱스가 연결되지 않아도 되며 배열의 선은은 다음과 같다.

#!/bin/bash

#배열에 값 할당
array[0]="1"
array[1]="2"
array[2]="3"

#한번에 배열 선언
array=("1", "2", "3")

#배열의 값 사용
echo ${array[0]}

#배열 전체 길이 출력 : ${#array[@]}

#전체 출력 : ${array[@]}

#배열의 복사 
array=(${array[@]} "2")

 

6. 파라메터 전달

쉘을 수행할때 파라메터를 던져 줄 수 있다.

쉘을 수행할때 파라메터는 /test.sh 123 456 678 형태로 넘겨줄 수 있으며 수행되는 쉘 안에서는 $1 ~$9 형태로 받을 수 있다. 10번째 인자부터는 ${}로 감싸줘야 한다. 넘겨받은 인자는 몇가지 형태가 있으며 다음과 같다.

 

  • $0 : 실행된 스크립트명
  • $1~n : 넘겨받은 인자의 순서의 넘어온 값 $1, $2 ... $9 ... ${10}, ${11}....
  • $* : 전체 인자 값
  • $@ : 전체 인자 값
  • $# : 매개 변수의 총 갯수

7. 커맨드

  • 쉘 스크립트에서는 $(리눅스 명령어)의 결과인 표준 출력을 문자열로 치환한다.
  • 물론 변수에 할당도 가능하다. ex. today=$(date)

 

8. 따옴표

쉘 스크립트에서는 쌍따옴표(Double Quotation), 따옴표(Single Quotation), 역따옴표(Backquote)가 모두 다르다.

 

  • 쌍따옴표는 특수기호가 동작하는 문자열이다.

  • 작은 따옴표는 특수기호를 그대로 출력한다.

  • 역따옴표는 명령을 실행한 후 결과를 반환하는 따옴표이다.

#!/bin/bash

var1="hello"
var2="world"
var3="!!!"

echo "${var1} ${var2} ${var4}"
#result=> hello world !!!

echo '${var1} ${var2} ${var4}'
#result=> ${var1} ${var2} ${var4}


total=`free | grep Mem | awk '{print $2}'`

  문자에서 특수문자를 사용하기 위해서는 다음과 같이 한다.

쌍따옴표 "\""
'"'
쌍따옴표는 특수기호를 작성할 때 역슬러시를 이용
따옴표는 특수기로를 그대로 출력
따옴표 "'" 따옴표는 표기할 방법이 없음
역실러시 "\\"
'\'
역슬러시도 역슬러시로 표시할 수 있다.
따옴표는 특수기호를 그대로 출력

 

1. 접속 계정별 MaxClinet 설정

IfUser 를 사용하여 설정을 할 수 있다.

<IfUser user1>
    MaxClientsPerUser 10 "Sorry, %m hosts allow per one user"
</IfUser>
<IfUser user2>
    MaxClientsPerUser 1 "Sorry, %m hosts allow per one user"
</IfUser>

 

IfUser를 사용하기 위해서는 컴파일시 별도의 옵션을 줘야 한다.

./configure --with-modules=mod_ifsession
make
make install

 

2. Users, Hosts, Clients, Instances ?

- Users : ProFTPD 서버의 anonymous를 포함한 계정을 의미
- Hosts : 한대의 클라이언트 PC를 의미
- Clients : ProFTPD 서버에 접속한 모든 Users에 대해서 맺여진 세션을 의미, 즉 anonymous를 포함하여 ProFTPD서버에 인증을 통하여 세션이 맺어진 하나의 자식 프로세스(로그인 수)를 의미. 따라서 하나의 Hosts에서 2개 이상의 Clients가 있을 수 있고, 또한 같거나 서로 다른 User에 대해서 여러개의 Clients가 있을 수 있다.
- Instances : ProFTPD의 모든 자식 프로세스를 의미하는데 이 수는 인증 대기 상태에서도 자식 프로세스가 생성됩니다. 이 때 자식 프로세스는 Clients가 있을 수 있습니다. 따라서 Clients라고 하면 보통 하나의 클라이언트 컴퓨터를 의미하지만 ProFTPD 설정 파일에서는 인증을 통하여 세션이 맺어진 자식 프로세스를 의미

 

3. MaxClients, MaxClientsPerHost , MaxClientsPerUser , MaxHostsPerUser  ?      

- MaxClients           : 세션이 맺어진 최대 자식 프로세스 수 제한 
- MaxClientsPerHost : 하나의 Host 에서 최대 Clients 수 제한(접속 제한 수) 
- MaxClientsPerUser : 하나의 User 에서 최대 Clients 수 제한(접속 제한 수) 
- MaxHostsPerUser  : 하나의 User 에서 최대 Hosts(하나의 컴퓨터) 수 제한 (ID 공유 제한)

 

4. Timeout 관련 설정

- TimeoutIdle : idle 상태로 접속을 유지할 수 있는 시간
- TimeoutNoTransfer : 파일 전송이 없는 상태로 접속을 유지할 수 있는 시간
- TimeoutLogin : 로그인 인증을 유지할 수 있는 시간

'DEVELOPMENT > Server' 카테고리의 다른 글

Synology Git Server  (0) 2021.11.15
docker container vi 설치  (0) 2021.01.05
apache 일반 계정으로 실행하기  (0) 2019.01.14
CentOS7에 Apache 서비스 등록  (0) 2017.12.27
wildfly jsp 동적으로 변경사항 적용하기  (0) 2017.12.02

spring을 사용하다 보면 요청 url 매핑을 정의하게 되는데 여기에 사용되는 url 매핑 방법이 Ant-Style path patterns이라고 한다.

?, *, **과 무슨 뜻인지 알고 쓰자.


? : 1 개의 문자와 매칭 

* : 0개 이상의 문자와 매칭

** : 0개 이상의 디렉터리와 파일 매칭