기본 콘텐츠로 건너뛰기

추천 가젯

리눅스 홈서버 알림용 텔레그램 봇(Telegram Bot) 연동 및 쉘 스크립트 구축 가이드

개인 홈서버를 운영하다 보면 백업 완료 여부나 시스템 에러 같은 단방향 알림을 스마트폰으로 빠르게 받아보고 싶어집니다. 외부 메일 서버나 복잡한 SMTP 설정을 거치지 않고, 가장 확실하고 가볍게 쓸 수 있는 텔레그램 봇을 이용한 홈서버 알림 구축 방법 을 정리합니다. 1단계: 텔레그램 봇 생성하기 (BotFather) 텔레그램 앱을 켜고 상단 검색창에 BotFather 를 검색하여 공식 봇(파란색 체크마크 확인)을 엽니다. 대화창에 아래 명령어를 입력하여 새로운 봇을 만듭니다. Plaintext /newbot 봇의 이름(Name)을 입력합니다. (예: My Home Server Bot ) 봇의 아이디(Username)를 입력합니다. (반드시 영문이며 끝에 bot 또는 _bot 으로 끝나야 합니다. 예: my_home_backup_bot ) 생성이 완료되면 HTTP API 토큰(Token)이 발급됩니다. 이 토큰을 안전하게 보관합니다. 2단계: 내 Chat ID(채팅방 고유 번호) 확인하기 텔레그램은 보안상 사용자가 먼저 봇에게 말을 걸어야 메시지를 받을 수 있으며, 봇이 나에게 메시지를 보내려면 고유 Chat ID 가 필요합니다. 텔레그램 검색창에 userinfobot 을 검색하여 들어갑니다. 하단의 [시작하기] 버튼을 누르면 내 계정의 정보와 함께 Id (숫자) 값을 알려줍니다. 이 숫자를 복사해 둡니다. [중요] 1단계에서 만든 내 봇의 아이디(예: @my_home_backup_bot )를 검색해서 대화창을 열고, [시작] 버튼을 누르거나 아무 메시지나 먼저 한 번 전송해 둡니다. 3단계: 리눅스 쉘 스크립트 작성 및 테스트 서버(터미널)에서 환경변수를 설정하고 curl 명령어를 통해 테스트 메시지를 보낼 수 있습니다. 특히 인자값이 없을 때를 대비해 기본값 처리를 해두면 유용합니다. 아래 내용을 포함하는 쉘 스크립트 파일(예: send_telegram.sh )을 작성합니다. Bash #!/bin/bash # 환경변수 설정 (실제 토큰과 C...

lilypond 악보 프로젝트 - 가요 - 러블리즈(진) - 너만 없다.

너만없다. lilypond 결과물 pdf
너만없다. lilypond 결과물 midi
너만없다 lilypond 소스파일 아래 text랑 같은 내용.
http://lilybin.com/dt3ruj/1 음??? 블로그에서 midi재생하는 기능 어케하는겨...

text라서 나중에 github으로 모든 악보프로젝트 할 예정...
frescobadi - 작업 캡쳐.


\header {
  title = "너만없다"
  subtitle = "(Jin - Gone)"
}
global = {
  \key ef \major
  \time 4/4
  \tempo 4=77
}
jin = \lyricmode {
  기 억 이 머 물 다 간 그 자 리 에 손 끝 에 남 아 있 는 온 기 에 도
  니 가 있 다 있 다 너 의 향 기 너 의 얼 굴   -
  제 발 날 봐 날 봐 봐 날 봐 봐 나 이 렇 게 널 느 껴 널 느 껴 널 느 껴
  애 써 잡 은 말 투 애 써 잡 은 미 소 애 써 잡 은 넌 데
  - - - -
  우 리 함 께 있 던 그 공 간 에
  - 내 가 널 닮 아 가 던 그 순 간 에
  - - - 빗 속 을 그 냥 걸 어 도 너 무 좋 았 던 - 니 가 없 다 - 니 가 없 다
  어 떻 게 나 혼 자 서 널 지우 고 살 아
  - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - - - - - - - - -
  함 께 걸 어 가 던 그 시 간 에 - - - -
  - - - - - - -
  - - - - - - - - - - - -
  - - - - - - - - - - - - - - - - -
  - - - - - - - -
  함 께 걸 어 가 던 그 시 간 에  - -
  _ 그렇게 만 들 어 가 던 추 억 까 지 도 미 련 까 지 도
  머 문 자 리 에  _ _ _ __ _
  _ _ 난 서 있 다
  _ _ _ _ _ _  너무 그 리 워
}
right = \relative c'' {
  \global
  % Music follows here.
  r8 f f f16 f16~ f8 ef d ef
  f4 f8 d ef4 r
  r8 f f f16 f16~ f8 ef d ef
  \break
  r8 f8 f g d4 r
  ef8 f d ef~ ef4. d8
  ef2~ ef8 bf bf g'
  \break
  af2~ af8 bf, bf af'
  af4 r f4. bf,16 bf
  f'8 g~ g bf, f'8 g~ g bf,
  \break
  <af f' >8 g'~ g bf, <bf d af'> g' f ef
  <f a,>8 g r a, f' g r a,
  <cf d af'>8 g'~ g d af' g f d
  \break
  <g, bf ef>4 r8 bf <ef af> g f d
  <af bf ef>4 r8 bf <bf' ef,> af g bf
  <c, af'>4 r r8 af c ef
  \break
  <af, bf ef>4 r8 bf16 bf af'8 g16 f~ f ef8 f16
  <bf, f'>8 g'16 g~ g2.
  \break
  <af bf,>4 r16 bf,16 bf bf <bf d f bf>8 g'16 f~ f ef8 ef16
  <f c a>8 g16 g~ g4 r a,8 c
  \break
  <c ef g,>4~ <c ef g,>16 g' g g <cf cf,>8 g16 f~ f ef ef8
  <f bf,>8 g16 g~ g af g8~ g16 bf, af' g~ g af g8
  \break
  r16 bf, af' g~ g bf bf8~ bf bf <af c,> <g bf,>
  <ef  bf'>8 c'16 af~ af g af8 ~ af <g bf,> <af c,> <af c,>16 <af c,>~
  \break
  <af c,>2 r8 g ef d16 f
  r16 <ef cf> <ef cf>8 r4 r8 ef8 f ef16 <f bf> ~
  \break
  <f bf>4 r4 r8 af g ef
  \break
  cf4 r8 ef <ef bf'>8. <ef af>16 r <ef bf'>~ <ef bf'>8
  \break
  <bf g'>4 r8 <bf g'>16 <bf g'> <bf g'>8 <bf d f  bf>~ <bf d f  bf> <g bf ef> ~
  <g bf ef>4 r8 <g bf ef> <g bf ef> <bf ef g> r <d f a d> ~
  \break
  <d f a d>4 r8 <d f a d> r8 c d < af c ef>
  < af c ef> af <af c ef f> af <af c ef g> af <af c ef af> <c ef af c> ~
  \break
  <c ef af c>4 r8 bf'16 bf bf8  g16 f~ f ef8 ef16
  f8 g16 af ~ af g ~ g8 r2
  \break
  <f c af>4  r8 af,16 f' <f, a b d>4 d''16 cf  \times 2/3 {g[ d cf] }
  g4 ~ g16 g ef' d ef4 g,8 af
  \break
  <df, bf'>4 <af' f'> < df af'> <bf g'>
  <c g ef>4~ <c g ef>16 g c d <ef a, f>8 f <d a f> c
  \break
  <bf f d>4~ <bf f d>16 f bf c <df bf e,>8 ef <c g e> bf
  <af ef c>8. c,16 ~ c ef af g af8 bf <c ef,> <d f,>
  \break
  <ef af, f>4 <f af,>8 bf,16 bf <ef af c>8 bf'16 af~ af g g8
  \break
  <af f df af>8 <bf f df>16 <bf f df> ~ <bf f df>4 ~ <bf f df>8.  <bf f df>16 ~ <bf f df>8 af
  \break
  <g e c g>4 r16 c,,8 c16 <c e g c>8 bf'16 <af e c> r8 g
  \break
  r8 <bf e, c>16 af <af ef c> g <af ef c>8 r8 <c ef bf'>16 af' <af ef c> <g ef> <af ef c>8
  \break
  <ef cf af g>4 <c af > <bf g ef> <af ef cf>
  <g ef bf>4 ~ <g ef bf>16 g, bf ef  g bf ef ef, g8 af
  \break
  <f ef cf>8. cf'16 ef f cf' ef f8 g, ef d
  <g, ef>4 bf <d g, ef> c
  \arpeggioArrowUp
  <bf ef, c>8 af c, ef <cf ef g>4\arpeggio f
  f8 g d bf g2

}
left = \relative c {
  \global
  % Music follows here.
  c8 g' f'4 ef r
  ef,8 cf' af'4 <bf, ef g> \arpeggio r
  d,8 a' f'4 g r
  \break
  g,,8 f' <b cs>4 cf,8 g' d'4
  c,8 g' ef'4 bf,8 g' ef'4
  af,,8 ef' g ef' g,, ef' bf'4
  \break
  f8 c' \clef treble  bf' c, <e af>4 r  |
  \clef bass  bf,8 a' cf f bf,4 r
  ef,8 bf' g'8. f16 ~f8 ef bf4
  \break
  ef,4 f'8. d16 r4 ef
  <c d,>4 f r a,
  <g f'> cf f r
  \break
  c,8 g' ef'4 bf,8 g' ef'4
  af,,8 ef' bf'4 g,8 ef' bf'4
  f,8 ef' af c ef4 r
  \break
  bf,8 af' c ef d4 r
  ef,8 bf' f' g ef, bf'16 f' ~ f g r8
  \break
  ef,8 bf' f' g ef,4 g'
  d,8 a'16 c~ c f8 a,16 c8 f r4
  \break
  g,8 d' f4 <f g,> r
  c,8 g' ef'4 bf,8 g' ef'4
  \break
  af,,8 ef' bf' c ef4 r8 g,,
  ef8 ef' af c ef4 r
  \break
  bf,8 af' c ef d4 r
  af,16 ef' af bf
  \clef treble cf ef af bf cf bf af ef
  \clef bass c bf af ef
  \break
  ef,16 bf' ef f g bf ef f g f ef bf g f ef bf
  \break
  af ef' af bf
  \clef treble cf ef af bf cf bf af ef
  \clef bass   c bf af ef
  \break
  ef,16 bf' ef f g bf ef f g8 <d, d,> ~<d d,> <c c,>
  <c c,>16 g c ef g c ef c g ef c g ef c <f f,>8~
  <f f,>16 c' f g a c f g a4 r8 <bf,, b,> ~
  <bf bf,>8. bf16 ~ bf8 bf, <bf' bf,>8. bf16 ~ bf8 bf,
  \break
  bf'4 r r2
  ef8 bf' f' g r2
  \break
  <c, c,>4 ~ <c c,>16 d r8  g,4 r
  c,16 g' b ef r4 r2
  \break
  bf,16 f' af df r4 ef,16 bf' df af' g,4
  a,16 ef' g c r4 <c d,> r
  \break
  g,16 d' a' bf r4 <bf c,> <c e,>
  f,,16 ef' af8 r4 r4 f,
  \break
  bf16 f' af bf r4 <bf, bf,> r
  \break
  <bf bf,>16 f' af bf c bf c df ef df ef f g f g af
  \break
  c,,,16 g' c d e g e d <c c,>4 <e e,>
  \break
  f,16 c' f g af g f c f, c' f g af g f c
  \break
  <a a,>8. cf16 ef af  cf ef r ef, f af r cf, ef f
  <bf, bf,>4 bf2 r4
  \break
  <bf bf'>4 r r2
  <ef bf'>4 r <g a,> r
  f,8 c' f4 <bf, bf,> r
  ef,1
}
\score {
  \transpose ef d,  \new StaffGroup
 <<
   \new Staff = "right" \with { midiInstrument ="flute" midiMinimumVolume = #0.4 midiMaximumVolume = #0.8 } \right
   \addlyrics \jin
        \new TabStaff = "Guitar" \with { midiInstrument = "overdriven guitar" midiMaximumVolume = #0.3 } \right
            \new Staff = "left" \with { midiInstrument = "bassoon" midiMinimumVolume = #0.8 midiMaximumVolume = #1.0 }{ \clef bass \left }
  >>
  \layout { }
  \midi { \tempo 4 = 77 }
}

댓글