Linux
-
셸스크립트 - 파일 데이터 값 평균 내기Linux 2023. 1. 6. 02:19
1. xargs로 명령어에 넘길 인수를 먼저 처리하여 넘길 수 있다. 2. xargs에서 처리할 인수를 cat과 | (pipe)로 넘겨준다. (xargs의 기본 구분자는 개행문자 \n 이다.) 3. while, $# (인수 개수), shift (인수 당기기)로 $1 덧셈을 반복한다. 4. 소수점 계산은 bc를 이용해야 하므로 echo 와 | (pipe)로 계산식을 넘겨준다. #!/bin/bashsh sum=0 tot=$# while [ $# -gt 0 ]; do val=$1 shift sum=`echo "$sum+$val" | bc` done echo $sum echo `echo "scale=5; $sum/$tot" | bc` ``와 expr, echo 대신 $() 를 사용하는 방법도 있다. 물론 다양한..
-
mount, fsckLinux 2023. 1. 6. 02:13
mount, fsck 의 개념을 간단하게 정리한다. 1. mount 리눅스는 / (루트디렉터리)로 시작하는 트리 구조이다. 그러나 모두가 같은 디바이스(같은 하드디스크나 파티션)일 필요가 없다. 즉, 서로 다른 디바이스의 디렉터리를 트리 구조 어딘가에 연결해도 문제가 없다. 이렇게 연결하는 작업을 mount 라고 부른다. 연결을 해제하는 작업은 unmount라고 부른다. 2. fsck 파일 시스템을 제대로 마운트 해제 하지 않으면 파일 시스템 정보 불일치가 발생할 수 있다. 리눅스에서 사용하는 파일 시스템이나 최신 파일 시스템은 데이터를 쓰는 순서나 저널링(journaling) 구조를 이용해서 이런 문제 발생을 억제한다. 파일 시스템을 올바르게 마운트 해제하지 않았다면 다음 번에 사용하기 전에 일관성 검..
-
tcpdumpLinux 2023. 1. 6. 02:05
tcpdump의 사용법을 알아본다. 1. tcpdump tcpdump [option] [조건] 네트워크 인터페이스에서 트래픽 데이터를 취득할 때 사용한다. 패킷 내용도 확인할 수 있기 때문에 telnet 명령어처럼 평문으로 통신하는 명령어라면 로그인 암호, 실행한 명령어, 결과 등이 네트워크에 그대로 노출 될 수 있다. 1.1 주요 옵션 -c count : count개 패킷을 취득하고 종료한다. -F file : 패킷 필터링 조건을 file파일에서 읽는다. -i if : 인터페이스 if를 지정한다. -n : IP 주소/포트 번호를 호스트명/서비스명으로 변환하지 않는다. -N : 호스트명 중에 도메인명을 표시하지 않는다. -q : 일부 정보를 제외한 형식으로 표시한다. -r wfile : 패킷을 wfile..
-
ss, netstatLinux 2023. 1. 2. 01:53
ss, netstat의 사용법을 알아본다. ss, netstat 두 명령어 모두 네트워크 소켓 정보와 접속 상태를 표시한다. netstat이 널리 쓰이고 있긴 하지만 앞으로 제거될 명령어라 ss 사용을 추천한다고 한다. 1. ss 1.1 주요 옵션 -s : 각 프로토콜 통계 정보를 표시한다. -a : 사용 중이 아닌 소켓 정보도 표시한다. -l : 접속 대기 상태인 소켓만 표시한다. -n : 네트워크 주소를 숫자로 표시한다. -t : TCP 소켓 정보를 표시한다. -u : UDP 소켓 정보를 표시한다. -x : UNIX 도메인 소켓 정보를 표시한다. 1.2 출력 필드 Netid - 프로토콜명(tcp, udp, u_str 등) State - 소켓 상태 (ESTAB..) Recv-Q - 수신 실패 데이터 바..
-
dig, nslookupLinux 2023. 1. 1. 15:57
dig, nslookup 의 사용법을 알아본다. 도메인 명으로 IP 주소를 알아낼 때 사용한다. dig는 unix계열의 운영체제에 탑재되어 있고 더 많은 정보를 제공하여 nslookup보다 보편적으로 쓰인다고 한다. 1. 사용법 dig [@서버] [도메인명(-x)] [IP 주소] [쿼리 타입] 2. 주요 옵션 -x address : IP 주소가 address 인 호스트의 DNS 정보를 검색한다. 쿼리타입 a : 지정한 호스트의 IP 주소 aaaa : 지정한 호스트의 IPv6 주소 any : 모든 정보 mx : 지정한 도메인의 메일 서버 ns : 지정한 도메인의 공인 네임 서버 ptr : 지정한 IP 주소의 PTR soa : 지정한 도메인의 SOA hinfo : 지정한 호스트 관련 정보 (cpu, os....
-
traceroute(tracepath)Linux 2022. 12. 31. 22:02
traceroute(tracepath)의 사용법을 알아본다. 원격 호스트를 향한 네트워크 경로를 볼 수 있다. 1. 사용법 traceroute [option] host [port] tracepath [option] host [packet length] 2. 주요 옵션 2.1 traceroute -n : 주소를 호스트명이 아니라 IP 주소로 표시한다. -m maxttl : 패킷 최대 TTL을 maxttl로 설정한다. -p port : UDP 패킷을 port 포트로 보낸다. 기본값은 33434이다. 원격 호스트 포트가 이용 중이면 경로를 취득할수 없으므로 이 옵션으로 송신 대상 포트를 변경한다. -I : UDP 패킷 대신에 ICMP 패킷을 보낸다. -src src_addr : 수치 형태의 다음 IP 주소를 ..
-
셸스크립트 - 함수, bc, sed, awkLinux 2022. 12. 25. 00:27
함수, bc, sed, awk 사용법을 알아본다. 1. 함수 #!/bin/bash my_func() { echo $1 + $2 = `expr $1 + $2` } a=10 b=2 func $a $b 함수명() { 내용 } func 에 인수를 전달하여 $1, $2 과 같은 방법으로 전달 받을 수 있다. 셸 스크립트에선 일반적으로 사용되는 프로그래밍 언어에서의 return 개념이 없다. 결과 값을 전달 받는 방법으로 3가지 정도가 있는데 다음과 같다. 1.1 echo string func() { test=123 echo "result is ${test}" } res=$(func) echo $res --- 실행 화면 --- result is 123 1.2 return exit status func() { ret..
-
셸스크립트- for, seq, while, expr, getoptsLinux 2022. 12. 24. 02:47
for, seq, while, expr, getopts의 사용법을 알아본다. 1. for for 변수명 in 문자열1 문자열2 ... #!/bin/bash for name in dir1 dir2 dir3; do mkdir $name done do 와 done 사이의 처리를 반복한다. 2. seq 위의 예제를 seq를 사용하면 더 간단해진다. #!/bin/bash for i in `seq 1 3`; do mkdir dir$i done ` 백쿼테이션 기호로 감싼 부분은 명령어를 결과로 치환한다. 변수 i 에 seq 1 3 을 실행한 결과를 하나씩 대입하게 된다. 3. while #!/bin/bash num=1 while [ $num -le 3 ]; do echo $num num=`expr $num + 1` ..