ftp 명령에서 사용자 이름과 비밀번호를 지정하는 방법은 무엇입니까?


9

쉘 스크립트에서 ftp 호출을 자동화하고 싶습니다. 내가 입력하면

$ftp somehost.domain.com

사용자 이름과 비밀번호를 묻는 메시지가 나타납니다. ftp 호출의 일부로 해당 사용자 이름과 비밀번호를 제공하고 싶습니다. ftp 의 맨 페이지 에 ftp 프롬프트에서 사용자 명령을 실행할 수 있다고 표시 되어 있지만 한 번에 ftp에 모두 로그인하고 싶습니다. 가능합니까? ftp 플래그에 아무것도 보이지 않습니다. -s 옵션을 사용하면 ftp 프롬프트가 표시되면 ftp 명령을 지정하는 옵션이 제공되지만 프롬프트를 표시하려면 사용자 이름을 지정해야합니다.


expect(tcl / tk 종류의 확장)은 이런 종류의 것들에 이상적인 프로그램입니다. 프롬프트를 기다리십시오. 응답을 제공합니다 ... 답변을 기다립니다. ... 새로운 응답을 제공 expect"ogin :"에 대한 대기를하고 그 때까지 기다리 username을 보내 "assword :"와 비밀번호를 보냅니다.
Baard Kopperud

답변:


10

.netrc홈 디렉토리에서 파일을 사용하십시오 .

내용은 다음과 같습니다

# machine <hostname> login <username> password <password>
machine ftp.example.com login myuser password $ecret

프로그래밍 방식으로 .netrc수행하는 작업 인 경우 연결하기 전에를 작성 하고 완료되면 삭제하십시오.


이 파일은 특정 파일 ftp입니까, 아니면 다른 프로그램에서도 읽었습니까?
terdon

netrc(5)매뉴얼 페이지가 "에 대한 있다고 말한다 ftp(1)"하지만 난 확신이 아니에요 ftp사용할 수있는 유일한 일이다.
bahamat

".netrc"파일을 찾으려면 다음 명령을 사용하십시오.locate '.netrc'
goamn

1

here doc 을 사용하여 다음과 같은 ac 쉘 스크립트를 작성할 수도 있습니다 .

#!/bin/sh
HOST='someftpserver.com'
USER='username'
PASSWD='password'
FILES='*.txt'
#
ftp -nv $HOST>$FTPLOG <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd somedirectory
binary
mget $FILES
quit
END_SCRIPT

0

필요에 따라 wput또는 wget대안으로 고려할 수도 있습니다 .

내가 사용하지 않은 wget최근하지만 사용하고 wput난 일부 이전 답변에서 제안 만들거나 파일을 수정하지 않았기 때문에.

의 경우 wput, 구문은 다음과 같습니다

wput <filename> ftp://<username>:<password>@<address>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.