シェルスクリプトの助けが必要です。以下は、あるサーバーから別のサーバーにファイルを転送するシェルスクリプトです。
#!/bin/bash
echo "Please enter id no : "
read input_variable
echo "You entered: $input_variable"
HOST=xxxx
USER=xx
PASSWORD=xxx
ftp -inv $HOST <<EOF
user $USER $PASSWORD
cd /wpath/to/copy/files/$input_variable/inputs/final/
mput x.csv
bye
EOF
X.csv
シェルスクリプトはうまく動作します。リモートサーバーに存在するIDを入力すると、ファイルがコピーされます。しかし、以下にリストされているいくつかの問題があります。
id
noは6文字で構成する必要があります(例M000001
:)。- 正しいIDを入力すると、スクリプトはファイルをコピーします。しかし、間違ったIDを入力した場合は、次のようになります。
M000050
リモートサーバーに存在しない場合でもファイルがコピーされたことを示します。しかし、ファイルをどこにコピーするのかわかりません。 - リモートシステムにディレクトリがない場合は、ディレクトリを作成する必要があります
/final/
。入力したパスがリモートサーバーに表示されます。
ベストアンサー1
- ID番号は6文字でなければなりません(例:M000001)。
次の操作を実行できます。
if [[ ${#input_variable} != "6" ]] then
echo "wrong length"
exit 1
fi
- 正しいIDを入力すると、スクリプトはファイルをコピーします。しかし、間違ったIDを入力した場合は、次のようになります。 M000050 がリモートサーバーに存在しない場合でもファイルがコピーされたことを示します。しかし、ファイルをどこにコピーするのかわかりません。
ファイルを「デフォルト」ftp
ディレクトリにコピーしてcd
失敗し、古いディレクトリに閉じ込められます(コマンドを使用してそのディレクトリへのパスを確認できますpwd
)。
- /final/ディレクトリがリモートシステムに存在しない場合は、それを作成する必要があります。リモートサーバーの前に表示されるパスを入力してください。
mkdir /wpath/to/copy/files/$input_variable/inputs/final/
これをしなければならない