質問

私はbashでカールしたHTMLファイルをダウンロードしようとしています。このサイトのように: http://www.registrar.ucla.edu/スケジュール/ detselect.aspx?termsel = 10S&subareasel = PHYSICS&idxcrs = 0001B +++する

私はそれを手動でダウンロードすると、それが正常に動作します。しかし、私は試してみて、crontabファイルを通じて私のスクリプトを実行すると、出力htmlファイルは非常に小さく、ちょうど言う「オブジェクトはここに移動しました。」壊れたリンクを。これは、crontabのコマンドがそれを実行まばらな環境とは何かを持っていますか?私はこの質問を見つけます:

PHP SSLカール:オブジェクト移動誤差

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

(私はないのwget、カールでこれをやりたいです)

編集:だけでなく、時々動作します(対話型シェルを経由して)手動でファイルをダウンロードし、時にはそれが(私はまだメッセージ「オブジェクトはここに移動」を取得)しません。それはAではないかもしれないので、具体的にcronの環境に問題があるが、カール自体に。

の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 s,"<URL>",\""$url"\", template.txt > test.shをやっていたし、正規表現の&<URL>のすべてのインスタンスを置き換えSEDからです。 URLを固定した後、カールは罰金に動作します。

役に立ちましたか?

解決

あなたは、300シリーズのリダイレクトを次の-L--locationオプションを、したいです。 --maxredirs [n]nリダイレクトにカールが制限されます。

これは、対話型シェルから動作することをその好奇心が強いです。あなたは同じURLを取得していますか?あなたは常にあなたのcronエントリーでご使用の環境スクリプトを調達しようとすることができます:

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

編集:の例のURLは、スクリプト内の1よりもやや異なっています。スクリプト内の$url<URL>タグの追加のペアを持っています。 &に置き換える、GET要求のための従来の引数seperatorsは、私のために動作します。

他のヒント

あなたのスクリプトを見ずにそれが起こっている正確に何を推測するのは難しいが、それはあなたが推測として、それは環境問題だと考えられます。

は、多くの場合に役立ちます一つのことは、あなたのスクリプトで実行可能ファイルおよびファイルへのフルパスを指定することです。

あなたのスクリプトとのcrontabエントリを表示する場合は、我々はより多くの助けになることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top