우리 코드를 실행하는 서버는 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
스크립트의 각 복사본이 포함된 디렉터리에서 실행될 수 있습니다.
스크립트를 통한 비밀번호 확인 단계:
먼저
yum install lftp
Linux 버전에 따라 lftp를 사용하거나 설치하십시오.sudo apt-get install lftp
다음 스크립트를 작성하세요.
#!/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
.