0
ftp ipaddress
bin
hash
cd path
get filename
quit

これらの行をシェルスクリプトで実行したい ユーザー名とパスワードを入力した後、最初の行のみが実行されます 残りの行は実行されず、コントロールは ftp> プロンプトでスタックします

4

3 に答える 3

0

スクリプトがプログラムを呼び出すftpと、シェルは ftp プログラムが終了するまで制御を失います。そのため、新しいテクニックを使用する必要があります。expect1 つの方法は、ここでヒントを得ることができるprogramを使用することです: https://stackoverflow.com/a/12598169/4323。もう 1 つの方法は、lftpLinux などのより「スクリプト化可能な」FTP クライアントを使用することです。これには、目的の種類のスクリプト化された使用を可能にする特定の機能があります。

于 2013-02-27T14:04:36.657 に答える
0

対話型シェルではなくスクリプトでこれを行う場合は、非対話型 FTP クライアントを使用する必要があります。ncftpはチェックアウトできるものです。

于 2013-02-27T14:05:26.737 に答える
0

または、シェルの「here」ドキュメントを使用できます。

#!/bin/bash 

ftp -in <<EOS
user pswd
bin
hash
cd path
get filename
quit
EOS

ヒア ドキュメントは、コマンド ラインで入力したかのように、開いているプログラムの stdin を介してすべてを送信します。ftp クライアントは扱いにくい場合があり、それぞれに独自の落とし穴があるように見えるため、いくつかの実験と の使用man ftpが必要になる可能性があることに注意してください。

これはStackoverflowで以前に出てきたようです。 シェルスクリプトを使用して複数のファイルをftpする方法を読みたいと思うかもしれません

IHTH

于 2013-02-27T14:10:19.117 に答える