Bayangkan sesuatu seperti ini:
$ curlsh http://www.example.org
> GET /foo/bar/bam
...output here...
> POST /thing/pool ...
... result here....
apakah ada alat yang memungkinkan saya melakukannya?
Pada banyak sistem Linux / Unix, pseudocode Anda hanya akan berfungsi di semua shell, meskipun path Anda harus benar-benar URL lengkap.
Misalnya, pada sistem berbasis Debian, paket libwww-perl
menginstal tiga symlink ke lwp-permintaan yang disebut /usr/bin/GET
, /usr/bin/HEAD
dan /usr/bin/POST
. Ini melakukan apa yang Anda harapkan. Versi terbaru dari perl-libwww-perl
paket OpenSuse menghilangkan symlink (yang mungkin merupakan bug), jadi Anda harus membuatnya sendiri atau menggunakannya lwp-request
secara langsung. Secara umum dan selama bertahun-tahun, sudah merupakan asumsi yang cukup aman bahwa GET, HEAD, dan POST executable tersedia pada sistem unixoid.
Tentu saja Anda juga dapat menggunakan curl
untuk semua tugas ini, jadi mungkin saya tidak mengerti mengapa Anda merasa bahwa shell baris perintah seperti bash tidak interaktif.
Terima kasih atas jawabannya.
Setelah googling sekitar, saya menemukan resty , yang merupakan pembungkus skrip shell di sekitar alat keriting . Ini benar-benar yang saya inginkan. Ini 155 baris skrip shell, dan ketika saya menjalankannya, saya mendapatkan fungsi untuk GET, PUT, POST, DELETE, dan OPTIONS. Fungsi-fungsi ini hanya pembungkus di sekitar program ikal yang ditemukan di jalur saya.
Ini berfungsi seperti ini di 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" : [ ... ]
},
}
$
Baris pertama di sana hanya menjalankan perintah di shell saat ini.
Baris berikutnya, perintah "resty", menetapkan basis URL. Setelah itu, setiap panggilan ke GET, PUT, POST ... secara implisit merujuk pangkalan itu. Saya menunjukkan contoh yang memancarkan JSON cantik. Saya pikir jika server Anda memancarkan JSON yang diperkecil, Anda dapat mencetaknya dengan skrip eksternal dengan mem-piping output.
Ada dukungan untuk preferensi berbasis host. Misalkan host target Anda adalah api.example.org. Ceate file bernama ~ / .resty / api.example.org, dan masukkan di sana, baris yang menentukan argumen yang harus diteruskan ke setiap panggilan curl ke host dengan nama itu. Setiap kata kerja http mendapatkan barisnya sendiri. Jadi, memasukkan konten ini ke file:
GET -u myusername:mypassword --write-out "\nStatus = %{http_code}\n"
... berarti bahwa setiap kali saya melakukan GET ketika api.example.org adalah nama host dasar, perintah curl akan secara implisit menggunakan -u
dan --write-out
args yang ditampilkan di sana. (-u untuk auth dasar).
Sebagai contoh lain, Anda bisa menentukan header Terima di file itu, sehingga Anda selalu meminta XML:
GET --header "Accept: application/xml"
Arg baris perintah ikal apa pun didukung dalam file preferensi itu. Semua argumen curl untuk host + kata kerja tuple harus melalui satu baris dalam file preferensi.
Berguna.
lftp:
$ 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
Daftar direktori hanya berfungsi untuk situs web yang mengirim indeks direktori. Tetapi meskipun tidak, Anda masih dapat menggunakan get
perintah untuk mendapatkan file individual.
get
perintah akan men-download filecat
akan menampilkan file ke layar. Untuk mendapatkan httppost
Anda dapat menggunakan sesuatu seperti:quote post post.php x=1&y=z
.Anda dapat menggunakan Netcat .
Berikut adalah contoh untuk mengambil beranda VLC
Sisa HTML adalah output ke konsol. Catatan: Anda harus mengetik Return dua kali setelahnya
HTTP/1.0
.sumber
Anda dapat menggunakan interaktif
shells
baik denganpython
atauperl
:Dalam Perl
Lihat
perldoc WWW::Mechanize::Shell
atau http://search.cpan.org/~corion/WWW-Mechanize-Shell-0.52/lib/WWW/Mechanize/Shell.pmDengan Python :
Lihat http://wwwsearch.sourceforge.net/mechanize/
sumber
Yap, Anda dapat menggunakan opsi "--config":
Contoh:
sumber
Saya cukup suka lynx untuk penelusuran interaktif di baris perintah. Ini lebih dari browser penuh sesak nafas (yang cocok dengan aplikasi ncurses) daripada alat HTML mentah, meskipun ..
Saya telah menguji perintah HTML mentah melalui SSL sebelumnya, yang saya gunakan
openssl
, tetapi ini hanya memungkinkan satu perintah pada suatu waktu ..Untuk info lebih lanjut tentang opsi s_client openssl,
man s_client
berisi detailnya.sumber