Как мне выполнить команды FTP в одной строке?

Это то, что я делаю, когда я вхожу в FTP:

ftp user:password@serverftp: user:password@server: Unknown hostftp> echo HELLO WORLD!ftp> quit

Я бы хотел выполнить однострочную FTP-команду...

ftp user:password@server -command "echo HELLO WORLD"

или

"echo HELLO WORLD" | ftp user:password@server 

Что-то подобное... как часть сценария, который я пытаюсь создать. Ничего не передается, мне просто нужно повторить некоторые инструкции, и это самый простой способ, который я нашел, чтобы сделать это между двумя моими системами.

Это действительно больше подходит для SSH (как указывали другие), но если вы твердо решили использовать ftp, попробуйте lftp. Он свободно доступен для всех поддерживаемых в настоящее время версий Ubuntu. Вы можете установить его с помощью команды sudo apt install lftp

lftp -u username,password -e "your command;quit" ftp.site.com

lftp документирует -c переключатель, который запускает команду, а затем завершает работу, но, похоже, он сломан в большинстве дистрибутивов. -e будет держать вас на связи, если вы не выдадите quit.

Я нашел эту тему, когда искал способ заставить одну команду ftp выполнить передачу файлов с этого компьютера на ftp-сервер. Вот как это делается:

Создайте файл с командами ftp в нем: (назовите его 'ftpcommands.txt ')

 open YourFtpServer.com user YourUserName YourPassword put localfilename remotefilename bye

Затем запустите команду ftp и вставьте в нее файл:

 ftp -n < ftpcommands.txt

Опция -n не позволяет ftp автоматически пытаться войти в систему, когда он получает вашу команду "открыть".

Надеюсь, ЭТО кому-то поможет. Я не смог найти в Интернете ничего, что было бы таким решением, поэтому мне пришлось разобраться с этим самому.

Вы не можете использовать FTP для удаленного выполнения команд. Он расшифровывается как Протокол передачи файлов. Что вам на самом деле нужно, так это SSH.

Все, что вам нужно сделать, это установить пакет ssh на обеих машинах, а затем следуйте это руководство чтобы настроить вход в систему без пароля.

А теперь как это назвать:

ssh username@host echo "Hello World\!"

Например, это я делаю это сам с собой:

nick@AccessDenied:~$ ssh nick@localhost echo "Hello World\!"Hello World!

Дополняя ответ @charlesbridge, включите в свой файл ~/.bashrc следующее:

alias yoursite="lftp -u <username> -e \"<commandA;commandB>\" yoursite.com"

Исходный файл:

source ~/.bashrc

Теперь используйте псевдоним "yoursite" для входа в систему и выполняйте столько команд, сколько захотите.

Установите busybox с помощью:

apt-get install busybox

busybox может работать как на Linux, так и на встроенной системе, а затем использовать ftpget и ftpput

busybox ftpput -u USER -p PASSWD URL_FTPSERVER FILE_U_WANTbusybox ftpget -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT

Давайте предположим, что на данный момент вы являетесь пользователем-любителем или делаете это в стиле песочницы.

curl() можно использовать для FTP, даже для передачи.также wget (wput). и есть ncftp (для фоновой асинхронной передачи) и lftp.

.netrc - хорошая идея, даже от root.

Но ваше "эхо" вызывает беспокойство. Если вам нужны простые удаленные команды, установите putty-tools и используйте "plink". Существует также "pscp", если вы хотите его проверить. Профессионалы могут осуждать эти инструменты, но они отлично подходят для вашей домашней сети, cron-заданий и быстрого написания сценариев.

Это инструменты SSH, и они могут быть такими же мощными, как официальные продукты, такие как Ansible. Им требуется SSH-сервер, открытые порты для доступа к нему и, возможно, идентификационные данные. Я приношу извинения, если SSH для вас не по теме, тип скрипта, описанный в популярном ответе Джека, часто встречается при передаче sftp (обратите внимание на "s").

Кроме того, вы можете запускать CGI-подобные команды с FTP, но об этом обычно не говорят и публично не поощряют. Это включает в себя наблюдение за передаваемым файлом или использование "фиктивного" файла, доступного только для записи, на настраиваемом сервере.

(Далее следует загадочный пример).В дистрибутиве MVS3.8 "TK4-" на эмуляторе мэйнфреймов Hercules (теперь Hyperion) удаленный ввод задания осуществляется путем передачи по FTP в файл AAINTRDR, который заменяет устройство чтения карт для чтения "карт" в вашем файле.

Подождите, FTP * не * для этого! FTP расшифровывается как Протокол передачи файлов. Вам нужен SSH.

У “ftp” нет команды “echo”. `lftp" есть, но он чисто локальный, так что я не понимаю, почему вы хотите сделать это сами по себе…

когда вам нужно вбить несколько гвоздей, а все, что у вас есть, - это гладильная доска… ты обходишься тем, что у тебя есть. Я пробую Telnet, но FTP работает. Ограниченный контроль над второй системой, а что нет… FTP echo работает, даже если это “Гладильная доска”.

Ну, у меня это не сработало… "ник@AccessDenied: ~$ftp
ftp> echo “привет”
?Недопустимая команда
ftp>
`

@nickguletskii Да… Я пытался получить ответ на то, что я делал неправильно (возможно, я мог бы выразиться более ясно). У Чарльза есть ответ, который работает для меня (в дополнение к решению cli-php, которое я получил на SO).

@poolie lftp “-e ‘echo ПРИВЕТ, МИР!’” работает для меня. Команда выполняется во вторичной системе.

@WernerCD откуда вы знаете, что он запущен в удаленной системе?

@poolie это команда, которая отправляет сообщение на пейджер. Я отправляю команду и получаю сообщение на свой телефон. В принципе, использование нашей существующей системы подкачки требует немного дополнительных усилий, поэтому мне не нужно дублировать ничего из того, что уже настроено (телефонные номера, планировщик, списки и т.д.).

К сожалению, "ftp user:password@server ` не поддерживается в ftp.