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これは、行の終わりにあまりにも面倒でない小規模なデータとサーバーでのみ機能できますが、ユーザーのニーズには十分です。

答え2

netcatBuildrootでは、多くのツールを使用できます(http://buildroot.uclibc.org/)その後、wgetデバイスにダウンロードして使用できます。これが似たような状況で私がすることです。

正しいオプションを設定し、を使用してそのオプションにアクセスできますmake menuconfig。次のオプションページが最も重要な場合があります(一般的に重要なオプションはとしてマークされています!>)。

  • ターゲット
  │ ┌───────────────────────────────────────────────── ─────────────────────┐│  
!>│ │ ターゲットアーキテクチャ(FOOBAR) ---> │ │  
  │ │ ターゲットバイナリ形式(ELF) ---> │ │  
!>│ │ ターゲットアーキテクチャバリアント(Gen42) ---> │ │  
  │ │ 対象 ABI(EABI) ---> │ │  
  │ │ 浮動小数点戦略(ソフト浮動小数点) ---> │ │  
  │ │ │ │  
  • ビルドオプション
!> │ │ ライブラリ(静的のみ) ---> │ │  
  │ │ ($(CONFIG_DIR)/local.mk) パッケージカバレッジファイルの場所 │ │  
  │ │() グローバルパッチディレクトリ │ │  
  │ │ アドバンス ---> │ │  
  │ └───────────────────────────────────────────────── ────────────────────────┘
  • ツールチェーン
  │ ┌───────────────────────────────────────────────── ─────────────────────┐│  
  │ │ ツールチェーンタイプ (Buildroot ツールチェーン) ---> │ │  
  │ │ (buildroot) カスタムツールバー ベンダー名│ │  
  │ │ *** カーネルヘッダオプション*** │ │  
!>││カーネルヘッダファイル(手動で指定されたLinuxバージョン)--->││  
!>││(2.6.99) Linux版││  
!>│ │ カスタムカーネルヘッダファイルシリーズ(2.6.x) ---> │ │  
  │ │ C ライブラリ(uClibc) ---> │ │  
  │ │ *** uClibc オプション*** │ │  
!>││uClibc Cライブラリバージョン(uClibc 0.9.33.x)--->││  

make toolchain次に、必要なツールを使用してツールチェーンを構築しますmake nc

関連情報