끄적끄적

유용한 명령어 정리 본문

개발 툴 사용관련

유용한 명령어 정리

monkeydev 2021. 6. 10. 00:54

1. 특정 경로의 파일들에서 특정 키워드가 들어가는 파일 찾기

# 현재 디렉토리의 모든 파일들에 대해, "hello world" 라는 키워드를 찾는다.
# -d "recurse"은 grep에서 제공하는 옵션으로 디렉토리에 대해 recursive하게 찾으라는 뜻이다.
# default 옵션은 -d "read"이기 때문에 -d 옵션을 주지 않으면 지저분하게 아래와 같은 출력이 생긴다.
# folder1 Is a directory
# folder2 Is a directory
$ find . -name "*" | xargs grep -d "recurse" "hello world"

 

2. 복잡한 문자열에서 ip만 추출하여 print 찍어주는 파이썬 스크립트

import re
from functools import cmp_to_key
text = '<table class="fixed-table wrapped confluenceTable"><colgroup><col style="width: 140.0px;" /><col style="width: 212.0px;" /><col style="width: 91.0px;" /><col style="width: 129.0px;" /><col style="width: 357.0px;" /></colgroup><tbody><tr><td class="confluenceTd"><p class="p1">172.20.15.12</p></td></tr><tr><td class="confluenceTd">172.20.15.26</td></tr><tr><td class="confluenceTd"><span>172.20.15.27</span></td></tr><tr><td class="confluenceTd">172.20.15.21</td></tr><tr><td class="confluenceTd"><span>172.20.15.22</span></td></tr><tr><td class="confluenceTd">172.20.15.25</td></tr><tr><td class="confluenceTd">172.20.15.24</td></tr><tr><td class="confluenceTd"><p class="p1">172.20.15.28</p></td></tr><tr><td class="confluenceTd">172.20.15.31</td></tr><tr><td class="confluenceTd"><span>172.20.15.33</span></td></tr><tr><td class="confluenceTd"><span style="color: #000000;">172.20.15.18</span></td></tr><tr><td class="confluenceTd">172.20.15.32</td></tr><tr><td class="confluenceTd">172.20.15.39</td></tr><tr><td class="confluenceTd"><span style="color: #172b4d;">172.20.15.36</span></td></tr><tr><td class="confluenceTd"><span style="color: #172b4d;">172.20.15.37</span></td></tr><tr><td class="confluenceTd"><span style="color: #172b4d;">172.20.15.29<br /></span></td></tr><tr><td class="confluenceTd"><span style="color: #172b4d;">172.20.15.40<br /></span></td></tr><tr><td class="confluenceTd">172.20.15.51</td></tr><tr><td class="confluenceTd">172.20.15.52</td></tr><tr><td class="confluenceTd">172.20.15.54</td></tr><tr><td class="confluenceTd">172.20.15.55</td></tr><tr><td class="confluenceTd"><p><span>172.20.15.48</span></p></td></tr><tr><td class="confluenceTd"><p><span>172.20.15.49</span></p></td></tr><tr><td class="confluenceTd">172.20.15.62</td></tr><tr><td class="confluenceTd">172.20.15.64</td></tr><tr><td class="confluenceTd">172.20.15.44</td></tr><tr><td class="confluenceTd">172.20.15.45</td></tr><tr><td class="confluenceTd">172.20.15.46</td></tr><tr><td class="confluenceTd"><span style="color: #172b4d; text-decoration: none;">172.20.15.61</span></td></tr><tr><td class="confluenceTd"><span style="color: #393939;">172.20.15.53</span></td></tr><tr><td class="confluenceTd">172.20.15.60</td></tr><tr><td class="confluenceTd">172.20.15.58</td></tr><tr><td class="confluenceTd">172.20.15.66</td></tr><tr><td class="confluenceTd">172.20.15.67</td></tr></tbody></table>'
pattern = r"((([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])[ (\[]?(\.|dot)[ )\]]?){3}([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]))"
ips = [match[0] for match in re.findall(pattern, text)]
#ips.sort(key=lambda x: (x[0].split(".")[-1], x[1].split(".")[-1]))
def compare(item1, item2):
    if item1.split(".")[-1] > item2.split(".")[-1]:
        return 1
    elif item1.split(".")[-1] < item2.split(".")[-1]:
        return -1
    else:
        return 0
result = sorted(ips, key=cmp_to_key(compare))
for ip in result:
    print(ip)

 

3. ssh를 이용한 포트 터널링 방법

# local의 10002 포트를 aiv01.aml.ahnlab.co.kr 서버로의 10001 포트로 tunneling 한다.
$> ssh -v -L 10002:aiv01.aml.ahnlab.co.kr:10001 user@aiv01.aml.ahnlab.co.kr 

 

4. vim으로 문자열 모두 replace

# 1 ~ 전체라인($)에 대해 http://172.18.200.70:8999 문자열을 모두 https://livy.blabla.com으로 수정한다.
:1,$s/http:\/\/172.18.200.70:8999/https:\/\/livy.blabla.com/g

 

5. 정상적으로 요청하고 있는지 tcpdump로 확인

프록시등의 이유로 정상적으로 서비스 접근이 안되고 있는 상황인지 인지할 때 유용하다.

분명히 요청을 보냈는데, 그 호스트에 대해 connection timeout등이 발생하는 상황을 캐치한다.

# tcpdump -i [네트워크 인터페이스명] host [도메인네임]

# 입력 예시
$ tcpdump -i ens33 host abis.ahnlab.com

'개발 툴 사용관련' 카테고리의 다른 글

MAC에서 IntelliJ 단축키  (0) 2022.06.24
Apache AirFlow를 이용한 scheduling 경험 기록  (0) 2019.06.07
Comments