'쉘스크립트'에 해당되는 글 8건

  1. 2011.06.23 외부접속 확인하는 간단한 스크립트
  2. 2010.11.14 import를 사용하여 스크린샷 찍기 (10)
  3. 2010.06.20 Screenlet 에 현재 재생중인 음악파일 커버 출력시키기 (6)
  4. 2009.09.27 [시간알람] 시간.. 시간이 문제로다. (15)
  5. 2009.01.12 Bash 쉘스크립트 배열 (9)

외부접속 확인하는 간단한 스크립트


ssh로 로긴해서 들어갔을때에도 무식하게 X를 당당히 띄어버리는 문제 발생.

그래서 아래 스크립트를 작성하여 일단 문젠 봉합해둠.

이하, 현재 쉘이 외부에서 접속했는지 확인하는 간단한 스크립트

#!/bin/bash
pts_id="pts/$(basename $(tty))"

# 쓸데없는 기교 (...)
if [ -n "$(who | grep -E ^"$USER"'.*'$pts_id'.*\([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\)$')" ];then
    echo "외부접속"
fi

일단은 잘 작동하는거 같은데... 함 두고보자.
Trackback 0 Comment 0

import를 사용하여 스크린샷 찍기

import 스크린샷 찍을때 사용하는 프로그램인데 간단하고 좋다...

$import

하면 마우스커서의 모양이 십자가로 변하는데, 이때 프로그램의 윈도우를 찍어주거나,

선택한 영역을 드래그 하면, 지정한 영역만을 그림으로 저장해 준다. 블로그에 올릴 사진찍을때 정말 좋다 ㅋ

(이것도 있는지 안지는 꽤  됬는데.... 따로 스크립트는 만들어 주지 않고, 그냥 imagemagick으로

스크린샷 찍고 그랬다 -_-... 왜 그랬을까......)

먼저  import가 깔려있어야 하는데 ... Imagemagick 를 설치하면 알아서 깔린다

맨 페이지 보니깐 해당 프로그램의 멤버인듯.

스크립트는 다음과 같다

#!/bin/bash

SCREENSHOT_PROGRAM="import"
SCREENSHOT_PROGRAM_PID=$(pgrep "$SCREENSHOT_PROGRAM")
SCREENSHOT_SAVE_PATH="/home/lowid/etc/shot"

if [ "$SCREENSHOT_PROGRAM_PID"  = "" ];then
    "$SCREENSHOT_PROGRAM" "$SCREENSHOT_SAVE_PATH"/"$(date +"%F %r")".png &
else
    killall "$SCREENSHOT_PROGRAM"
fi

이걸 플빡이나 오박일경우 단축키로 지정해서 사용하면 편하다

한번누르면 grap을 시도하고, 한번 더 누르면 취소... 뭐 이런식으로 해놧다....

뭐 문제점이 몇개 있긴한데 어지간해선 그런일 일어나지 않을거 같아서 간단하게 작성했다

(너무너무 간단하다는... 달랑 if 문 하나라니 ㅋ)




ps; 스크린샷 찍을땐 compisite 없는 WM에서는 screenlets에 문제가 발생하므로 (검은 사각형)

딴 desklet을 쓰는게 좋을것이라고 생각....... 덕분에 나도 adesklets로 시계 바꿔버림 -_-
Trackback 0 Comment 10
  1. Favicon of https://fluxbox.tistory.com BlogIcon 猫한 보스코 2010.11.15 20:28 신고 address edit & del reply

    스샷은 김프가 진리 아닌가용. 딜레이 스샷도 되고.

    • lowid 2010.11.15 22:21 address edit & del

      김프는 프로그램 띠우고 막 메뉴에서 선택하고 그래야 되지 아늠?
      저건그냥 키 하나면 누르면 된다는 ㅋ....
      그리고 김프좀 어려운듯... 그림판만 하다가 하니깐 그런지 넘 어렵네여.... 사각형 그리기가 뭐 그리 힘든지 ㅠㅠ 그리다 포기한 ㅋ

  2. Favicon of https://zeper.tistory.com BlogIcon zeper 2010.11.23 22:11 신고 address edit & del reply

    아직도 스샷 찍는사람 있나요?
    =33

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2010.11.26 00:19 신고 address edit & del

      블로그에 포스팅하거나
      애니나 영화 짤방으로 쓸만한거 찾아서 찍을때 쓰죠뭐...
      어짜피 바탕화면같은건 몇년간 별 변화도 없구엽 ㅋㅋ

    • 똘이대마왕 2010.12.13 04:54 address edit & del

      네;;; 저는 스샷이 있어서 너무 좋아용 :-)

  3. 똘이대마왕 2010.12.13 04:59 address edit & del reply

    Lowid 님께서 만들어 주신 스크립트가 잘안되서 살짝 수정했습니다. 아마 날짜 부분 에러인듯한데..
    #!/bin/bash

    SCREENSHOT_PROGRAM="import"
    SCREENSHOT_PROGRAM_PID=$(pgrep "$SCREENSHOT_PROGRAM";)
    SCREENSHOT_SAVE_PATH="/home/raven/Pictures/screenshot/"

    if [ "$SCREENSHOT_PROGRAM_PID" = "" ];then
    "$SCREENSHOT_PROGRAM" "$SCREENSHOT_SAVE_PATH""$(date +"%Y_%m_%d_%H_%M_%S";)".png &
    else
    killall "$SCREENSHOT_PROGRAM"
    fi

    음 이러니 잘 되는군요. 다음에도 좋은 스크립트 부탁합니다 :-)

    • 똘이대마왕 2010.12.13 05:01 address edit & del

      닫기 괄호가 웃고 있네요.

      티스토리 이모티콘 반응하는 만든사람 좀 성의 없는듯;;

    • lowid 2010.12.17 11:06 address edit & del

      어.. date 포멧이 바꼈네요.
      제컴에선 잘되던데.... 배포판 마다 포맷이 좀 다른가요 흠......
      - 넵.. 그 이모티콘 귀찮아요... 그래서 전 항상 ) ;이런식으로 띄어서 씁니다;;;;;;

  4. Favicon of https://khmirage.tistory.com BlogIcon 환상경 2010.12.29 19:27 신고 address edit & del reply

    하악 이런 스크립트 좋아요 ㅋ
    참고하겠습니다 ㅋ

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2011.01.15 15:26 신고 address edit & del

      넵. 조금이라도 도움이 되길 바래요

Screenlet 에 현재 재생중인 음악파일 커버 출력시키기

저번에 한번 conky자체에 그림나오는 기능을 사용해서 자켓 이미지를 출력하게 시도한 적이 있었다는..

http://lowid.tistory.com/entry/conky-%EA%B7%B8%EB%A6%BC

그런데 그때는... cpu를 너무 많이 먹는 바람에 하루정도 돌리고 포기...

그러다가 새로운  desklet을 한번 알게 되었는데 그게 바로 screenlet

이것을 좀 보니깐 python스크립트로 되어있는거라.. 좀 깨름직했지만...

(개인적으로  pstree 했을때 python 실행파일이 보이는것이 영 내키지 않아서)

그래도 어짜피 메모리 많이 남으니깐..

(전체 2긱인데 vm, firefox를 안돌리면 절대 200mb(각하의 100배임) 을 넘길일이 없으니)

그냥 쓰기로 해따.. 뭐 많은데 쓰지뭐

어쨋던 그렇게 하고.. screenlet 에 어떤 위젯(?) 이 있나 보니깐..

"SlideShow" 라는게 있어서 좀 살펴보니깐, 특정 디렉토리에 있는 그림파일을 출력해 주는 기능이 있었다는.

사용자 삽입 이미지

(Terminal lyrics, Slideshow, conky의 조화!!)

그래서 생각한게... 뭐 그냥 그 디렉토리에다가 현재 mpd로 재생중인 파일의 path을 알아내서

find로 찾아주면 간단하겠네.... 라는 생각이 들어서 바로 만들어 봤다..

find할때 재대로 안되는건 쿼우팅이 문제라서 따옴표를 붙여주고...

디렉토리 이름에 공백문자가 들어가서 생기는 문제는 IFS로 해결했다.

이러니깐 어지간한건 다 잡는듯.....

다음은 스크립트

#!/bin/bash

# MPD 설정 디렉토리
MPD_DIR="/data/mp3"

# 현재 재생중인 파일의 MPD 디렉토리
MPD_PATH=$(dirname "$(mpc -f "%file%" | head -n 1)")

# 자켓이 임시 복사될 디렉토리
JACKET_DIR="/home/lowid/etc/mpd_jacket"

# 현재 재생중인 파일의 디렉토리
PLAY_FILE_DIR="$MPD_DIR"/"$MPD_PATH"

# 경로에서 확장자가 jpg인것을 검색(작은따옴표 주의)
JACKET_FILES="$(find "$PLAY_FILE_DIR" -iname '*.jpg' -o -iname '*.png' -o -iname '*.gif')"

# 아까 있던 파일들 모두 삭제
rm -rf "$JACKET_DIR"/*

# IFS를 '\n'으로 변경(spc 방지)
IFS='
'

# 복사
for IMAGE_FILE in $JACKET_FILES
do
    echo "$IMAGE_FILE"
    cp "$IMAGE_FILE" "$JACKET_DIR"
done

그리고 이걸 곡이 바뀔때 마다 실행해 주면 된다 -_-..

나는 그냥 귀차나서 lyrics프로그램 내부에 mpd감지하는 루틴에

system("/home/lowid/bin/mpd_jacket.sh");

넣어버림 ㅋㅋㅋㅋㅋㅋㅋ


이래도 문제는 발생한다는거...

곡이 바뀌면서 바로 커버가 바뀌는게 아니라 몇초 딜레이 시간이 필요하다. (머 1초로 설정하면 거의 없긴해두)

(SlideShow의 자체 갱신 시간이 있기때문)

python 프로그램을 찾아서 갱신시간을 event로 알아낼수 있게 어떻게 수정하면 되긴하겠는데...

python 은 귀찮기도 하고............ 걍 PASS 귀차늠..

아니 윗에처럼 하느니.. 그냥 lyrics + cover + control이 되는 새로운 프로그램을 gtk로 만드는게 나을지도

근데 이것도 귀찮아서 아마 시도도 안할거임 아마..............

추가-----

find에서 exec로 해도 되는거 같은데 .;
Trackback 0 Comment 6
  1. Favicon of https://khmirage.tistory.com BlogIcon 환상경 2010.06.20 14:47 신고 address edit & del reply

    흐음 또 알수 없는 외계어가 난무하는군요 =_+
    이런 천재님을 봤나~

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2010.06.24 23:44 신고 address edit & del

      그렇죠.. 알수 없어요..;

  2. Favicon of https://fluxbox.tistory.com BlogIcon 猫한 보스코 2010.06.21 21:09 신고 address edit & del reply

    저런 거 다 필요없고 소리만 잘 나오면 되여(...)

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2010.06.24 23:45 신고 address edit & del

      그 소리두.. 스피커가 맛이가서 외부로는 소리가 안나여...
      뭐 그냥 그렇다구여. ㅜ..

  3. Favicon of https://zeper.tistory.com BlogIcon zeper 2010.06.22 18:42 신고 address edit & del reply

    'ㅁ'
    오랜만애 들렀다가 감탄하고 나갑니다..ㅋ

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2010.06.24 23:46 신고 address edit & del

      저도 zeper님 다음 포스팅 기대하고 있을게요!

[시간알람] 시간.. 시간이 문제로다.

여러분들은 컴터 할때 시간가는걸 느끼시나여?

저는 컴터 하는건 좋은데 막 하다보면 막 시간이 빨리가서.. 뭐랄까 가는 시간이 아깝달까...

그래서 시간가는걸 확실히 알기 위해서 Conky에다가 디지털 시계도 달아놓고

crontab을 이용해서 한시간마다 TTS로 시간 말해주는 그런뭐.. 그것도 썼는데..

의외로 효과과 미미 하더라고요...

디지털 시계로 시간을 보면 "아 지금 X시구낭" 하고 별 반응이 없게 되더라고요

그러니깐 지금 몇시인지는 아는데 "얼만큼 시간이 지났나?" 알기는 힘들어라구여..

글구 crontab으로 하는거..

# 한시간마다 screen lock
0       * * * * export DISPLAY=:0;/home/lowid/bin/screen_lock.sh

요런식으로 설정을 해서 한시간에 xlock을 띠우고 시간을 (aplay, wav재생) 하게 했는데

이건 한시간에 한번이라 -_-;; 별로..............

그리해서 해결책을 생각해 낸게

1 디지털 시계 버리고 아날로그 시계를 달자

2 1시간마다 시간을 말해게 하지말고 1분마다 시간을 말하게 하자...

해결과정....ㅋ
사용자 삽입 이미지

1 우리의 구글신님께 여쭈어(?) 보았습니다... 글자로는 언제 찾을지 몰라서 (심심하기도 했고) 이미지 검색을 해 봤는데

conky에서 font를 이용해서 아날로그 시계를 출력해주는 소스를 발견 했습니다..

http://floor.textcube.com/entry/my-conky-config?expandComment=1

그래서 이거 뚝딱 설정해서 conky에다가 시계 달기는 간편하게 성공했고

(뭐 덕분에 프로세스 왕장먹는 RSS기능 빼버렸...)

2 1분마다 말하게 하는거 취지는 좋은데 문제는 파일(시간 말해주는 파일) 이 없다는게 참 문제 더군여

기껏해야 정시알람음이 전부인게.. 안습...

그래서 어쩔수 없이 좀 오덕같이 보이긴 하지만, 꼬북님께서 몇달전에 제공해 주신 ARIA 캐릭의 목소리(...)를

이용하기로 했습니다.. 서비스팩(?) 같은 CD., 모르겠어요 확실한건..

제가 윈도우에서 이걸 실행해 본적이 없어서..............

어쨋던 윈도우용인데 파일은 다 wav로 존재하니깐 걍 뺴와서 쓰기로 했습니다..

1분 마다 실행하기 위해서 일단  crontab 에 등록 시켜 놓고..

# 매분 마다 시간 말해줌
*       * * * *  /home/lowid/bin/time_spech.sh

다음과 같이 간단한 쉘스크립트를 만들고.. (간단한거니깐 설명은 생략~)

#!/bin/bash

WAV_DIRECTORY="/home/lowid/etc/time_wav/aria/Akari"
WAV_BASENAME="AA"
WAV_BASENAME_HOUR="H"
WAV_BASENAME_MINUTE="M"

NOW_HOUR=$(date +%I)
NOW_MINUTE=$(date +%M)

pgrep mplayer # 동영상 재생이 아니면

if [ $? -eq 1 ];then
    aplay "$WAV_DIRECTORY"/"$WAV_BASENAME""$WAV_BASENAME_HOUR""$NOW_HOUR".wav "$WAV_DIRECTORY"/"$WAV_BASENAME""$WAV_BASENAME_MINUTE""$NOW_MINUTE".wav 2>/dev/null
fi

하면 알아서 매분 시간을 말해주게 됩니당...

좀 오덕같이 보여서 그렇지 사실.. 좋긴 좋음...

오늘 버닝 해서 포스팅 3개나 했네염 ㅋㅋ 댓글좀 달아주셈 ㅋㅋ
Trackback 0 Comment 15
  1. 니쥬 2009.09.27 18:29 address edit & del reply

    욘쁀데스

  2. zeper 2009.09.28 00:19 address edit & del reply

    모니터위에 시계를 올려두삼 10분마다 깜빡이게 만들면 최고임

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2009.09.29 23:08 신고 address edit & del

      애석하게도 놋북이라 그게 안되네요 ㅋ

  3. Favicon of https://khmirage.tistory.com BlogIcon 환상경 2009.09.29 22:37 신고 address edit & del reply

    뭔가열 이 천재스런 포스팅은.....
    그냥 시간에 몸을 맡기세요 그럼 편해요 -0-

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2009.09.29 23:11 신고 address edit & del

      이정도야 그냥 간단한거라 삽질이랄건 없져뭐
      스크립트도 걍 배껴쓰고..... 만든스크립트는 정말
      간단한거구..
      머 그냥 전세계에 이같은 환경은 나밖에 없엉..
      뭐 이런 만족감 가지면서 걍 만들어가는거져...

  4. 자잔구사람 2009.09.30 10:29 address edit & del reply

    컴퓨터 오래하면 엄마한테 혼나여

    • lowid 2009.10.01 21:23 address edit & del

      갠찮다는.. 일한다고 하면 댄다능..ㅋㅋ

  5. Favicon of https://ranoking.tistory.com BlogIcon RanoKing 2009.09.30 23:26 신고 address edit & del reply

    님하 오덕 맞아요. 정 안되면 한 10분 간격으로 야동이나 야사 뜨게 만드셈. 그럼 주변에서 누가 볼까 기겁해서 컴퓨터 오래 안하게 되죠.

    • lowid 2009.10.01 21:23 address edit & del

      딱히 컴터 안하게 하는게 목적은 아닌걸요 뭐..ㅋ

    • Favicon of https://lsm1987.tistory.com BlogIcon 에그 2009.10.06 00:22 신고 address edit & del

      처... 천재다!!

  6. Favicon of http://spadework.tistory.com BlogIcon 삽질러 2009.10.05 00:01 신고 address edit & del reply

    하이테크놀로지 덕후

    • lowid 2009.10.08 10:16 address edit & del

      이정도가지고 하이테크롤러지라니~
      삽질테크놀러지겠지~ㅋ

  7. 똘이대마왕 2009.10.07 23:50 address edit & del reply

    콘키는..영 귀찮아서;;;;건들이기가 싫어용.. 그냥 설정 안바꾸고 살아용

    • lowid 2009.10.08 10:16 address edit & del

      저도 그래요!! ㅋㅋ
      근데 가끔씩 한번 필받으면 저렇게 다 뜯어고치게 되죠..
      문제는 그게 몇달에 한번이라는게....

Bash 쉘스크립트 배열

혹시해서 적어두지만

bash쉘스크립트에서는 따로 자료형이 정해지지 않았기 때문에 그냥

아무변수나 배열처럼 쓸수있다.

배열 대입
episode_array[0]="abc"
episode_array[1]="def"

배열출력
echo ${episode_array[0]}
echo ${episode_array[1]}
# 덧> 쿼우팅은 알아서 할것!

배열 삭제
unset 명령어 이용, 한다고 합니다 아직 사용해 보진 않음;;
unset episode_array
unset eposode_array[0]

배열 전체 길이 구하기 (첨자길이)
${#episode_array[@]}
$(#episode_array[1]} # 이게 1번 array 길이 구하는거였나?

배열A를 배열 B로 복사
B=("${A[@]")


배열의 첨자(인덱스) 안에 @,* 들어가는거는 IFS에서 $*와 $@ 와 비슷하다고 한다'

함수를 쓸떄 아규먼트로 보내기

Movie_Choice "${episode_array[@]}"

이렇게 쓰면
function Move_Choice()
{
     echo "$1"      #episode_array[0]
     echo "$2"      #episode_array[1]
     echo "#3"      #episode_array[2]
}
 

이상하게 배열자체를 함수로 넘기질 못하겠네;

이거 아시는분은 댓글을!!!

Movie_Choice ("${A[@]")

이게 안먹히기 때문에

function Movie_Choice()
{
     array2=( "$@" )
}

Movie_Choice ${episode_array[@]}


이렇게 사용하고 있다..;; 이거분명 넘기는 방법이 있을텐데 모르겠음

아나 귀차너 그냥 전역으로 쓰고 때려지우는게 나을듯
Trackback 0 Comment 9
  1. Favicon of http://sakuragi.org BlogIcon sakuragi 2009.01.14 11:48 address edit & del reply

    글만 읽어서는 뭐가 안된다는 건지 잘 모르겠네요. ^^
    ------
    function Move_Choice()
    {
    echo "$1" #episode_array[0]
    echo "$2" #episode_array[1]
    echo "$3" #episode_array[2]
    }

    Movie_Choice "${episode_array[@]}"
    ------
    이렇게 쓰는 건 잘되는데, 이게 안된다는 말씀이신가요?
    lowid 님 덕에 bash 스크립트도 배우는군요~ ^^

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2009.01.16 13:57 신고 address edit & del

      irc에서도 이야기했지만, 다시한번정리하자면,
      array[0]="a"
      array[1]="b" 가 있다고 하고
      A "${array[@]}" 같이 함수를 Call하면
      function A에서는 array를 변수를 재대로 받지 못하고 인자1($1) 이 a 인자2($2)가 b가 되버린다는 것이죠
      원래는 function A에서 array[0]=1, array[1]=2 로 직접 받아올수 있어야하는데(array라는 배열 자체가 넘어와야하는데) 그게 안된다는..
      아 이설명이 더 못알아 먹겠네여 ;;

  2. 무달 2009.01.17 17:25 address edit & del reply

    크크크 님하 일일 포스팅하시다면서 왜 또 새 글 안 올라옴?

    • lowid 2009.01.18 14:34 address edit & del

      아 그거여? 한 3일하고 접음 ㅋㅋㅋㅋㅋㅋㅋㅋ
      내가생각해도 좀 안습 ㅜㅜ

  3. 삼각김밥 2009.04.23 16:36 address edit & del reply

    보통 프로그램에서 사용하는 방법은 Call by Value, Call by Reference 가 있습니다. C 함수에서는 이게 모두 다 가능하지만 쉘은 Call by Value 만을 지원하는 것으로 알고 있습니다. 즉 배열은 메모리 주소(포인터)로 저장, 관리되지만 포인터 변수가 없는 쉘에서는 배열 자체를 다른 함수에서 참조해서 사용할 수 없습니다. C 함수에서 swap 함수를 참고하시면 쉽게 이해가 가실 겁니다.

  4. 사랑줍는거지 2009.06.18 18:04 address edit & del reply

    오려가도 되나요? 갠적으로 메모 해두고 싶어서요

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2009.06.19 01:05 신고 address edit & del

      마음대로 가져가 주세요~

  5. 2010.11.03 17:55 address edit & del reply

    비밀댓글입니다

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2010.11.04 01:16 신고 address edit & del

      ㅇㅇ
      근데 뭘 이른걸 비밀댓글로 달고 그래 ㅋㅋ
      난도 누군가 했네 ....ㅋ

prev 1 2 next