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


18

これは私が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つのシステム間で行うのが最も簡単な方法です。


1
待ってください、FTPはそのためではありません!FTPはFile Transfer Protocolの略です。SSHが必要です。
nickguletskii

釘を打つ必要があり、アイロン台があるだけなら...持っているもので間に合うようになります。Telnetを試していますが、FTPは動作します。2番目のシステムの制限された制御とそれ以外... FTPエコーは、「アイロン台」であっても機能します。
WernerCD

まあ、それは私のために機能しませんnick@AccessDenied:~$ ftp ftp> echo "hi" ?Invalid command ftp>
でした...-nickguletskii

1
ftpechoコマンドはありません。 lftpが、それは純粋にローカルであるため、それを自分でそれをしたい理由がわかりません
。...-poolie

@nickguletskiiええ...私は間違ったことをしているのに答えを得ようとしていました(おそらくもっとはっきりしたかもしれません)。チャールズは私に役立つ答えを持っています(私がSOで手に入れたcli-phpソリューションに加えて)。
WernerCD

回答:


20

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

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

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


1
Eeeeew ...プレーンテキストのパスワード
...-nickguletskii

-cUbuntuでうまく動作します。
プーリー

2
コマンドラインにパスワードを入力する必要はありません。1つの良いオプションは、パスワードを入力し、それが~/.netrcmodeであることを確認することです0600。FTPは、ネットワーク上でプレーンテキスト以外のパスワードをネゴシエートできます。
プーリー

動作します!驚くばかり。はい...それは「良い」ソリューションではありませんが、私のオプションは2番目のマシンで制限されているので、FTPは、いですが動作します。
WernerCD

19

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

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

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

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

 ftp -n < ftpcommands.txt

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

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


注:ファイル転送が「200」応答で失敗した場合は、ファイル転送の直前に「passive」コマンドを追加してパッシブモードに入ります。
ニックジンガー

2

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

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

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

ssh username@host echo "Hello World\!"

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

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

2番目のシステムにはSSHがありません。FTP_RAWを介してPHPで動作するものが実際にありますが、ある時点で動作しない場合があります。
WernerCD

1

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

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

ファイルを入手します。

source ~/.bashrc

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


0

次を使用して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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.