FTP가 서버에 연결 중이지만 오류가 발생했습니다. -
Enter if the env is dev or test or prod:
test
Please enter the id no :
xxxxxxx
Connected to xxxx
220 (vsFTPd 2.2.2)
331 Please specify the password.
230 Login successful.
**?Invalid command
?Invalid command
?Invalid command
?Invalid command
?Invalid command**
200 PORT command successful. Consider using PASV.
아래는 쉘 스크립트입니다 -
#!/bin/bash
echo "Enter if the env is dev or test or prod:"
while :
do
read -r INPUT_STRING
case $INPUT_STRING in
test | TEST)
echo "Please enter id no : "
read -r input_variable
if [[ ${#input_variable} -ne "7" ]]
then
echo "Please check id no given"
exit 1
fi
HOST=XXX
USER=XXX
PASSWORD=XX
ftp -inv $HOST <<- EOF
user $USER $PASSWORD
mypath='/test/$input_variable/destination/'
if ! cd "$mypath"
then
exit 1
fi
mput x.csv
EOF
exit 1
;;
esac
done
답변1
가장 큰 문제는 line settings 변수를 사용하고 있다고 생각 mypath='/test/$input_variable/destination/'
하지만 실제로는 FTP 세션 내에서 실행되고 있다는 것입니다.
FTP 명령 위로 이동해야 합니다. 동일한 이유로 그곳에서 확인할 수 없는 조건도 이후에 확인할 수 있습니다.
답변2
문제는 변수를 설정하려고 한다는 것입니다.~에여기에 있는 문서:
ftp -inv $HOST <<- EOF
user $USER $PASSWORD
mypath='/test/$input_variable/destination/'
if ! cd "$mypath"
then
exit 1
fi
mput x.csv
EOF
그건 작동하지 않습니다. 이 섹션을 다음으로 변경합니다.
mypath="/test/$input_variable/destination/"
ftp -inv $HOST <<-_EOF_
user $USER $PASSWORD
cd "$mypath"
mput x.csv
_EOF_
답변3
작은따옴표를 큰따옴표로 변경합니다.
바꾸다:
mypath='/test/$input_variable/destination/'
사용:
mypath="/test/$input_variable/destination/"