これは私が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つのシステム間で行う最も簡単な方法です。
それは本当に(他の人が指摘しているように)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が「open」コマンドを受け取ったときに自動的にログインを試行しないようにします。
それが誰かを助けることを願っています。このソリューションであるものをオンラインで見つけることができなかったため、自分で解決する必要がありました。
FTPを使用してコマンドをリモートで実行することはできません。 File Transfer Protocolの略です。実際に必要なのは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_WANT
busybox ftpget -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT