ここには.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
適用されます。私が知っている限り、最初のセクションの前にディレクティブを置くことは効果がなく、コマンドが実行される前にマクロを使用する方法はありません。password
machine
macdef
machine
open
まず、サイトへの接続を開くとマクロが機能します。
$ 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
答え2
strace ftp
~/.netrc
私のFedoraで使用すると、ホスト名を使用してコマンドラインから実行しない限り読みません。
また、ファイルの最後に空の行を明示的に追加するまで、マクロを認識しません。だから試してみてください
$ ftp ftp.nyxdata.com
ftp> $download_nyse_index