컬을 대화형으로 사용하는 방법이 있나요? 아니면 대화형 컬/wget 쉘이 있나요?

컬을 대화형으로 사용하는 방법이 있나요? 아니면 대화형 컬/wget 쉘이 있나요?

다음과 같은 것을 상상해보세요:

$ curlsh http://www.example.org
> GET /foo/bar/bam
...output here...
> POST /thing/pool ...
... result here.... 

이 작업을 수행할 수 있는 도구가 있나요?

답변1

많은 Linux/Unix 시스템에서는 경로가 실제로 전체 URL이어야 하지만 의사 코드는 모든 셸에서만 실행됩니다.

예를 들어 Debian 기반 시스템에서 이 패키지는 libwww-perllwp-request 및 lwp-request라는 lwp-request에 대한 세 개의 기호 링크를 /usr/bin/GET설치 /usr/bin/HEAD합니다 /usr/bin/POST. 기능은 여러분이 기대하는 바로 그것입니다. OpenSuse 패키지의 최신 버전에는 심볼릭 링크(버그일 수 있음)가 생략되어 있으므로 직접 생성하거나 직접 사용해야 perl-libwww-perl합니다 . lwp-request일반적으로 말하자면, 수년 동안 유닉스 시스템에서 GET, HEAD 및 POST 실행 파일을 사용할 수 있다고 상당히 안전하게 가정할 수 있었습니다.

물론 이러한 모든 작업에도 사용할 수 있으므로 curlbash와 같은 명령줄 셸이 대화형이 아닌 것처럼 느끼는 이유를 이해하지 못할 수도 있습니다.

답변2

답변해 주셔서 감사합니다.

구글링 끝에 찾아낸나머지, 이는 쉘 스크립트 래퍼입니다.곱슬도구. 이것이 바로 제가 원하는 것입니다. 여기에는 155줄의 쉘 스크립트가 있으며 이를 실행하면 GET, PUT, POST, DELETE 및 OPTIONS에 대한 기능이 표시됩니다. 이 함수는 내 경로에서 찾은 컬 프로그램을 둘러싼 래퍼일 뿐입니다.

MacOSX bash에서 작동하는 방법은 다음과 같습니다.

$ . resty

$ resty https://api.example.org
https://api.myhost.com*

$ GET /v1/o/orgname -u myusername:password
{
  "createdAt" : 1347007133508,
  "createdBy" : "admin",
  "displayName" : "orgname",
  "environments" : [ "test", "prod" ],
  "lastModifiedAt" : 1347007133508,
  "lastModifiedBy" : "admin",
  "name" : "orgname",
  "properties" : {
    "propertyList" : [ ... ]
  },
}
$

첫 번째 줄은 현재 셸의 명령만 실행합니다.

"resty" 명령의 다음 줄은 URL 기본 주소를 설정합니다. 그 이후에는 GET, PUT, POST...에 대한 모든 호출이 암시적으로 이 베이스를 참조합니다. 예쁜 JSON을 내보내는 예를 보여줍니다. 서버가 축소된 JSON을 내보내는 경우 출력을 파이핑하여 외부 스크립트를 사용하여 인쇄할 수 있다고 생각합니다.

호스트 기반 기본 설정이 지원됩니다. 대상 호스트가 api.example.org라고 가정합니다. ~/.resty/api.example.org라는 파일을 생성하고 해당 이름으로 호스트에 수행되는 각 컬 호출에 전달되어야 하는 매개변수를 지정하는 행을 거기에 삽입하십시오. 각 http 동사에는 자체 줄이 있습니다. 따라서 파일에 다음을 삽입하십시오.

GET -u myusername:mypassword --write-out "\nStatus = %{http_code}\n"

...api.example.org가 기본 호스트 이름일 때 GET 작업을 수행할 때마다 컬 명령은 여기에 표시된 -u--write-out인수를 암시적으로 사용한다는 의미입니다. (-u는 기본 인증을 의미합니다).

또 다른 예로, XML이 항상 요청되도록 파일에 Accept 헤더를 지정할 수 있습니다.

GET --header "Accept: application/xml"

이 기본 설정 파일은 모든 컬 명령줄 인수를 지원합니다. 호스트+동사 튜플에 대한 모든 컬 매개변수는 기본 설정 파일에서 한 줄에 있어야 합니다.

편리한.

답변3

FTP:

$ lftp http://repo.xplico.org/pool/
cd ok, cwd=/pool
lftp repo.xplico.org:/pool> ls
drwxr-xr-x  --  /
drwxr-xr-x            -  2012-02-13 09:48  main
lftp repo.xplico.org:/pool> cd main
lftp repo.xplico.org:/pool/main> ls
drwxr-xr-x  --  ..
drwxr-xr-x            -  2012-02-13 09:48  x

디렉토리 목록은 디렉토리 색인을 보내는 사이트에만 적용됩니다. 그러나 그렇지 않은 경우에도 get명령을 사용하여 개별 파일을 가져올 수 있습니다.

답변4

예, "--config" 옵션을 사용할 수 있습니다:

컬이 stdin에서 파일을 읽도록 하려면 파일 이름을 -K로 지정하고 --config를 '-'로 지정합니다.

예:

$ curl -K-
url https://github.com/blog
remote-name
<Ctrl + D>

관련 정보