Como executar a solicitação HTTP sem usar CURL

2

Tenho o BusyBox v1.8.1 baseado em CPU ARM (Embedded Linux) com binários limitados. Como posso publicar ou colocar http sem usar o curl? Eu tenho wget disponível:

# 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')

Informação da CPU ...

# cat /proc/cpuinfo
Processor       : ARM926EJ-S rev 1 (v5l)
    
por irom 05.10.2015 / 20:15

2 respostas

8

Depende muito do que você tem em seu busybox e outros comandos. Eu não pense que seu wget limitado pode ser usado; no entanto, uma solicitação POST simples pode ser emulado com apenas um cat , desde que você possa abrir um soquete, por exemplo com nc (netcat, socat), telnet , ou mesmo com uma versão completa de bash , como pode faça uma conexão, como mostrado abaixo:

Em outra máquina, use curl para fazer a solicitação e copie todos os dados que escreve. Por exemplo:

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

Isso é mostrado na saída de rastreamento de curl que foi enviada:

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

Se você colocar isso em um arquivo, poderá reproduzir o POST, por exemplo para o google com o script bash:

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

Isso provavelmente funciona apenas para dados pequenos e servidores que não são muito exigente com \r\n finais de linha, mas pode ser suficiente para você.

    
por 05.10.2015 / 20:58
0

Muitas ferramentas podem ser estaticamente compiladas (eu sei disso com netcat ) dentro do Buildroot ( link ) e baixadas usando wget no dispositivo. Foi o que fiz em uma situação semelhante.

Apenas se preocupe em definir as opções corretas, você pode acessá-las usando make menuconfig . As seguintes páginas de opções provavelmente serão as mais importantes para você (marquei as opções frequentemente importantes usando !> ):

  • Segmentar
  │ ┌────────────────────────────────────────────────────────────────────────────┐ │  
!>│ │        Target Architecture (FOOBAR)  --->                                  │ │  
  │ │        Target Binary Format (ELF)  --->                                    │ │  
!>│ │        Target Architecture Variant (Gen42)  --->                           │ │  
  │ │        Target ABI (EABI)  --->                                             │ │  
  │ │        Floating point strategy (Soft float)  --->                          │ │  
  │ │                                                                            │ │  
  • Opções de criação
!>│ │        libraries (static only)  --->                                       │ │  
  │ │    ($(CONFIG_DIR)/local.mk) location of a package override file            │ │  
  │ │    ()  global patch directories                                            │ │  
  │ │        Advanced  --->                                                      │ │  
  │ └────────────────────────────────────────────────────────────────────────────┘ 
  • Toolchain
  │ ┌────────────────────────────────────────────────────────────────────────────┐ │  
  │ │        Toolchain type (Buildroot toolchain)  --->                          │ │  
  │ │    (buildroot) custom toolchain vendor name                                │ │  
  │ │        *** Kernel Header Options ***                                       │ │  
!>│ │        Kernel Headers (Manually specified Linux version)  --->             │ │  
!>│ │    (2.6.99) linux version                                                  │ │  
!>│ │        Custom kernel headers series (2.6.x)  --->                          │ │  
  │ │        C library (uClibc)  --->                                            │ │  
  │ │        *** uClibc Options ***                                              │ │  
!>│ │        uClibc C library Version (uClibc 0.9.33.x)  --->                    │ │  

Em seguida, crie o conjunto de ferramentas usando make toolchain e, em seguida, qual ferramenta você precisa, por exemplo, make nc .

    
por 16.10.2015 / 11:12

Tags