셸 에서 ftp 사용 하기
문제 의 소재
내 가 과정 에서 만난 관건 적 인 문 제 는 ftp 서버 에 비밀 번 호 를 제공 하 는 것 이다. 전형 적 인 ftp 클 라 이언 트 (예 를 들 어 유 닉 스 의, Liux 의, solaris 의, NetBSD 의) 는 모두
/dev/tty
에서 비밀 번 호 를 읽 는 것 이다.(non - working) 스 크 립 트 예
#!/bin/sh
HOST='ftp.users.qwest.net'
USER='yourid'
PASSWD='yourpw'
FILE='file.txt'
ftp $HOST <
위의 스 크 립 트 는 작업 이 완료 되 지 않 습 니 다. 전경 에서 실행 되 든 정시 작업 으로 실행 되 든 배경 에서 실행 되 지 않 습 니 다.
/dev/tty
이상 한 장치 입 니 다. 모든 프로 세 스 (정확히 말 하면 모든 프로 세 스 그룹) 가 다 릅 니 다. /dev/tty
ftp 클 라 이언 트 가 특정한 파일 (예 를 들 어 here document) 에서 비밀 번 호 를 읽 게 해 서 는 안 됩 니 다. 터미널 에서 실 행 될 때,위의 스 크 립 트 는 /dev/tty
에서 비밀 번 호 를 읽 고 터미널 은 스 크 립 트 /dev/tty
를 구성 하기 때문에 스 크 립 트 는 키보드 입력 을 기다 리 고 있 습 니 다.(working) 스 크 립 트 예
#!/bin/sh
HOST='ftp.users.qwest.net'
USER='yourid'
PASSWD='yourpw'
FILE='file.txt'
ftp -n $HOST <
비결
ftp 클 라 이언 트 가
/dev/tty
에서 비밀 번 호 를 읽 을 필요 가 없습니다. 두 가지 수작 을 부려 야 합 니 다.-n
옵션 을 사용 하여 ftp 클 라 이언 트 를 연결 합 니 다. 그러면 ftp 클 라 이언 트 는 사용자 이름과 비밀 번 호 를 입력 하지 않 습 니 다. 그래서 사용 하지 않 았 습 니 다 /dev/tty
quote
을 사용 하여 사용자 이름과 비밀 번 호 를 보 냅 니 다. 시작 과 끝 에 END_SCRIPT
을 추가 해 야 합 니 다. 명령 이 들 어 갔 음 에 도 불구 하고 추가 해 야 합 니 다. 위의 스 크 립 트 는 잘 작 동 하 더 라 도 ftp 클 라 이언 트 에서 표준 출력 으로 많은 출력 을 쏟 아 냅 니 다.위의 스 크 립 트 를 실행 하면 바로 많은 난잡 한 내용 을 사용자 에 게 보 여 줍 니 다. 개량 하 는 방법 은 출력 을 다른 곳 으로 보 내 는 것 입 니 다. 멀 수록 좋 습 니 다.
ftp -n $HOST > /tmp/ftp.worked 2> /tmp/ftp.failed <
처리 오 류 를 개량 할 수 있 습 니 다. ftp 클 라 이언 트 의 종료 상 태 를 처리 하 는 것 입 니 다.
ftp -n $HOST > /tmp/ftp.worked 2> /tmp/ftp.failed <
then
안의 코드 는 일반적으로 실행 되 지 않 습 니 다. 대부분의 경우 ftp 클 라 이언 트 는 상태 로 돌아 갑 니 다 0
. 이것 은 쓸모없는 정보 만 줄 수 있 습 니 다. 파일 전송 이 실 패 했 지만 스 크 립 트 에서 도 문 제 를 찾 을 수 없습니다. 다음 방법 은 파일 전송 이 성공 적 인지 확인 할 수 있 습 니 다.#!/bin/sh
ftp -n << END_SCRIPT
open $1
user $2 $3
put $4
get $4 retrieval.$$
bye
END_SCRIPT
if [ -f retrieval.$$ ]
then
echo "FTP of $4 to $1 worked"
rm -f retrieval.$$
else
echo "FTP of $4 did not work"
fi
불합격 전송 은 파일 을 남 깁 니 다.
대체 스 크 립 트
나 는 usenet 글 에서 다른 방법 을 보 았 다.
#!/bin/sh
USER=userid
PASSWD=userpw
ftp -n f2dev <
이것 은 여전히
-n
수작 을 사용 하지만, 사용자 이름과 비밀 번 호 를 보 내 는 것 은 모두 ftp 명령 에 있 습 니 다.셸 스 크 립 트 에서 ftp 를 사용 하 는 방법
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.