На самом деле есть другой способ сделать это.
Windows ftp принимает аргумент "-s: имя файла", содержащий команды для запуска. Вы можете сохранить имя пользователя / пароль там в формате «USER username \ nPASSWD», и они будут запущены в первую очередь, когда соединение будет установлено.
Обязательно удалите файл позже, или, что еще лучше, используйте временный файл, который не попадает на диск;)
РЕДАКТИРОВАТЬ: Уточнение для coolkid. Этот действительно ваш ответ (спасибо за поддержку Джои).
Чтобы быть точным, вот и вы.
Содержимое upload.cmd
:
@echo off
set /p name= Username?
set /p pass= Password?
REM Give dummy data to the human-friendly FTP prompts
REM We will pass actual FTP commands in the next stanza
echo dummy > ftp_commands.txt
echo dummy >> ftp_commands.txt
echo USER %name% >> ftp_commands.txt
echo PASS %pass% >> ftp_commands.txt
echo PUT ftp_commands.txt >> ftp_commands.txt
ftp -s:ftp_commands.txt ftp.mydomain.com
Бег upload.cmd
:
C:\>upload.cmd
Username?anonymous
Password?foobar
Connected to ftp.mydomain.com.
220 2k-32-71-e Microsoft FTP Service (Version 5.0).
User (ftp.mydomain.com:(none)):
331 Password required for dummy .
530 User dummy cannot log in.
Login failed.
ftp> USER anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
230 Anonymous user logged in.
ftp> PUT ftp_commands.txt
200 PORT command successful.