web-dev-qa-db-ja.com

エスケープ! wgetのパスワードパラメータで

私はこのようなものを実行しようとしています:

wget --user=foo --password=bar! url

!!パスワードの問題が発生しています。のように、\でエスケープしてみました

--password=bar\!

一重引用符と二重引用符でカプセル化してみました。パスワードを別のファイルに入れて試してみました

--password = cat pass.txt

毎回、403 Forbiddenが表示されます。 -dを使用すると、SSLハンドシェイクが成功していることがわかります。 Windowsコマンドラインでは、コマンドは機能します。私の想定では、私は!別の方法ですが、他に方法がわかりません。

5
Dave

引用符を使用してみてください:

--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にアクセスしようとするとどうなりますか?

詳細なディスカッション here および here

7

%21のURLエンコード値である!を試してください。

set +Hを試して、Bashの履歴拡張をオフにしてください。

編集:

password = STRINGファイルまたはWGETRC環境変数が指すファイルにhttp_password = STRINGftp_password = STRING、または~/.wgetrcを設定し、--passwordを省略してみてくださいコマンドラインからのオプション。

動作しない:

wget ftp://user:[email protected]/file

次を使用できます。

wget ftp://user:p\[email protected]/file

'!'の前の '\'に注意してください

0
user174154