私はこのようなものを実行しようとしています:
wget --user=foo --password=bar! url
!!パスワードの問題が発生しています。のように、\でエスケープしてみました
--password=bar\!
一重引用符と二重引用符でカプセル化してみました。パスワードを別のファイルに入れて試してみました
--password = cat pass.txt
毎回、403 Forbiddenが表示されます。 -dを使用すると、SSLハンドシェイクが成功していることがわかります。 Windowsコマンドラインでは、コマンドは機能します。私の想定では、私は!別の方法ですが、他に方法がわかりません。
引用符を使用してみてください:
--password="bar\!"
または--password='bar\!'
サーバー側のエラーは何ですか?
更新:Apache2.2.14を実行しているUbuntu10.4マシンでテストを実行しました。 wget --user=foo --password=bar! url
は私のために働きます。
間違ったパスワードを使用すると、user foo: authentication failure for "/directorytest/": Password Mismatch
のようなエラーが表示されます。
再度更新:(一歩後退)
このエラーは「サーバー構成によってクライアントが拒否されました」と言います。私はApacheソースを閲覧しましたが、このエラーメッセージは mod_authz_Host からのものです。これは、問題がパスワード(認証)にあるのではなく、クライアントホストがこのApacheリソースへのアクセスを許可されていないことを示しています。 mod_authz_Hostは、ホスト名とIPを扱います。
上記では、「Windowsコマンドラインでコマンドが機能する」と述べています。すべてのテストは同じクライアントシステムからのものですか?この同じWindowsシステムで「wget」を実行していますか? IEまたはFirefoxを使用してこの同じURLにアクセスしようとするとどうなりますか?
%21
のURLエンコード値である!
を試してください。
set +H
を試して、Bashの履歴拡張をオフにしてください。
編集:
password = STRING
ファイルまたはWGETRC
環境変数が指すファイルにhttp_password = STRING
、ftp_password = STRING
、または~/.wgetrc
を設定し、--password
を省略してみてくださいコマンドラインからのオプション。
動作しない:
wget ftp://user:[email protected]/file
次を使用できます。
wget ftp://user:p\[email protected]/file
'!'の前の '\'に注意してください