
私はLinuxシステムにSSHで接続してシリアル番号(S1234など)を取得し、ライセンスサーバー(Unixシステム)へのftpセッションを開始し、そのシリアル番号のライセンスをダウンロードするbash / expectスクリプトを作成しています。例S1234)。アスファルト)。
スクリプトの問題を取り除くために手動でプロセスを試しました。
LinixボックスにTelnet ====>チェック
MYSERIAL="$(シリアルポートコマンドの印刷).tar" ====> 確認
echo $MYSERIAL ====>良い出力はS1234.tarです。
ftp xx.xx.xx.xx =====> ftp ライセンスサーバーの確認
GET $MYSERIAL =====> いいえ、次のようになります。
ftp> get $MYSERIAL
local: $MYSERIAL remote: $MYSERIAL
200 PORT command successful. Consider using PASV.
550 Failed to open file.
ftp>
この変数は$MYSERIAL
ftp セッションでは 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"