web-dev-qa-db-ja.com

FTPコマンドを1行で実行するにはどうすればよいですか?

これは私がFTPにログインするときにやっていることです:

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

1行のFTPコマンドを実行したい...

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

または

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

似たような...私が作成しようとしているスクリプトの一部として。何も転送されません。いくつかの指示をエコーするだけです。これは、2つのシステム間で行う最も簡単な方法です。

18
WernerCD

それは本当に(他の人が指摘しているように)SSHの仕事ですが、ftpを使用することに決めた場合は、 lftp を試してください。現在サポートされているすべてのUbuntuバージョンで無料で利用できます。コマンドSudo apt install lftpでインストールできます

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

lftpは、コマンドを実行してから終了する-cスイッチを文書化しますが、ほとんどのディストリビューションでは壊れているようです。 -eは、quitを発行しない限り接続を維持します。

20
charlesbridge

単一のftpコマンドでこのマシンからftpサーバーへのファイル転送を実行する方法を探していたときに、このスレッドを見つけました。方法は次のとおりです。

Ftpコマンドを含むファイルを作成します:(「ftpcommands.txt」と呼びます)

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

次に、ftpコマンドを実行し、ファイルをそこにフィードします。

 ftp -n < ftpcommands.txt

-nオプションは、ftpが「open」コマンドを受け取ったときに自動的にログインを試行しないようにします。

それが誰かを助けることを願っています。このソリューションであるものをオンラインで見つけることができなかったため、自分で解決する必要がありました。

18
Jack

FTPを使用してコマンドをリモートで実行することはできません。 File Transfer Protocolの略です。実際に必要なのはSSHです。

必要なことは、パッケージsshを両方のマシンにインストールし、 このガイド に従ってパスワードなしのログインをセットアップすることだけです。

そして今、それを呼び出す方法:

ssh username@Host echo "Hello World\!"

たとえば、これは私が自分自身でそれをしている:

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

@charlesbridgeの回答を補完するものとして、〜/ .bashrcファイルに以下を含めます。

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

ファイルを入手します。

source ~/.bashrc

ここで、エイリアス「yoursite」を使用して、必要な数のコマンドにログオンして実行します。

1
Alan

次を使用してbusyboxをインストールします。

apt-get install busybox

busyboxはLinuxまたは組み込みシステムの両方で動作し、ftpgetとftpputを使用できます

busybox ftpput -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT

busybox ftpget -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT
0
user2328368