05. DeskLinux2017.06.15 22:31

오랜만에 로그인하니, 휴면계정이라고 나타나는군요;;


간만에 포스팅입니다.


라즈베리파이2를 가지고 많은 테스트를 해보았으나 사용할수록 내린 결론은 아쉽게도

 > 스펙 부족

이였습니다.


1) mysql, apache, php든 뭐든 올려서 가지고 놀 심산으로 사용하다가 너무 느려 포기

2) kodi설치 (당시 xbmc였던걸로..) 역시 느리고

3) 또 한 usb2.0과 wifi 네트워크의 부재

   모듈이 있었지만, wiki setting 후 토렌트 머신으로 돌리기에 wifi가 너무 느렸습니다 

   (무슨 문제인지는 못찾았습니다. drop packet나 error packet는 없었습니다)


그래서 방치하고 있다가 우연히 tvheadend를 발견하고 라즈베리비안을 설치 했습니다.

  (사실 목적은 tvheadend에서 사용할 packet dump목적으로.. / 별도 나스장비가 돌고 있어서 나스에 올리렸던 작업이였습니다.)


* 라즈베리비안은 설치과정이 많이 있으무로 무시하겠습니다

* 라즈베리비안 세팅과정도 많으므로 무시하겠습니다.

* tvheadend의 가장큰 목적은 베트남 여행가서 한국 티비를 못보는 불편함때문이였습니다 (모 티비 앱이 해외에서 되었는데 - VPN 경유하면) 안되서 찾아보게 되었습니다.


tvheadend - 설치

 - 라즈베리비안은 데비안 (우분투) 계열이기 때문에 apt-get과 dpkg 명령어로 패키지 설치가 가능합니다

 - 본인은 컴파일 했습니다 (...? 왜 컴파일 했는지는 기억나지 않습니다..최신 버전 패키지 설치하기 싫어서였던것 같네요)


라즈베리비안 데스크탑 모드는 개발툴이 아무것도 없고 그냥 입맛에 맛게 설치했습니다.

 > gcc, glibc, make, cmake, openssl, zlib 정도였습니다 (그냥 늘상 사용하는 개발툴이기에 tvheadend가 필요한 패키지는 정확히 모르겠네요)


컴파일 별거 없습니다.


1. 압축 풀고

tar zxvf tvheadend-version.tar.gz 


2. 컴파일 돌리기

./configure && make


3. 실행

./build.linux/tvheadend -C # 최초 설치시 비밀번호 묻는 창이 나오기 때문에 C옵션으로 바로 진입이 가능합니다.

                                   # 웹 UI에서 계정 설정등이 가능합니다


4. 서비스 포트 확인

 - 9981이 기본포트입니다.


######## 이하 tvheadend는 다른 블로그에 많은 UI자료가 있으니 참고 부탁 드립니다 (건성건성)


tvheadend에서 사용할 포트를 찾는게 문제였습니다.

omvs? omvp를 통해 쉽게 하는 방법이 있으나 어떤 이유인지 안됩니다

 (몇시간, 몇일이 걸렸다는 블로그 글보고 사실 포기했습니다)

 - windows는 잼병이라...(위 유틸이 우분투 용도 있었으나 라즈베리파이는 arm CPU라 기동이 불가능했습니다)

 - wireshark를 통해 udp, igmp를 뽑아봐도 안나오고 (방화벽, 보안 프로그램 모두 off상태, 유선랜)


tcpdump를 통해 확인하니 모든 채널 검색하는데 약 10분이 걸립니다. (참고로 *K를 사용합니다)


tcpdump igmp

tcpdump udp 


# 굳이 pcap으로 로그를 남기지도 않았습니다.

# 그냥 흘러다니는 패킷만 잡았습니다.

# 단 iptv를 ON시켜둔 상태로 작업을 해야하며 채널을 변경해가면서 패킷의 흐름을 보면 됩니다.

# 불편하시면 tcpdump 옵션에 host를 iptv IP로 지정하면 조금더 분석에 수월합니다.


그럼 multicasting IP와 port 확인이 가능합니다.


######## 이상 tvheadend에서 사용 할 데이터입니다


그럼 다른 블로그 글을 보시고, tvheadend를 열심히 세팅하시면 됩니다.


그 후 kodi 설치

이번엔 컴파일도 귀찮아서 apt-get install kodi 한줄로 끝냈습니다.

이후 kodi 라고 치면 됩니다 (GUI이니 putty같은 콘솔에서 하신다면 xhost를 세팅해야할겁니다...) - 귀찮아서 tv앞에서 세팅했습니다.


######### KODI는 tvheadend 보다 더 많은 자료가 많이 있습니다. 참고 해주십쇼...


이후 티비 시청하는 방법은 2가지가 되었습니다.

1. tvheadend

2. tvheadend에서 생성한 m3u (vlc player, windows media player) 다운로드 후 별도 보관



추신1> iptv 해상도 탓에..(1920*????)로 출력되더군요, 모바일 (lte)망에서는 요금 폭탄 맞기 쉽상입니다.

          (구글님이 알려주시길 sd채널도 있다던데...못찾았습니다)

추신2> tvheadend를 설정할 때 옵션을 잘못 설정하면 tvheadend 재기동시 모든 채널 (200개넘는..)의 udp를 수신받으며 내부 네트워크망이 다운될수도 있습니다 (뭘 잘못 세팅했는지 모름...뭔가 변경하니 멀쩡해졌습니다)




요청 > 라즈베리파이 4에 대한 루머뿐이 없는지요...mem, cpu, usb, giga lancard 4가지 정보를 알고 싶습니다.

저작자 표시 비영리 변경 금지
신고
Posted by 신머루군
00. Daily/Funny2015.07.03 23:00

하...잠깐 눈물좀 닦고 글쓰기 시작 합니다..


집에 사용중인 공유기는 I*T*M* *8*0* 모델을 사용하고 있습니다  - 2년 넘도록 장애 펑펑 나는지도 모르고 사용했습니다.

(당시 기가네트워크 지원하는 공유가 없던 차라 비싸게 주고 샀습니다.....)


그러다가 최근 asus rt-87 혹은 rt-68p 끌리고 있었지만 애증의 newegg여서 구매도 못하고 멍 때리고 있고....


뭐 첫 알리 구매를 해보고 싶어 wt3020 미니 공유기를 (내가 이걸 왜 주문 했는지 모르겠지만...-_-) 구매 했고 한 15일 만에 집에 왔습니다.


(여기까지는 그냥 여담)



wt3020 좋은점

 - 5핀 충전 포트

 - 성냥곽 만한 크기 (는 거짓말이고 담배곽 만한것 같습니다)

 - FULL SIZE USB지원 (무전원 외장하드는 그래도 무리더라...걍 usb 64Gb꼽는걸로 만족)

 - 13$에 맞지 않는 오버스펙 (8Mb의 ROM과 64MB의 메모리 - ddr1)

 - 그리고 openwrt 지원 (8Mb에 openwrt가 3Mb 소비하고, vpn(libzio지원이 쏠쏠하다), ftp, samba, transmisson 정도 설치 하면 끝..)

    (토렌트는 안쓰므로 패스)



나쁜점?

 - 메뉴얼 부실....(..아니 딴지걸게 없어서...)

 - ...? 에이 13$로 나쁜점 말하라고 하면 내가 나쁜놈 같잖슴..


뭐 그냥 장난감 아닌가? 라는 생각에 나도 넘어갈려고 했는데 무선 신호감도를 측정해보니


   I*T*M* *8*0* 안테나 4개 짜리 (의미없는 당시 구매가 10만원 아래...)

                    VS

  우리가 흔히 비꼬는 중궈산 인테나 


그래도 안테나 달린 I*T*M* *8*0*이 좋지만 인테나가 좋긴하지만, 만약 동일 스펙이였다면 3020F가 50% 출력이 좋은듯 싶다



※openwrt

 - linux kernel base (3.1.xxxxx)

   기본적으로 ssh접근이 가능하고, 내가 원하는 프로그램을 올릴수 있다.

 - 기본 명령어는 linux와 동일하며, package설치는 "opkg" 명령어를 통해 설치가 가능하다


opewrt : http://wiki.openwrt.org/toh/nexx/wt3020

openwrt download : https://mega.co.nz/#!jdRECSxA!tq4kk0zHI6aVbDfXVdNBYf5sXXbu7xw4SsvxoP9gYe4




저작자 표시 비영리 변경 금지
신고
Posted by 신머루군

Awk 자주 쓰게 되는 쉘상에서 데이터 조작이 필요 경우 입니다. (물론 awk, sed, grep 등등 조합으로 쓰기도 하지만)

 

히스토리는 관련 검색을 하면 많이 나오므로, 실무에서 사용 가능한 부분만 정리합니다.

 

알아야 단축어

FS

필드 분리자

awk -f "FS"

print

인쇄명령 (화면 출력)

Awk '{print $0}'

printf

Print 확장 (깔끔한 출력?) - 여타 다른 언어와 마찬가지로 char=c, int=d 제공

echo "awk" |awk '{printf "|%-15s|\n",$1}'

echo "awk" |awk '{printf "|%15s|\n",$1}'

OFMT

숫자 포맷 제어 (output format) : default %.6g (소수점 6자리 혹은 위로 6자리)

 

NR

레코드 번호

awk '{print NR" "$0}'

NF

현재 레코드에서 전체 필드

awk '{print NF}'

FNR

현재 파일의 전체 레코드

Awk '{print FNR}'

IGNORECASE

대소 무시

Awk -F: "{IGNORECASE=1}"

 

 

 

 

사용방법

 #>awk 'pattern' filename'

 

샘플 파일 (1.txt)

Kim 123 11/1/2 333

Wang 321 33/2/12 222

1Kim 222 33/11/33 333

  1. Awk 기본 구분자

Tab 문자열 혹은 공백입니다.

 

예제 > awk 1.txt '{print $1}'

          Kim

          Wang

Kim

123

11/1/2

333

Wang

321

33/2/12

222

$1

$2

$3

$4

 

처럼 컬럼이 나눠져 들어갑니다.

 

  1. 특정 패턴을 구분자로 경우

예제 > awk -F"/" 1.txt '{print $1}'

         Kim 123 11

 Wang 321 33

Kim 123 11

1

2 333

Wang 321 33

2

12 222

$1

$2

$3

 

시스템 명령어 조합으로 사용하기 ( | :파이프라인을 사용)

예제 > df|awk '{print $6}'

Mounted

/

/dev/shm

/data

/home

df 정보가 아래 처럼 나오는데 여기서 문자열을 구분해 $6번째 컬럼을 보여주는 예제입니다.

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/sda1             28898428   2552004  24878472  10% /

tmpfs                  1027296         0   1027296   0% /dev/shm

/dev/sda3             10321208   3427544   6369376  35% /data

/dev/sda2             61927420  42257352  16524340  72% /home

 

====================================================================

Awk 라인단위로 읽어 $0라는 내부변수에 담습니다. ( awk '{print $0' filename 라인 전체 출력)

 

awk -f 사용법

 awk -f (awk명령어 파일) filename

 

 예제> awk.run

{print $1" Hello~~~~"}

{print $1 $2}

 실행 > awk -f awk.run 1.txt

awk -f awk.run 1.txt

Kim Hello~~~~

Kim123

Wang Hello~~~~

Wang321

  라인에 대해 예제의 awk.run 파일을 적용하여 나타나도록 합니다.

 

grep 명령어 대용으로 awk 사용

예제> awk '/Kim/ {print $1 "   :" NR}' x

Kim   :1

        / / 부분은 정규식 표현이 가능하다

예제> awk '/^[K1]/ {print $1 "   :" NR}' 1.txt

Kim   :1

1Kim   :3

예제 > awk '/Wang/,/1Kim/ {print $0}' 1.txt

Wang 321 33/2/12 222

1Kim 222 33/11/33 333

Awk 필드 매치 (~)

예제> awk '$1~/Kim/{print $0 ":" NR}' 1.txt

Kim 123 11/1/2 333:1

1Kim 222 33/11/33 333:3

$1필드에서 Kim 포함된 라인전체와 줄번호 출력

예제> awk '$1!~/Kim/{print $0 ":" NR}' 1.txt

Wang 321 33/2/12 222:2

$1필드에서 Kim 들어가 있지 않은 라인 전체와 줄번호 출력

 

비교연산 (클까? 작을까? 같을까? 아니면 정규표현식? 위에 필드 매치 ~ 참조)

예제 >awk '$2 > 200' 1.txt

Wang 321 33/2/12 222

1Kim 222 33/11/33 333

 

If

 usage: (A ? B : C;)

{

if ($1 > $2)

x=$1

else

x=$2

}

 

예제> awk '{x=($2 > $4) ? $2 : $4; print x}' 1.txt

333

321

333

  1. $2번과 $4필드값을 비교
  2. $2 필드가 $4보다 크면
  3. 물음표 ? $2값을 x 할당
  4. 그렇지 않으면 : 뒤의 $4값을 x 할당

 

특정 컬럼 전체 SUM하기

예제> awk '{sum+=$2} END {print sum}' 1.txt

특정 컬럼끼리 SUM하기

예제> awk '{sum=$2+$4; print sum}' 1.txt

Awk에서 특정 변수 선언해서 사용하기

예제> awk1.run (파일생성)

         {print $var}

        awk -f awk1.run -v var=2 1.txt

123

321

222



아직은 기초입니다...기초..=_=;;Awk 자주 쓰게 되는 쉘상에서 데이터 조작이 필요 경우 입니다. (물론 awk, sed, grep 등등 조합으로 쓰기도 하지만)

 

히스토리는 관련 검색을 하면 많이 나오므로, 실무에서 사용 가능한 부분만 정리합니다.

 

알아야 단축어

FS

필드 분리자

awk -f "FS"

print

인쇄명령 (화면 출력)

Awk '{print $0}'

printf

Print 확장 (깔끔한 출력?) - 여타 다른 언어와 마찬가지로 char=c, int=d 제공

echo "awk" |awk '{printf "|%-15s|\n",$1}'

echo "awk" |awk '{printf "|%15s|\n",$1}'

OFMT

숫자 포맷 제어 (output format) : default %.6g (소수점 6자리 혹은 위로 6자리)

 

NR

레코드 번호

awk '{print NR" "$0}'

NF

현재 레코드에서 전체 필드

awk '{print NF}'

FNR

현재 파일의 전체 레코드

Awk '{print FNR}'

IGNORECASE

대소 무시

Awk -F: "{IGNORECASE=1}"

 

 

 

 

사용방법

 #>awk 'pattern' filename'

 

샘플 파일 (1.txt)

Kim 123 11/1/2 333

Wang 321 33/2/12 222

1Kim 222 33/11/33 333

  1. Awk 기본 구분자

Tab 문자열 혹은 공백입니다.

 

예제 > awk 1.txt '{print $1}'

          Kim

          Wang

Kim

123

11/1/2

333

Wang

321

33/2/12

222

$1

$2

$3

$4

 

처럼 컬럼이 나눠져 들어갑니다.

 

  1. 특정 패턴을 구분자로 경우

예제 > awk -F"/" 1.txt '{print $1}'

         Kim 123 11

 Wang 321 33

Kim 123 11

1

2 333

Wang 321 33

2

12 222

$1

$2

$3

 

시스템 명령어 조합으로 사용하기 ( | :파이프라인을 사용)

예제 > df|awk '{print $6}'

Mounted

/

/dev/shm

/data

/home

df 정보가 아래 처럼 나오는데 여기서 문자열을 구분해 $6번째 컬럼을 보여주는 예제입니다.

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/sda1             28898428   2552004  24878472  10% /

tmpfs                  1027296         0   1027296   0% /dev/shm

/dev/sda3             10321208   3427544   6369376  35% /data

/dev/sda2             61927420  42257352  16524340  72% /home

 

====================================================================

Awk 라인단위로 읽어 $0라는 내부변수에 담습니다. ( awk '{print $0' filename 라인 전체 출력)

 

awk -f 사용법

 awk -f (awk명령어 파일) filename

 

 예제> awk.run

{print $1" Hello~~~~"}

{print $1 $2}

 실행 > awk -f awk.run 1.txt

awk -f awk.run 1.txt

Kim Hello~~~~

Kim123

Wang Hello~~~~

Wang321

  라인에 대해 예제의 awk.run 파일을 적용하여 나타나도록 합니다.

 

grep 명령어 대용으로 awk 사용

예제> awk '/Kim/ {print $1 "   :" NR}' x

Kim   :1

        / / 부분은 정규식 표현이 가능하다

예제> awk '/^[K1]/ {print $1 "   :" NR}' 1.txt

Kim   :1

1Kim   :3

예제 > awk '/Wang/,/1Kim/ {print $0}' 1.txt

Wang 321 33/2/12 222

1Kim 222 33/11/33 333

Awk 필드 매치 (~)

예제> awk '$1~/Kim/{print $0 ":" NR}' 1.txt

Kim 123 11/1/2 333:1

1Kim 222 33/11/33 333:3

$1필드에서 Kim 포함된 라인전체와 줄번호 출력

예제> awk '$1!~/Kim/{print $0 ":" NR}' 1.txt

Wang 321 33/2/12 222:2

$1필드에서 Kim 들어가 있지 않은 라인 전체와 줄번호 출력

 

비교연산 (클까? 작을까? 같을까? 아니면 정규표현식? 위에 필드 매치 ~ 참조)

예제 >awk '$2 > 200' 1.txt

Wang 321 33/2/12 222

1Kim 222 33/11/33 333

 

If

 usage: (A ? B : C;)

{

if ($1 > $2)

x=$1

else

x=$2

}

 

예제> awk '{x=($2 > $4) ? $2 : $4; print x}' 1.txt

333

321

333

  1. $2번과 $4필드값을 비교
  2. $2 필드가 $4보다 크면
  3. 물음표 ? $2값을 x 할당
  4. 그렇지 않으면 : 뒤의 $4값을 x 할당

 

특정 컬럼 전체 SUM하기

예제> awk '{sum+=$2} END {print sum}' 1.txt

특정 컬럼끼리 SUM하기

예제> awk '{sum=$2+$4; print sum}' 1.txt

Awk에서 특정 변수 선언해서 사용하기

예제> awk1.run (파일생성)

         {print $var}

        awk -f awk1.run -v var=2 1.txt

123

321

222

저작자 표시 비영리 변경 금지
신고

'01. operation > iii. Shell Script' 카테고리의 다른 글

awk script 기초  (0) 2014.08.06
awk로 합계를 뽑아내보자.  (0) 2009.07.27
문자열 변경  (0) 2009.07.27
Posted by 신머루군

티스토리 툴바