SFTP에서 파일을 가져와 실행하는 스크립트

SFTP에서 파일을 가져와 실행하는 스크립트

우리 코드를 실행하는 서버는 A, B, C, D, E 5개입니다.

로컬 컴퓨터에서 파일을 A로 sftp합니다. 그 다음에

ssh id@A
su - applicationname
sftp id@A
get <file>
bye
tar -xzf <file>
logout
logout

다른 B부터 E까지 동일한 절차를 적용합니다.

스크립트를 사용하여 이 프로세스를 단순화할 수 있는 방법이 있습니까?

우리는 Linux 팀에 비밀번호 없는 인증을 제공하도록 요청했습니다. 그러나 우리는 스크립트를 사용하여 SSH 세션에서 sftp를 실행하는 방법을 모릅니다.

답변1

가장 좋고 쉬운 방법은 scp대신 사용하는 것입니다 sftp.

scp이것이 실제로 옵션이 아닌 경우 sftp"documents here" 읽기 명령을 사용할 수 있지만오류에 대한 스크립트 작성은 매우 어렵습니다..

sftp username@server << %EOF%
ls
bye
%EOF%

%EOF%a로 시작하고 끝나는 한 원하는 단어가 될 수 있으며 %마지막 단어는 %EOF%줄의 시작 부분에 있어야 합니다.

비밀번호 없이 로그인하려면 "ssh 키 인증"을 읽어보세요.

sftp대화에 사용 ssh하기에는 과잉처럼 들리며 이중 임무를 수행하는 것처럼 들립니다. 로컬 시스템에서 복제를 시작하지 않겠습니까?

답변2

lftp비밀번호 인증을 위해 스크립트를 사용할 수 있습니다 . 비밀번호 없는 인증은 때때로 매우 위험할 수 있습니다. 여러 서버에 대해 이 스크립트를 호출하는 것으로 확인되었으므로 사용할 때마다 비밀번호를 수동으로 입력해야 합니다 sftp.

대신 lftp비밀번호를 스크립트에 입력하고 크론 작업으로 실행할 수 있습니다. 각 서버마다 다른 파일이 필요합니다. 그럼에도 불구하고 이들 모두는 cron 작업을 통해 실행되어 *.sh스크립트의 각 복사본이 포함된 디렉터리에서 실행될 수 있습니다.

스크립트를 통한 비밀번호 확인 단계:

  1. 먼저 yum install lftpLinux 버전에 따라 lftp를 사용하거나 설치하십시오.sudo apt-get install lftp

  2. 다음 스크립트를 작성하세요.

    #!/bin/sh
    
    HOST='ec2#####.us-west-2.compute.amazonaws.com'
    
    USER='ubuntu'
    
    PASSWD='ubuntuuser'
    
    cd directory/where/you/want/to/put/or/get/a/file
    
    lftp << END_OF_SCRIPT
    open sftp://$HOST
    user $USER $PASSWD
    cd /home/anywhere_you_want_the_file_from/
    mput *.txt
    END_OF_SCRIPT
    

참고로 바꿔주세요호스트 이름, 사용자 이름그리고비밀번호서버에 따라 다릅니다. 또한 이 스크립트는 "mput"을 사용하여 원격 위치에서 /home/anywhere_you_want_the_file_from/로컬로 여러 파일을 가져옵니다 . 단일 파일이 필요한 경우 "put"을 사용할 수 있습니다. sftp의 모든 명령을 사용할 수 있습니다 END_OF_SCRIPT.

관련 정보