send message - http
send message - http
wget -O /dev/null 'http://localhost:80/web/message?test&type=1'
hiermit sende ich die Message "test"
Nun wollte ich gern wisse wie ich ein Parameter hinzufügen kann?
test="Hallo"
normal gebe ich immer $test an und Hallo wird genommen.
Nur klappt das nicht
wget -O /dev/null 'http://localhost:80/web/message?$test&type=1'
es wird dann $test angezeigt. GIbt es dazu eine Lösung?
hiermit sende ich die Message "test"
Nun wollte ich gern wisse wie ich ein Parameter hinzufügen kann?
test="Hallo"
normal gebe ich immer $test an und Hallo wird genommen.
Nur klappt das nicht
wget -O /dev/null 'http://localhost:80/web/message?$test&type=1'
es wird dann $test angezeigt. GIbt es dazu eine Lösung?
-
- Beiträge: 2951
- Registriert: 24.12.2010 16:50:59
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rheinland
Re: send message - http
Wuerdest du den String in doppelte Anfuehrungszeichen setzen, dann wuerde es funktionieren. Durch die einfachen wird der eingeschlossene Text als statisch angesehen.
Code: Alles auswählen
FOO=bar
$ echo "$FOO"
bar
# vs.
$ echo '$FOO'
$FOO
Re: send message - http
bei echo klappt es.
Aber bei wget nicht.
wget -O /dev/null 'http://localhost:80/web/message?"$test"&type=1'
"$test" wird angezeigt
wget -O /dev/null 'http://localhost:80/web/message?'$test'&type=1'
wget: not an http or ftp url: ist --- Fehler Meldung
Aber bei wget nicht.
wget -O /dev/null 'http://localhost:80/web/message?"$test"&type=1'
"$test" wird angezeigt
wget -O /dev/null 'http://localhost:80/web/message?'$test'&type=1'
wget: not an http or ftp url: ist --- Fehler Meldung
Re: send message - http
Die gesamte URL muss in doppelte Anführungszeichen gesetzt werden
Code: Alles auswählen
wget -O /dev/null "http://localhost:80/web/message?$test&type=1"
Re: send message - http
Code: Alles auswählen
wget: server returned error: HTTP/1.1 400 Bad Request
Code: Alles auswählen
wget -O /dev/null "http://localhost:80/web/message?text=$test&type=1"
wget -O /dev/null "http://localhost:80/web/message?$test&type=1"
-
- Beiträge: 2951
- Registriert: 24.12.2010 16:50:59
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rheinland
Re: send message - http
Du solltest den Inhalt der Variable "test" entsprechend encodieren. Zum Beispiel sind in URLs keine Leerzeichen erlaubt. Stattdessen wird der Wert %20 fuer ein Leerzeichen genutzt. Hier ein Beispiel:
Code: Alles auswählen
$ test="test äöü test"
$ echo -n $test | perl -p -e 's/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg'
test%20%C3%A4%C3%B6%C3%BC%20test
Re: send message - http
stimmt syssi.
So der Receiver hat von Grund auf kein Pearl. Hatte es versucht manuell zu installieren, nach einer Anleitung.
[/code]
rechte hab ich auf 755 gesetzt
So der Receiver hat von Grund auf kein Pearl. Hatte es versucht manuell zu installieren, nach einer Anleitung.
Code: Alles auswählen
[code]/usr/script/script2.sh: line 211: /bin/perl: cannot execute binary file
rechte hab ich auf 755 gesetzt
Re: send message - http
Ich kann's ja ehrlich nicht glauben, dass dermassen einen abbrechen muss, um das im awk zum Laufen zu bekommen, abertut hoffentlich das Escaping in derselben Weise. awk ist in POSIX, sollte also eigentlich auf dem System drauf sein. Falls nicht, mach's in C:Musst halt gucken, welche Zielarchitektur das ist. Und so rein theoretisch koennte es Zeichensaetze geben, wo a nicht kleiner als z ist, dann geht das natuerlich auch kaputt. Oder wenn irgendwelche nicht-validen Zeichen dazwischen sind.
Gruss Cae
Code: Alles auswählen
$ awk 'BEGIN{for(i=0;i<256;i++){t[sprintf("%c",i)]=i}}{m=split($0,l,"");for(i=1;i<=m;i++){if(l[i]!~/[a-zA-Z0-9-]/)printf("%%%02X",t[l[i]]);else printf("%c",l[i])};print""}'
Code: Alles auswählen
#include <stdio.h>
int main(void) {
char buf;
while (1==fread(&buf, 1, 1, stdin)) {
if (
('a' <= buf && 'z' >= buf) ||
('A' <= buf && 'Z' >= buf) ||
('0' <= buf && '9' >= buf) ||
'-' == buf || '\n' == buf
)
putchar(buf);
else
printf("%%%02X", buf);
}
return 0;
}
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
-
- Beiträge: 2951
- Registriert: 24.12.2010 16:50:59
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rheinland
Re: send message - http
Hier ein Thread mit vielen Loesungen: http://stackoverflow.com/a/10660730
Besonders gefaellt mir:
Besonders gefaellt mir:
Code: Alles auswählen
rawurlencode() {
local string="${1}"
local strlen=${#string}
local encoded=""
for (( pos=0 ; pos<strlen ; pos++ )); do
c=${string:$pos:1}
case "$c" in
[-_.~a-zA-Z0-9] ) o="${c}" ;;
* ) printf -v o '%%%02x' "'$c"
esac
encoded+="${o}"
done
echo "${encoded}" # You can either set a return variable (FASTER)
REPLY="${encoded}" #+or echo the result (EASIER)... or both... :p
}
# easier:
echo http://url/q?=$( rawurlencode "$args" )
# faster:
rawurlencode "$args"; echo http://url/q?${REPLY}