수동 FTP 세션에서 해결되지 않은 변수

수동 FTP 세션에서 해결되지 않은 변수

저는 Linux 시스템에 SSH로 연결하여 일련 번호(예: S1234)를 가져온 다음 라이센스 서버(Unix 시스템)에 대한 ftp 세션을 시작하고 해당 일련 번호에 대한 라이센스를 다운로드하는 bash/expect 스크립트를 작성 중입니다. 예 S1234). 아스팔트).

스크립팅 문제를 제거하기 위해 수동으로 프로세스를 시도했습니다.

  1. Linix 상자에 텔넷 ====> 확인

  2. MYSERIAL="$(직렬 포트 명령 인쇄).tar" ====> 확인

  3. echo $MYSERIAL ====> 좋은 출력은 S1234.tar입니다.

  4. ftp xx.xx.xx.xx =====> ftp 라이센스 서버 확인

  5. GET $MYSERIAL =====> 아니요, 다음을 얻습니다.

ftp> get $MYSERIAL  
local: $MYSERIAL  remote: $MYSERIAL  
200 PORT command successful. Consider using PASV.
550 Failed to open file.
ftp>

이 변수는 $MYSERIALftp 세션에서 S1234.tar로 확인되지 않습니다.

왜 이런 일이 일어나는지 아는 사람이 있나요?

답변1

변수가 FTP 프로그램으로 전달/내보내지지 않으며 쉘 스타일 변수를 지원하는 프로그램이 있는지 모르겠습니다.

일반적인 해결책은 다음을 사용하는 것입니다.여기 문서평가된 변수를 다른 명령과 함께 FTP 프로그램에 전달합니다. 예:

myserial=S1234.tar

ftp -n xx.xx.xx.xx <<-EOF
    user theuser thepassword
    get "$myserial"
    bye
EOF

(참고: 들여쓰기는 탭 문자를 사용하여 합니다. 들여쓰기가 필요하지 않은 경우 -에서 삭제하세요 EOF.)

또는 curl사용하기가 더 쉽습니다 wget.

curl -o "$myserial" "ftp://theuser:[email protected]/$myserial"
curl -o "$myserial" xx.xx.xx.xx/"$myserial"
wget -nv xx.xx.xx.xx/"$myserial"

관련 정보