手動FTPセッションで未解決の変数

手動FTPセッションで未解決の変数

私はLinuxシステムにSSHで接続してシリアル番号(S1234など)を取得し、ライセンスサーバー(Unixシステム)へのftpセッションを開始し、そのシリアル番号のライセンスをダウンロードするbash / expectスクリプトを作成しています。例S1234)。アスファルト)。

スクリプトの問題を取り除くために手動でプロセスを試しました。

  1. LinixボックスにTelnet ====>チェック

  2. MYSERIAL="$(シリアルポートコマンドの印刷).tar" ====> 確認

  3. echo $MYSERIAL ====>良い出力はS1234.tarです。

  4. ftp xx.xx.xx.xx =====> ftp ライセンスサーバーの確認

  5. GET $MYSERIAL =====> いいえ、次のようになります。

ftp> get $MYSERIAL  
local: $MYSERIAL  remote: $MYSERIAL  
200 PORT command successful. Consider using PASV.
550 Failed to open file.
ftp>

この変数は$MYSERIALftp セッションでは S1234.tar として解決されません。

なぜこれが起こるのか知っている人がいますか?

ベストアンサー1

変数がFTPプログラムに渡されたりエクスポートされたり、シェルスタイル変数をサポートするプログラムがあるかどうかはわかりません。

一般的な解決策は、次を使用することです。ここのドキュメント評価された変数を他のコマンドとともにFTPプログラムに渡します。例:

myserial=S1234.tar

ftp -n xx.xx.xx.xx <<-EOF
    user theuser thepassword
    get "$myserial"
    bye
EOF

(注:インデントはタブ文字を使用しています。インデントが不要な場合-は削除してくださいEOF。)

またはcurl使いやすいですwget

curl -o "$myserial" "ftp://theuser:[email protected]/$myserial"
curl -o "$myserial" xx.xx.xx.xx/"$myserial"
wget -nv xx.xx.xx.xx/"$myserial"

おすすめ記事