2011-06-10 3 views
0

J'essaie d'obtenir wget pour travailler avec une post-requête et un mot de passe spécial. Il contient 'et c'est comme ceci:Utiliser 'in Shellscript (wget)

wget --save-cookie cookie.txt --post-data "utilisateur = Abraham & password = - my'precious!" Mais quand j'utilise le tick avec wget, j'obtiens des erreurs étranges. Est-ce que quelqu'un sait comment le faire fonctionner?

+0

Avez-vous besoin d'urlencoder ces données, ou wget fait-il cela pour vous? –

Répondre

2

Le backtick dans votre demande est un problème simple, même si vous en avez peut-être un autre qui s'y cache. Le mot que vous recherchez est 'escape' - le backtick a une signification spéciale sur la ligne de commande et vous devez l'échapper pour qu'il ne soit pas interprété comme tel. Dans le shell bash (console linux typique) le caractère d'échappement est \ - si vous mettez cela devant le backtick, il ne sera plus interprété.

Le deuxième problème potentiel concerne la façon dont vous utilisez wget - êtes-vous certain que c'est la demande que vous êtes censé envoyer? Essayez-vous d'authentifier avec le serveur en utilisant un formulaire Web ou avec Basic, Digest ou une autre forme d'authentification HTTP?

Si c'est la manière dont vous devriez vous authentifier, vous devrez également encoder le --post-data car wget ne le fera pas pour vous.

+0

C'est un simple script PHP qui attend des requêtes POST envoyées à partir d'un simple formulaire HTML. Il stocke les informations de session dans un cookie. J'ai rencontré des problèmes lorsque j'ai essayé d'utiliser wget --post-data "user = data & pwd = my \ 'precieux". Le Shellscript est sorti avec des bulles autour d'un fichier non fermé. – schlingel

+0

Comme je l'ai souligné (et un commentateur ci-dessus), si vous avez besoin de le mettre dans '--post-data', vous devez le coder en pourcentage http://en.wikipedia.org/wiki/Percent-encoding backtick 'le caractère doit être remplacé par'% 60' – benosteen