2013-07-25 4 views
0

sftp를 호출하는 간단한 bash 스크립트를 만들려고합니다.sftp로 기본 bash 스크립트

대화식 모드에서 사용자가 파일에 'put'을 사용할 때마다 해당 파일에 대한 메타 데이터 정보를 출력하고 싶습니다.

tldp.org의 초보자를위한 배쉬 가이드를 읽었지 만 사용자가 'put'명령을 누를 때마다 확인하는 if 문을 작성하는 방법은 즉시 분명합니다.

감사합니다.

편집 : 기본 코드와 정교함이 추가되었습니다.

#!/bin/bash 

sftp 133.43.453.132 # I made up this IP for demonstration purposes 
while True 
do 
if [user uses 'put' to a transfer a file to remote server] # New to bash so I don't know how to express this. 
    then 
     echo "Random stuff" 
fi 
done 

그래서 기본적으로 어떻게 작성합니까?

+2

당신이 지금까지 가지고있는 것을 보여주세요. – hek2mgl

+1

일반적으로, 당신은하지 않습니다. 즉, 다른 명령을 제어하기 위해 bash 스크립트를 사용하는 것과 동시에 사용자가 상호 작용할 수 있도록하는 것이 어렵습니다. 이런 종류의 일을 할 수있는 [expect] (https://en.wikipedia.org/wiki/Expect)라는 도구가 있지만, 그 일과 관련하여 복잡한 작업을하는 것은 쉽지 않습니다. – larsks

+0

의견을 주셔서 감사합니다. 나는 사용자가 put을 사용하여 서버에 파일을 넣을 때마다 해당 파일에 대한 메타 데이터를 출력하기를 원하기 때문에이 작업을 수행하려고합니다. 그럼 어떻게해야합니까? 나는 bash에 익숙하지 않아이를 표현하는 최적의 방법을 모른다. – user1413969

답변

1

본래의 접근 방식은

#!/bin/bash 
sftp 133.43.453.132 | tee /dev/tty | 
while read prompt command argument1 rest 
do 
    case $command in put) echo "Random stuff";; 
    esac 
done 
  • 는, 명령 행 편집 또는 출력 순서와 같은 것들에 대한 tee /dev/tty이 필요한 것보다 적어도 더 정교한 필터를 설명 할 수 있습니다.