배쉬쉘 질문드립니다.

konoki의 이미지

/bin/cat ${LOG}/${I}_${DATE} | while read LINE
    do
        FILE=`echo $LINE`
        cd ${DIR}/${I}
        TEXT=`file ${FILE} | grep -i "ascii text" | awk '{ print $2 }'`
        sleep 1
 
        if [ ${TEXT} ]; then
            ftp -n ${IP} << EOF
            user ${USER}
            ascii
            prompt off
            cd ${PT_DIR}
            put ${FILE}
            close
EOF
            echo ${FILE} >> ${LOG}/${I}_Mailmsg_${DATE}
 
        fi
        mv ${DIR}/${I}/${FILE} ${DIR}/${I}/BACKUP/
    done
</bash>
 
다음과 같이 사용하고 있는 스크립트가 있는데
ftp를 한방에 다 올리고 싶은데 보시다시피
파일명 하나를 가져와서 ascii인지 확인하고 보내는 식이다보니
1개씩밖에 못보내는 로직입니다. 어떻게 수정하면 될까여;;

qiiiiiiiip의 이미지


먼저 루프를 돌면서 transfer 할 파일들을 임시디렉토리에 옮겨놓고,
루프 밖에서 ftp를 할때,
lcd 로 그 디렉토리로 옮겨가서 mput * 로 하면 될 듯..

물론 그보다는 ftp 대신 scp 나 rsync를 쓰는게 맞겠습니다만..

konoki의 이미지

FTP사용법좀 알려주세여 옵션값들이 잘모르겟는데;
어디에 put을 하는건지 각 옵션들이 정확히 이해가 안됩니다.

백연구원의 이미지

/bin/cat ${LOG}/${I}_${DATE} | while read LINE
    do
        FILE=`echo $LINE`
        cd ${DIR}/${I}
        TEXT=`file ${FILE} | grep -i "ascii text" | awk '{ print $2 }'`
        sleep 1
 
        if [ ${TEXT} ]; then
            MPUT="${MPUT} ${FILE}"
            echo ${FILE} >> ${LOG}/${I}_Mailmsg_${DATE}
 
        fi
        mv ${DIR}/${I}/${FILE} ${DIR}/${I}/BACKUP/
    done
 
    ftp -n ${IP} << EOF
    user ${USER}
    ascii
    prompt off
    cd ${PT_DIR}
    mput ${MPUT}
    close
EOF
 
</bash>

소스 내용 순서만 조금 바꾸고 MPUT 만 추가 했습니다.

MPUT="${MPUT} ${FILE}"

원래 동작하는 소스인지는 모르겠지만 크게 이상이 없는 경우 사용 가능할 것 같네요.
그리고 왜 굳이 ftp를 고집하는지 모르겠지만 댓글 주신 다른 분들 의견 들으시는 게 먼 훗날 생각했을 때 좋을 겁니다.


소곤소곤

ymir의 이미지

$ ls -al
total 40
drwxrwxr-x 2 ymir ymir 4096 10월 18 09:04 .
drwxrwxr-x 6 ymir ymir 4096 10월 18 09:01 ..
-rwxrwxr-x 1 ymir ymir 9852 10월 18 09:02 a.out
-rw-rw-r-- 1 ymir ymir  527 10월 18 09:02 bst.c
-rw-rw-r-- 1 ymir ymir   47 10월 18 09:04 list.txt
-rw-rw-r-- 1 ymir ymir  105 10월 18 09:02 run.sh
-rw-rw-r-- 1 ymir ymir  975 10월 18 09:02 wikipedia.crt
-rw-rw-r-- 1 ymir ymir 1375 10월 18 09:02 wikipedia.pem
$ file *
a.out:         ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=0dc87a59297b059e1c870991501962204247698d, not stripped
bst.c:         C source, ASCII text
list.txt:      ASCII text
run.sh:        Bourne-Again shell script, ASCII text executable
wikipedia.crt: data
wikipedia.pem: PEM certificate
$ cat list.txt
a.out
bst.c
run.sh
wikipedia.crt
wikipedia.pem
$ cat list.txt | xargs grep -Il .
bst.c
run.sh
wikipedia.pem
$ scp $(cat list.txt | xargs grep -Il .) ymir@dev:/tmp
ymir@dev's password:
bst.c                                                      100%  527     0.5KB/s   00:00
run.sh                                                     100%  105     0.1KB/s   00:00
wikipedia.pem                                              100% 1375     1.3KB/s   00:00

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

konoki의 이미지

이게먼가여?설명좀 해주세요 ㅠ

ymir의 이미지

$ scp $(cat list.txt | xargs grep -Il .) ymir@dev:/tmp

list.txt 에 들어 있는 파일목록에서 텍스트 파일만 골라서 scp 로 다른 서버에 복사하는 예제입니다.
마찬가지로 텍스트 파일만 백업 디렉토리로 모두 mv 할 수도 있죠.

ssh 에 authorized_keys 를 생성하거나, sshpass 를 쓰면 별도로 password 입력 없이 처리할 수 있습니다.

원래 코드에서는 파일명과 실제 경로가 다르기 때문에, 아래와 같이 파일명에 경로를 추가해 주도록 바꾸면 되겠네요.

cat ${LOG}/${I}_${DATE} | sed "s/^/${DIR}\/${I}\//g" | xargs grep -Il .

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

konoki의 이미지

ftp로해서 파일을 put하는데
1개씩 파일만 되게 되있어여 지금 왜냐하면 반복문에서 1개씩 필터되서 아스키 형식인 파일만 걸러서
그 파일만을 처리하기때문에 m_put으로 처리하고 싶은데 어떻게 해야될까여

김정균의 이미지

ftp 명령으로는 불편하니까 더 쉬운 다른 방법으로 하라고 알려 주시는 겁니다. scp나 rsync 같은 것을 이용하시는 것이 더 쉽고 편하다는..

konoki의 이미지

scp를 이용하면 패스워드 입력을 매번 눌러주지 않게도 되는건가여?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.