2

私はbashでcurlを含むhtmlファイルをダウンロードしようとしています。このサイトのように:http: //www.registrar.ucla.edu/schedule/detselect.aspx?termsel = 10S&subareasel = PHYSICS&idxcrs = 0001B +++

手動でダウンロードすると、正常に動作します。ただし、crontabを使用してスクリプトを実行しようとすると、出力htmlファイルは非常に小さく、「オブジェクトはここに移動しました」とだけ表示されます。壊れたリンクで。これは、crontabコマンドが実行するスパース環境と関係がありますか?私はこの質問を見つけました:

php ssl curl:オブジェクト移動エラー

しかし、私はphpではなくbashを使用しています。bashでこの問題を修正するために設定する同等のコマンドラインオプションまたは変数は何ですか?

(wgetではなくcurlでこれを実行したい)

編集:まあ、ファイルを手動で(インタラクティブシェルを介して)ダウンロードすることは機能することもありますが、機能しないこともあります(「オブジェクトはここに移動しました」というメッセージが表示されます)。したがって、特にcronの環境の問題ではなく、curl自体の問題である可能性があります。

cronエントリ:
* * * * * ~/.class/test.sh >> ~/.class/test_out 2>&1

test.sh:

#! /bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/sbin
cd ~/.class

course="physics 1b"
url="http://www.registrar.ucla.edu/schedule/detselect.aspx?termsel=10S<URL>subareasel=PHYSICS<URL>idxcrs=0001B+++"

curl "$url" -sLo "$course".html  --max-redirs 5

編集:問題は解決しました。問題は、URLの漂遊タグでした。これは、スクリプトを生成するために実行していて、sedがのすべてのインスタンスを正規表現sed s,"<URL>",\""$url"\", template.txt > test.shに置き換えたためです。URLを修正した後、カールは正常に機能します。&<URL>

4

2 に答える 2

2

300シリーズのリダイレクトに続く-Lorオプションが必要です。カールをリダイレクトに制限します。--location--maxredirs [n]n

これがインタラクティブシェルから機能するのは不思議です。同じURLを取得していますか?cronエントリで環境スクリプトを調達することをいつでも試すことができます。

* * * * * . /home/you/.bashrc ; curl -L --maxredirs 5 ...

編集:サンプルのURLは、スクリプトのURLとは多少異なります。スクリプトには、追加のタグ$urlのペアがあります。それらを、リ​​クエスト用の従来の引数区切り文字である、に<URL>置き換えると、私にとってはうまくいきます。&GET

于 2010-03-31T19:04:32.273 に答える
0

スクリプトを見ないと、何が起こっているのかを正確に推測するのは困難ですが、推測されるように、環境の問題である可能性があります。

多くの場合に役立つことの 1 つは、スクリプトで実行可能ファイルとファイルへのフル パスを指定することです。

スクリプトと crontab エントリを提示していただければ、さらにお役に立ちます。

于 2010-03-31T22:10:44.050 に答える