.netrcファイルにマクロを定義しましたが、ftpで実行すると「マクロが見つかりません」というメッセージが表示されます。

.netrcファイルにマクロを定義しましたが、ftpで実行すると「マクロが見つかりません」というメッセージが表示されます。

ここには.netrcファイルと私が使ったコマンドがあります。ここで何が間違っているのか知っていますか?

[root@localhost ~]# cat /root/.netrc
machine ftp.nyxdata.com
login anonymous
password empty

macdef download_nyse_index
cd /OpenBook/SymbolMapping
bin
get SymbolMap.xml /tmp/SymbolMap.xml
quit

[root@localhost ~]# ftp
ftp> $ download_nyse_index
'download_nyse_index' macro not found.
ftp> bye
[root@localhost ~]# uname -a
Linux localhost 3.17.8-200.fc20.i686+PAE #1 SMP Thu Jan 8 23:45:44 UTC 2015 i686 i686 i386 GNU/Linux
[root@localhost ~]# which ftp
/bin/ftp
[root@localhost ~]# rpm -qf /bin/ftp
ftp-0.17-65.fc20.i686

ベストアンサー1

macdef他のディレクティブ(など)と同様に、ディレクティブはそれが表示される-headedセクションにのみlogin適用されます。私が知っている限り、最初のセクションの前にディレクティブを置くことは効果がなく、コマンドが実行される前にマクロを使用する方法はありません。passwordmachinemacdefmachineopen

まず、サイトへの接続を開くとマクロが機能します。

$ ftp ftp.nyxdata.com
ftp> $download_nyse_index

FTPセッション全体をスクリプト化するには、ftpコマンドに入力を渡します。

ftp ftp.nyxdata.com <<EOF
cd /OpenBook/SymbolMapping
bin
get SymbolMap.xml /tmp/SymbolMap.xml
quit
EOF

この簡単な作業を行うには、wgetまたはカールを使用してください。コマンドラインにパスワードが表示されたくない場合は、パスワードを入力してください~/.netrc。 wgetはデフォルトでパスワードを読み取り、-nそのオプションを渡すとカールはパスワードを読み取ります。

wget -O /tmp/SymbolMap.xml ftp://ftp.nyxdata.com/OpenBook/SymbolMapping/SymbolMap.xml

おすすめ記事