Что за команда для входа с FTP все в одну строку?
ftp username:password@my.domain.com
говорит:
Пароль требуется для имени пользователя: пароль
Что за команда для входа с FTP все в одну строку?
ftp username:password@my.domain.com
говорит:
Пароль требуется для имени пользователя: пароль
ftp ftp://username:password@my.domain.com
Вы могли бы довольно легко использовать ftp --help
хотя.
ftp -nv yourftpserver.com
тогда user your_username
или user anonymous
Я отправил этот ответ, так как у меня не работает ftp ftp://username:password@my.domain.com
.
Usage: { ftp | pftp } [-46pinegvtd] [hostname]
-4: use IPv4 addresses only
-6: use IPv6, nothing else
-p: enable passive mode (default for pftp)
-i: turn off prompting during mget
-n: inhibit auto-login
-e: disable readline support, if present
-g: disable filename globbing
-v: verbose mode
-t: enable packet tracing [nonfunctional]
-d: enable debugging
Лучший вариант - использовать .netrc вместе с чем-то вроде gpg в целях безопасности.
Я написал сценарий общего назначения для этого, который я могу загрузить позже, но он сводится к:
gpg -c .netrc
или, необязательно, с парольной фразой в командной строке и адресатом вывода:
gpg --passphrase <secretphrase> -o .netrc.gpg -c .netrc
Здесь не показано, но вы можете дополнительно использовать асимметричные ключи (если они у вас установлены) с gpg, чтобы сделать это еще более безопасным.
Затем, когда вы будете готовы войти
gpg .netrc.gpg
# or
gpg --passphrase <secretphrase> -o .netrc .netrc.gpg
ftp yourservername
rm .netrc
Пример .netrc:
machine google.com
login <username>
password <secretpassword>
Я на самом деле храню локальный хэш и оригинальную копию этих файлов на компьютере, отличном от того, на котором я использую файлы .netrc, и проверяю хэш .netrc и сценария, который я запускаю, но это выше и вне оригинального вопроса ОП.
Используйте netrc. Это лучше, чем вводить пароль в командной строке.
Ты можешь попробовать
my_ftp() {
ftp -i -n <<EOF
open $HOST
user "$USER" "$PASS"
$@
EOF
}
который вы затем можете вызвать с помощью my_ftp $'ls subfolder\nanothercommand'
Это решение не интерактивное, но лучшее, что я мог придумать