Это мой сценарий. Как видите, он выполняет только 1 команду (cd /) после подключения к удаленному FTP-серверу. Это очень просто ... но не работает и дает мне "Неверная команда".
Не понимаю почему.
#!/bin/bash
HOST=xxx #This is the FTP servers host or IP address.
USER=xxx #This is the FTP user that has access to the server.
PASS=xxx #This is the password for the FTP user.
# Call 1. Uses the ftp command with the -inv switches.
#-i turns off interactive prompting.
#-n Restrains FTP from attempting the auto-login feature.
#-v enables verbose and progress.
ftp -inv $HOST << EOF
# Call 2. Here the login credentials are supplied by calling the variables.
user $USER $PASS
pass
# Call 3. I change to the directory where I want to put or get
cd /
# Call4. Here I will tell FTP to put or get the file.
#put...
# End FTP Connection
bye
EOF
Это результат:
Connected to [IP]
220 Microsoft FTP Service
?Invalid command
331 Password required for logweb.
230 User logged in.
Remote system type is Windows_NT.
Passive mode on.
?Invalid command
250 CWD command successful.
?Invalid command
?Invalid command
?Invalid command
221 Goodbye.
В «Неверная команда» ошибка из-за тех #
линий. В ftp
не признает #
как префикс комментария.
Если вам нужны комментарии в скрипте, вы можете злоупотребить командой escape to shell !
и следуйте за этим комментарием оболочки:
!# This is comment
Помимо этого, я считаю, что все команды в вашем сценарии выполняются, несмотря на ваше утверждение, что только одна из них:
> user $USER $PASS
< 331 Password required for logweb.
< 230 User logged in.
> cd /
< 250 CWD command successful.
> bye
< 221 Goodbye.