나는 최근에 FTP 연결을 통해 원격 시스템으로 광범위하게 작업해 왔으며 세션이 너무 짧기 때문에 로컬 컴퓨터에서 작업을 완료할 때 자주 다시 로그인해야 하므로 사용자 정의 명령/ 쉘 스크립트 FTP 서버에 로그인하려면 한 단어가 필요하지만 문제는 이를 어떻게 수행하느냐입니다.
예를 들어
~$ ftp domainname.com
...
Name (domainname.com): MyName
...
Password: xxxx
...
ftp>
답변1
일반적으로 ftp
명령줄 클라이언트는 ~/.netrc
원격 시스템의 자격 증명을 구성하는 구성 파일을 지원합니다. 예를 들면 다음과 같습니다.
machine legacy.system.example.org
login juser
password keins
이렇게 하면 ftp legacy.system.example.org
이 정보를 다시 입력할 필요가 없습니다.
더 많은 자동화가 필요한 경우 ftp
파이프된 명령을 통해 스크립트를 작성할 수 있습니다. 예를 들면 다음과 같습니다.
$ cat pushit.sh
# complex logic to set
# EXAMPLE_FILE=
ftp <<EOF
prompt
mput $EXAMPLE_FILE
quit
EOF
물론, 시스템이 이를 지원하지 않는다면 ssh
아마도 FTP도 지원하지 않을 것입니다. 하지만 시도해 볼 수는 있습니다(예: 다음을 통해).FTP-SSL) 연결을 보호해야 하는 경우.
원격 FTP
일반 명령 중 하나에 대한 대안은 다음 ftp
을 사용하는 것입니다.lftp
, 자동 로그인 및 명령 실행 등 다양한 기능을 제공하기 때문입니다.
예:
$ lftp -e 'source ~/login.lftp'
$ cat login.lftp
open sftp://juser:[email protected]
cd /path/to/favorite/dir
이 예에서는SFTP표준 지원되지 않는 서버OpenSSH SFTP 클라이언트.
이 옵션은 -e
lftp가 시작 시 명령을 실행하고 대화형을 유지하도록 지시합니다.
이러한 lftp 스크립트는 다른 스크립트를 얻을 수도 있고 서버에서 자동으로 연결을 끊을 수도 있습니다.
대조적으로, with -c
또는 -f
lftp는 인수로 지정된 명령을 실행하거나 지정된 파일에서 읽은 직후에 종료됩니다.
답변2
모든 것을 스크립팅하려면 다음을 수행하십시오.
#!/bin/sh
HOST='ftp.example.com'
USER='yourid'
PASSWD='yourpw'
FILE='file.txt'
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put $FILE
quit
END_SCRIPT
exit 0
당신은 또한 볼 수 있습니다이 페이지.
답변3
자동으로 로그인하려면 파일을 사용하면 됩니다 .netrc
. 사용자 이름과 비밀번호를 안전하지 않은 일반 텍스트로 저장해야 하기 때문에 이 방법은 권장하지 않습니다. SSH에 액세스할 수 있는 경우 SSH와 인증 키를 사용하여 로그인을 자동화하는 것이 좋습니다.
키를 사용하여 SSH와 같은 보안 방법을 사용할 수 없는 경우 다음을 통해 FTP 정보를 구성할 수 있습니다.이 가이드.