Archiv verlassen und diese Seite im Standarddesign anzeigen : bash und Kommandozeilenquoting
Hallo,
ich bin heute über folgendes Problem gestolpert.
Ich rufe in einem bash-Skript das Programm "curl" auf.
"curl" unterstützt ab Version 7.20 die Option
--noproxy "*"
Da ich nicht sicher bin, auf welche curl-Version ich stoße, ermittle ich mir die
Version und unterscheide dann im Aufruf. Also:
if [ $curlversion -gt "719" ]
then
NO_PROXY_OPTION="--noproxy \"*\""
else
NO_PROXY_OPTION=""
fi
und dann der eigentliche Aufruf:
curl ${NO_PROXY_OPTION} ... URL
Das Problem ist die Übergabe des "*". Wenn ich mit set -x debugge, sehe ich,
dass immer
curl --noproxy '"*"' ... URL
ausgeführt wird, also die doppelten Hochkommas sind von einfachen Hochkommas umschlossen. Damit klappt dann der CURL-Aufruf nicht.
Wer kann helfen?
Mit Gruß
Thomas
printer.sh -->
#!/bin/bash
echo $*
exit 0
call_printer.sh -->
#!/bin/bash
p="--noproxy \"*\""
set -x
./printer.sh ${p}
Ausgabe:
+ ./printer.sh --noproxy '"*"'
--noproxy "*"
Wie man sieht, wird printer.sh mit '"*"' aufgerufen. Ich möchte aber den Aufruf "*".
Sonst klappt es mit dem curl-Aufruf nämlich nicht.
Mit Gruß
Thomas
Schmeiß den Noproxy-Parameter weg und setz lieber die Umgebungsvariable NO_PROXY. ;)
Format ist dasselbe, Aufruf wäre dann z.B.
NO_PROXY='*' curl ... URL
Schmeiß den Noproxy-Parameter weg und setz lieber die Umgebungsvariable NO_PROXY. ;)
Format ist dasselbe, Aufruf wäre dann z.B.
NO_PROXY='*' curl ... URL
Gute Idee das Problem zu umschiffen, klappt aber leider nicht. Ich habe in meiner Umgebung jetzt nur noch eine Variable mit 'proxy'-->
$ env | grep -i proxy
NO_PROXY=*
curl ... URL
ergibt HTTP-Return-Code=000
und $? ist 56
in der gleichen Umgebung mit
curl --noproxy "*" ... URL
ergibt HTTP-Return-Code=200 (=SUCCESS)
und $? ist 0
Meine curl version ist curl 7.20.1.
Gruß
Thomas
Wenn du NO_PROXY in eine eigene Zeile schreiben willst, musst du noch export davor setzen, also entweder
export NO_PROXY='*'
curl ... URL
oder
NO_PROXY='*' curl ... URL
Wenn du NO_PROXY in eine eigene Zeile schreiben willst, musst du noch export davor setzen, also entweder
export NO_PROXY='*'
curl ... URL
oder
NO_PROXY='*' curl ... URL
Hilft aber nicht.
$ NO_PROXY='*' curl --insecure -u cobra-we-system:Naja-we1 -w "%{http_code}" <URL>
Output: return code von curl =56
stdout: 000
komplette Ausgabe:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (56) Received HTTP code 404 from proxy after CONNECT
000
Langsam denke ich, dass das ein Bug von curl ist.
Trotzdem verhält sich curl ja korrekt, wenn man die Option --noproxy mitgibt.
Und deine Idee ist ja "nur" ein Workaround.
Gruß
Thomas
Langsam denke ich, dass das ein Bug von curl ist. Nö, funzt bei mir problemlos. Hab das auch ausprobiert:
curl google.de # Funzt (kein Proxy eingetragen)
export ALL_PROXY=http://gibts.nich.t
curl google.de # Funzt nicht (nicht-existenten Proxy eingetragen)
NO_PROXY='*' curl google.de # Funzt, da NO_PROXY greift
export NO_PROXY='*'
curl google.de # Funzt, da NO_PROXY auch hier greift
Hier noch Infos von meinem curl unter Ubuntu 10.10:
$ curl --version
curl 7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
Protocols: dict file ftp ftps http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
Der Fehler liegt also irgendwo bei dir.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.