ftp ipaddress
bin
hash
cd path
get filename
quit
これらの行をシェルスクリプトで実行したい ユーザー名とパスワードを入力した後、最初の行のみが実行されます 残りの行は実行されず、コントロールは ftp> プロンプトでスタックします
スクリプトがプログラムを呼び出すftp
と、シェルは ftp プログラムが終了するまで制御を失います。そのため、新しいテクニックを使用する必要があります。expect
1 つの方法は、ここでヒントを得ることができるprogramを使用することです: https://stackoverflow.com/a/12598169/4323。もう 1 つの方法は、lftp
Linux などのより「スクリプト化可能な」FTP クライアントを使用することです。これには、目的の種類のスクリプト化された使用を可能にする特定の機能があります。
対話型シェルではなくスクリプトでこれを行う場合は、非対話型 FTP クライアントを使用する必要があります。ncftpはチェックアウトできるものです。
または、シェルの「here」ドキュメントを使用できます。
#!/bin/bash
ftp -in <<EOS
user pswd
bin
hash
cd path
get filename
quit
EOS
ヒア ドキュメントは、コマンド ラインで入力したかのように、開いているプログラムの stdin を介してすべてを送信します。ftp クライアントは扱いにくい場合があり、それぞれに独自の落とし穴があるように見えるため、いくつかの実験と の使用man ftp
が必要になる可能性があることに注意してください。
これはStackoverflowで以前に出てきたようです。 シェルスクリプトを使用して複数のファイルをftpする方法を読みたいと思うかもしれません
IHTH