전체 글 46

Shell Script - unzip 자동화

# zip 파일 리스트 정보를 가지고, 바로 unzip 하는 코드 / 에러 발생시에 error.log에 어떤 파일이 잘못되었는지 저장함.exps=*.zipfor e in $expsdo    unzip $e || echo $e >> error.logdone   1. *.zip -> zip으로 끝나는 전체 파일 리스트를 다 불러옴 2. 불러온 결과를 exps 변수에 배열로 저장 3. 반복문 실행 (python과 비슷하나, 변수를 사용할 때 $를 꼭 붙일 것) 4. 조건문이나 반복문의 시작은 do, 끝맺음은 done 5. 반복이 돌면서 exps안에 있는 zip 파일명들을 하나씩 차례대로 e에 불러옴    ex) [a.zip b.zip] -> unzip a.zip / unzip b.zip 이 차례대로 실행됨 6..

Route 명령어를 이용한 리눅스 IP table 관리

사용하던 서버가 해킹으로 털려서 기록하는 command들 ip, port 들을 관리하는 명령어에는 ufw, iptables 등이 있지만 편의성을 위해route 명령어들을 이용함. - 특정한 해외 아이피 대역 차단xxx.xxx.xxx.0 으로 차단을 걸어 관련된 ip들이 접근되지 못하게 막음 0. 현재 IP routing table 조회$ route 1. 특정 ip (xxx.xxx.xxx.xxx) 차단 - 주로 해외 ip 차단에 이용했음$ sudo route add -host [특정 ip] reject 2. 특정 ip 차단 해제$ sudo route del -host [특정 ip] reject  이렇게 해도 다시 또 털리는 경우가 있으니,계속 서버를 주시하면서 특이한 ip 및 port가 연결되었는지 확인할 것

리눅스 로그인 이력 조회

사용하던 서버가 해킹으로 털려서 기록하는 command들 - 일단 이걸 보고 있다는 것은 이미 비밀번호가 유출된 것이므로, 제일 먼저 비밀번호부터 변경할 것$ sudo passwd 1. 로그인 기록 조회$ sudo last -f /var/log/wtmp 2. 로그인 실패 기록 조회$ sudo last -f /var/log/btmp 3. 현재 로그인 되어있는 계정 조회$ who 4. 마지막 로그인 계정 조회$ lastlog

[Error] Ping Temporary failure in name resolution

▶Error 해결- 인터넷 연결이 되었는지 확인 차 ping 커맨드 실행 $ ping www.naver.com  - Temporary failure in name resolution 에러 발생 $ sudo vi /etc/resolv.conf- 해당 resolv 파일의 nameserver 127.0.0.53 아래에 아래 2줄 추가  nameserver 8.8.8.8  nameserver 8.8.4.4 ♨ 수정을 했음에도 불구하고, 계속 resolv 파일이 초기화되는 문제 발생- resolv 재설치$ sudo apt-get update$ sudo apt-get install resolvconf - ping 다시 시도$ ping www.naver.com

[Error] error response from daemon: get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io on 127.0.0.53:53: server misbehaving

▶ Error 해결 - Docker 프로세스의 ip 설정에서 생기는 문제- Docker에 인터넷도 연결되지 않아, pull도 되지 않았고, apt-get update도 잘 되지 않았다. $ sudo vi /etc/resolv.conf- 여기에서 nameserver 127.0.0.53 으로 되어있는 바로 밑에 줄에 다음 밑에 두 줄을 입력한다.  nameserver 8.8.8.8  nameserver 8.8.4.4  ( 127.0.0.53 은 사용자가 의도하지 않은 정보라는 뜻이라고 함 - 공용 서버를 사용하는 경우에 나타나는 듯함) ▷도커 restart는 안 해도 되는데, 위의 resolv 수정을 시도했는데도 되지 않는다면 다시 restart 해볼 것$ sudo systemctl restart docker

좀비 프로세스 확인 command

$ top -b -n 1 | grep zombie 좀비프로세스 : 실행은 완료되었지만 정상적으로 종료되지 못한 프로세스 + PID를 계속 점유하고 있기에, 원활한 cpu 사용을 위해 종료해주는 것이 좋음 $ kill -9 [pid]위의 명령어를 이용하여 좀비프로세스를 종료하거나, 이를 실행한 부모프로세스를 종료하는 방법이 있음. - [-9] option : 프로세스 강제 종료 (작업 중인 내용 저장 안 되니 유의)

사용하고 있는 포트 및 프로세스 확인

$ lsof -i :3277 특정 포트만 사용하고 싶을 때 : 뒤에 원하는 포트번호를 붙이면 된다.-i는 특정 IPv4 address를 보게 해주는데, 이 때 예시처럼 포트번호만 봐도 되는 것이다. 서버 작업을 하고 있을 때,어느 사용자가 특정 포트나 특정 주소를 사용하고 있는지 확인할 때 사용하면 좋은 명령어이다. * 이 때 root 권한이 없다면 각 사용자(user) 본인이 킨 process만 확인할 수 있다.* 따라서 공동 작업을 하는 경우 각각 개인이 lsof 를 사용하여 확인해야 한다.

cannot remove [file name]: Device or resource busy

* rm -rf [파일명] or rm -rf [폴더명] 에러 - 간단하게 정말 말 그대로 어딘가에서 해당 파일 및 폴더를 사용하고 있다는 것! - 돌아가는 코드나 다운로드, 복사 및 붙여넣기 등 많은 경우에서 파일 및 폴더를 사용하고 있을 수 있음- 사용하고 있는 프로세스 확인 및 정상 종료 후 다시 시도! + 만약 프로세스를 kill 하는 경우$ kill -9 [process_id]

Python Structure 사용법

0. Dict 에서의 사용법AttributeError: 'dict' object has no attribute 'dataset'  파이썬의 Dict는 안의 객체를 참조할 때 . 으로 참조할 수 없다. configs = {   'dataset' : 'electricity'} configs.dataset 이라고 하면 위와 같은 에러가 난다.--> configs['dataset'] 으로 코드를 수정해야 한다.   1. Python Structure 객체지향적으로 python을 사용하고 싶다면 Decoration을 사용해야 한다. 1.1 Decoration을 import 한다.- from dataclasses import dataclass @dataclassclass Configs:    dataset:str ..