sftp 쉘 읽기 스크립트

sftp 쉘 읽기 스크립트

나는 이것을 작동하고 있습니다 :

% cat read.sh
!/bin/sh

file=list.txt

while read line
do
    echo "$line"
cut -d' ' -f27 | sed -n '$p' > file2
done < "$file"


% cat list.txt 
sftp> #!/bin/sh
sftp> 
sftp> cd u/aaa
sftp> ls -lrt x_*.csv
-rwxr-xr-x    0 1001     1001     12274972 May 13 21:07 x_20150501.csv
-rw-r--r--    0 1001     1001            0 May 13 21:44 x_20150601.csv
-rw-r--r--    0 1001     1001            0 May 13 21:44 x_20150701.csv
-rw-r--r--    0 1001     1001            0 May 13 21:44 x_20150801.csv
-rw-r--r--    0 1001     1001            0 May 13 21:44 x_20150901.csv
-rw-r--r--    0 1001     1001            0 May 13 21:45 x_20151001.csv
-rw-r--r--    0 1001     1001            0 May 13 21:45 x_20151101.csv
-rw-r--r--    0 1001     1001            0 May 13 21:45 x_20151201.csv

% cat file2 
x_20151201.csv

첫 번째 질문: 마지막 줄의 마지막 항목을 읽는 것보다 더 흥미로운 것이 있습니까? Cut과 sed를 사용하는 방법을 알고 있나요? 이는 sftp 디렉토리 목록의 리디렉션입니다.

두 번째 질문: file2에 무엇이 있든, sftp 배치 파일에서 읽어서 정확한 파일을 얻고 싶습니다.

% cat fetch.sh 
#!/bin/sh

cd u/aaa
!sh read.sh
!< file2 
get
bye

get상상할 수 있듯이 sftp는 파일 없이 서비스를 제공하는 것을 좋아하지 않습니다 . 그렇다면 sftp 서버에서 파일을 가져오기 위해 file2를 어떻게 읽어야 할까요?

 % sftp -b fetch.sh user@pulse
    sftp> #!/bin/sh
    sftp> 
    sftp> cd u/aaa        
    sftp> !sh read.sh
    sftp> #!/bin/sh
    sftp> !< file2 
    x_20151201.csv
    sftp> get
    You must specify at least one path after a get command.

답변1

모든 작업을 하나의 명령으로 결합할 수 있습니다.

sftp user@host:/path/to/file/$(tail -1 file1.txt |tr -s ' ' |cut -d ' ' -f 9)

그러면 현재 작업 디렉터리에 파일이 추출됩니다. 파일을 다른 디렉토리에 추출해야 하는 경우 대상 디렉토리를 sftp 명령의 다음 인수로 지정하십시오.

관련 정보