CURLを使用せずにHTTPリクエストを実行する方法

CURLを使用せずにHTTPリクエストを実行する方法

限られたバイナリを含むARM CPUベースのBusyBox v1.8.1(組み込みLinux)があります。カールを使わずにhttpを投稿または挿入する方法は?利用可能なwgetがあります。

# wget
BusyBox v1.8.1 (2015-04-06 16:22:12 IDT) multi-call binary

Usage: wget [-c|--continue] [-s|--spider] [-q|--quiet] [-O|--output-document file]
        [--header 'header: value'] [-Y|--proxy on/off] [-P DIR]
        [-U|--user-agent agent] url

Retrieve files via HTTP or FTP

Options:
        -s      Spider mode - only check file existence
        -c      Continue retrieval of aborted transfer
        -q      Quiet
        -P      Set directory prefix to DIR
        -O      Save to filename ('-' for stdout)
        -U      Adjust 'User-Agent' field
        -Y      Use proxy ('on' or 'off')

CPU情報...

# cat /proc/cpuinfo
Processor       : ARM926EJ-S rev 1 (v5l)

ベストアンサー1

多くは、busyboxや他のコマンドの内容によって異なります。私はあなたの制限がうまくwgetいかないと思います。シンプルPOSTリクエストは、catソケットを開くことができる場合(例:nc (netcat、socat)、telnetまたはフルバージョンを使用してbash次のように接続できます)を使用してシミュレートできます。

curl要求を実行し、記録されたすべてのデータをコピーする他のマシンから。たとえば、

curl --trace-ascii - -0 -d var=val http://localhost/~meuh/dump.cgi

これは、送信カールトレース出力に表示されます。

POST /~meuh/dump.cgi HTTP/1.0
User-Agent: curl/7.37.0
Host: localhost
Accept: */*
Content-Length: 7
Content-Type: application/x-www-form-urlencoded

var=val

たとえば、Googleにbashスクリプトを使用してファイルに入れると、POSTを再現できます。

#!/bin/bash
exec 5<>/dev/tcp/www.google.com/80
cat mypostfile >&5
cat <&5 # reply

\r\nこれは、行の終わりにあまりにも面倒でない小規模なデータとサーバーでのみ機能できますが、ユーザーのニーズには十分です。

おすすめ記事