MISCELLANEOUS NOTES

Miscellaneous notes by euikook
Unsplashed background

All Posts

Run Gitlab Runner in a container more_horiz

Run Gitlab Runner in a container

Prerequisites

Usages

Clone Repository

git clone https://gitlab.com/euikook/gitlab-runner-compose.git

Configuration

  • Replace CI_SERVER_URL value with your Gitlab server e.g. https://gitlab.com
  • Obtain a token for a shared or specific Runner via GitLab’s interface and replace REGISTRATION_TOKEN value
tee .env << END
CI_SERVER_URL=https://gitlab.com/
REGISTRATION_TOKEN=zDsz34JuZf95NoBaQPX
END

Registration and run gitlab-runner

docker-compose up -d

References

Keep persistent SSH session using autossh and cron more_horiz

Keep persistent SSH session using autossh and cron

Background Knowledge

SSH Tunneling

  • Local Port Forwarding: used to forward a port from the client machine to the server machine.
  • Remote Port Forwarding:

Local Port Forwarding

ssh -L [bind_addr:]port:target_addr:target_port user@server
  • bind_addr
  • port
  • target_addr
  • target_port
  • user
  • server

Remote Port Forwarding

ssh -R [bind_addr:]port:target_addr:target_port user@server
  • bind_addr
  • port
  • target_addr
  • target_port
  • user
  • server

Please see http://dirk-loss.de/ssh-port-forwarding.pdf

RPi(Raspberry Pi) Username 변경하기 more_horiz

RPi(Raspberry Pi) Username 변경하기

How to change default account username for RPi(Raspberry Pi)

Raspberry Pi 공식 이미지의 username 과 password는 다음과 같다.

username: pi
password : raspberry

쓸때마다 느끼는 거지만 pi 와 raspberry는 정말 손에 익지 않는다. 키보드로 칠때마다 오타가 나서 한번에 로그인 할때가 거의 없다. pi 계정을 계속 쓰면 보안 문제도 생길 수 있으니 자신만의 손에 익은 username과 password로 변경 해 보자.

먼저 root 계정으로 로그인 해야 한다. 먼저 root 로 로그인 하기 위하여 root 계정의 Password를 설정한다.

sudo passwd root
Synergy - Software KVM more_horiz

Synergy - Software KVM

작업을 하다 보면 한 책상위에서 여러대의 PC로 작업을 해야 하는 경우가 생긴다. 나의 경의 예전에 개발은 Linux 머신에서 문서 작업 및 기타 업무는 Windows PC에서 진행을 하고는 했었는데 키보드와 마우스가 항상 문제였다. 모니터야 source를 변경 하면 (귀찮기는 하지만) 쉽게 되지만 Keyboard와 마우스를 공유 하려면 별도의 KVM을 구입 하야야 한다. KVM 없이 공유 할 수 있는 솔루션을 찾다가 Synergy라는 S/W KVM을 찾았다. 키보드와 마우스만을 공유 할 수 있으니 엄밀히 말하면 KVM이 아니라 KM 이다. Synergy를 사용한지는 Open source 일때 부터이니 10년도 더 지났다. 그때 이 소프트웨어가 너무 마음에 들어 기부하고 받은 1.8 버젼용 Pro License를 아직 사용가능 하다. 몇년전 Symless라는 회사를 만들고 본격적으로 판매를 하고 있더니만 작년에 Synergy 2가 나왔고 2017년 말에 2를 12달러에 판매하는 프로모션이 있어 잽싸게 구매를 하였다. 현재 Basic, Pro 버전이 있으며 각각 29, 39 달러에 판매 되고 있다. https://symless.com/

History 파일에서 특정 엔트리 삭제하기 more_horiz

Remove specific history entries from history file

History 파일에서 특정 엔트리 삭제하기

History 파일에서 특정 엔트리 삭제하기

  작업을 하다 보면 민감한 정보가 History에 남아 있는 경우가 있다. 다음과 같이 명령 앞에 white space를 추가 하여 해당 명령을 history 파일에 남기지 않는 방법이 있다.

mysql -u root -ppassword -h localhost 

명령앞 빈칸(space)에 주목.

mysql -u root -ppassword -h localhost

아차 하는 순간에 민감한 정보가 History에 남아 있는 경우

왜 디렉터리 Hard link를 만들 수 없나요? more_horiz

왜 디렉터리 Hard link를 만들 수 없나요?

  디렉터리 Hard Link를 만들고 싶지만 만들어 지지 않는다.

예전에는 root 권한으로 -d 옵셥을 주면 만들어 진것 같은데 Ubuntu 16.04_에서 테스트 해보니 _root 권한으로도 디렉터리 Hard Link가 만들어 지지 않는다.

mkdir a
ln a b
ln: a: hard link not allowed for directory

디렉터리 Hard Link는 여러 문제점을 야기 시킨다. 디렉터리 Hard Link에 의해 발생할 수 있는 문제점들에 대하여 알아본다.

파일시스템에 루프를 만든다.

mkdir -p ~/a/b
cd ~/a/b
ln ~/a c
개발자와 시스템 관리자의 친구 tmux, GNU screen Alternative - 01 more_horiz

Usages of tmux, GNU screen Alternative

개발자와 시스템 관리자의 친구 tmux, GNU screen Alternative - 01

개발자와 시스템 관리자의 친구, tmux 에 대하여 알아보자

tmux는 GNU screen을 대체 할 수 있는 가장 매력적인 대안이다. Terminal Multiplex 로 매뉴얼은 다음에서 볼 수 있다.

http://man.openbsd.org/OpenBSD-current/man1/tmux.1

tmux의 주요 기능에 대하여 알아본다. 먼저 세션 유지 기능과 화면 공유 기능에 대하여 알아보자.

세션 유지 기능

PuTTY등으로 SSH 세션을 연결 한 후 프로그램을 실행하여 작업 도중 네트워크 문제 등으로 세션이 끊겼기면 Logout이 되면서 해당 쉘에서 작업 중이던 모든 작업이 Hangup Signal (SIGHUP)을 받아 Termination  된다. 자칫 작업한 내용을 잃어 버릴 수도 있다.

예를 들어 아래와 같은 상황들이 있을 수 있다.

  • 장시간 미사용으로 인항 세션 해제
  • Windows 자동 업데이트로 인한 시스템 재시작으로 인한 세션 해제
  • 네트워크 불안으로 인한 세션 해제
  • 정전등 전원 불안으로 인한 세션 해제
Insync - Linux에서 Google Drive Desktop Client 사용하기 more_horiz

An Alternative Google Drive Desktop Client for Linux

Insync - Linux에서 Google Drive Desktop Client 사용하기

데스크탑을 Linux로 써온지도 벌써 10년 가까이 되어 간다. 처음 데스크탑을 Linux로 변경하고 불편했던 인터넷 뱅킹등의 문제는 스마트폰에서 은행 업무를 볼 수 있게 되면서 해결되었다. 그외 민원업무등 반드시 Windows가 필요한 일은 VirtualBox를 통해 해결한다.

그외 어플리케이션들은 Linux Alternate나 google docs 같은 웹 기반 어플리케이션으로 대체 가능하다.  하지만 데이터 백업 및 관리용으로 사용하는 Google Drive는 신뢰할 수 있는 Alternate가 없어 고민 했하던 차에 3년전 즈음에 insync라는 Application을 알게 되었다 유료지만 요즘 트렌트인 정기 결제가 아닌 one time 결제로 사용 가능하고 각 배포판용 Repository도 별도로 제공 하기때문에 설치 역시 간편하다.  headless application도 지원 하기 때문에 UI 없이 콘솔 상에서 실행도 가능하다. https://www.insynchq.com   다른 Agent들과 비교한 자료를 원하면 아래 사이트를 참조 하기 바란다. https://itsfoss.com/use-google-drive-linux/

Insync 설치

Add APT Repository

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ACCAF35C

/etc/apt/sources.list.d/insync.list 을 생성 한다. 내용은 다음과 같다.

deb http://apt.insynchq.com/[DISTRIBUTION] [CODENAME] non-free contrib

Ubuntu 16.04 경의 [DISTRIBUTION]ubuntu [CODENAME] 은 _xenial_을 입력한다.

echo deb http://apt.insynchq.com/ubuntu xenial non-free contrib | sudo tee /etc/apt/sources.list.d/insync.list

Installation

sudo apt-get update && sudo apt-get install insync
RSYNC+SSH 를 이용한 증분 백업 설정 및 Cron을 이용한 자동화 more_horiz

Incremental Backup Using RSYNC+SSH and cron

RSYNC+SSH 를 이용한 증분 백업 설정 및 Cron을 이용한 자동화

관리 하는 서버가 많아지고 서버에 저장되는 데이터의 양이 늘어 날 수록 백업을 어떻게 하여야 하는지 고민이 생긴다. 이 포스트에서는 RSYNC와 SSH를 이용하여 여러 서버의 데이터를 백업하고 이를 자동화 하는 방법에 대하여 기술 한다. 테스트를 위한 서버 구성은 다음과 같다.     아래 예제 에서는 S-01, S-02, _S-03_의 /home 디렉터리를 BackupBot으로 백업 하고자 한다.

공통 준비 사항

Backup User 생성

백업을 위한 사용자 계정을 생성한다.

sudo adduser --disabled-password --gecos 'BackupMan' backupman

SSH 키 생성 및 배포

SSH KEY 생성 (BackupBot)

ssh-keygen 명령으로 SSH KEY를 생성한다.

ssh-keygen -t rsa -b 4096 -f backupman -C BackupMan
Update Ubuntu Mirror Site in sources.list more_horiz

Update Ubuntu Mirror Site in sources.list

sudo sed -i 's|http://archive.ubuntu.com|http://ftp.daumkakao.com|g' /etc/apt/sources.list
Change NodePort range local kubernetes more_horiz

Change NodePort range local kubernetes

Add following line to add following line to /etc/kubernetes/manifests/kube-apiserver.yaml

- --service-node-port-range=80-32767

Examples

sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
- --advertise-address=172.168.2.11
- --service-cluster-ip-range=10.96.0.0/12
- --service-node-port-range=80-32767
- --client-ca-file=/etc/kubernetes/pki/ca.crt
VirtualBox에서 4개 이상의 네트워크 인터페이스(NIC) 설정하기 more_horiz

More than 4 NICs in VirtualBox

VirtualBox에서 4개 이상의 네트워크 인터페이스(NIC) 설정하기

VirtualBox에서서 네트워크를 구성하여 테스트환경을 만들다 보면 4개 이상의 NIC 이 필요 할때가 종종 있다. 하지만 UI에서는 4개 까지만 NIC을 설정 가능하기 때문에 Command Line Interface를 통해 NIC을 생성하고 설정 하여야 한다. 설정 방법은 다음과 같다. 각 모드에 대한 자세한 내용은 다음 페이지를 참조 하기 바란다. https://www.virtualbox.org/manual/ch06.html

Bridge Mode

VBoxManage modifyvm test-vm --nic5 bridged
VBoxManage modifyvm test-vm --bridgeadapter5 eno1

Host Only Mode

VBoxManage modifyvm test-vm --nic5 hostonly
VBoxManage modifyvm test-vm --hostonlyadapter5 vboxnet0
git fetch all branches and push it to another remote more_horiz

git fetch all branches and push it to another remote

git fetch all branches and tags from origin, then push it to new remote

git fetch --all
for branch in `git branch -r`; do git branch --track ${branch#origin/} $branch; done
git remote add new https://newrepos.com/new.git
git push new --all
git fetch --tags
git push new tags
Linux Shell 에서 대소문자 치환 more_horiz

Linux Shell 에서 대소문자 치환

Linux tr 명령 사용

tr [:lower:] [:upper:]

Examples:

echo test | tr [:lower:] [:upper:]
menu