내 서버의 비밀번호가 다음과 같다고 가정해 보겠습니다.Abcd$1234
쉘 스크립트에서 다음을 사용하여 다른 서버에서 내 서버로 파일을 ftp하려고 합니다.
ftp -inv (IP) << EOF
user Username Abcd$1234
"lines to ftp file"
bye
FTP를 사용할 수 없습니다. 비밀번호를 Abcd\$1234
and 로 바꾸려고 시도했지만 "Abcd\$1234"
작동하지 않았습니다.
하지만 FTP 없이도 내 서버에 로그인할 수 있습니다(비밀번호가 유효한지 확인하기 위해).
누구든지 도와줄 수 있나요? $
내 비밀번호를 어떻게든 사용하고 싶어요
답변1
여기에 파일을 제출하세요.
cat <<EOF
그 뒤에는 여러 줄의 텍스트가 오고, EOF
들여쓰기 없이 새 줄에 텍스트 문자열이 옵니다. EOF 사이의 부분은 표준 입력으로 명령에 전달됩니다. "EOF"가 "인용"되면 대체가 이루어지지 않습니다. 들여쓰기 유형은 <<-를 참조하세요.
그래서..
ftp -inv (IP) <<'EOF'
user Username Abcd$1234
"lines to ftp file"
bye
EOF
유효해야 하며 $
문자 그대로 받아들여 집니다 $
. 변수로 참조하지 않습니다.
답변2
여기에 있는 문서 대신 다음과 같이 시도해 보세요.
pw='Abcd$1234'
exec 6>&1
ftp -nvi >&6 2>&6 |&
print -p open Server
print -p user User $pw
"lines to ftp file"
print -p bye