How to send a Head Http request from command line


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How to send a Head Http request from command line
# 1  
Old 04-02-2008
How to send a Head Http request from command line

Ok. I'm testing a new program component that is supposed to speed up our pipeline on the server. What it does is take in HEAD requests and shuffle them off to a different pipeline that is specially designed to handle HEAD requests quickly. The functionality works but now comes the question: how much does it speed things up? Or does it speed things up at all?

To originally test this I SSHed onto the server I wanted to test and telneted from there back to the box itself. This let me verify that the component handled the request correctly. I sent the telnet from the server itself to eliminate the http travel time as much as possible.

Now I need to time how long it takes for a request to work through the pipeline. I've been trying to

time telnet myserver

but entering in user information like the host and body information makes the time erratic

I.E.
HEAD /csmonitor/web/guest/world HTTP/1.1
host: preprod.dev.csmonitor.com


So I'm trying to find something I can script to give me a more accurate idea of the time.
The Expect program requires TLC which we don't really want to install so can anyone recommend a command line argument I can use to send Head requests? One I can script so I can use the time command?

Any help would be great. Thanks
# 2  
Old 04-02-2008
If you don't mind installing a Perl module Net::HTTP, you can do that very easily. The write_request() does not return until a response can be received.

Code:
$ time perl -MNet::HTTP -e '$h = Net::HTTP->new(Host => "www.sun.com"); $h->write_request(HEAD => "/")'

real    0m2.746s
user    0m0.072s
sys     0m0.012s

The corresponding packet dump to show a HEAD request was actually sent:

Code:
[root@bernardchan ~]# tcpdump -s 0 -A -i eth0 tcp and port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
10:15:30.925197 IP bernardchan.41865 > 72.5.124.61.http: S 2605374828:2605374828(0) win 5840 <mss 1460,sackOK,timestamp 482811 0,nop,wscale 2>
E..<..@.@.*|..
.H.|=...P.J.l........&..........
..].........
10:15:31.120470 IP 72.5.124.61.http > bernardchan.41865: S 3988518783:3988518783(0) ack 2605374829 win 33304 <nop,nop,timestamp 1576677510 482811,mss 1460,nop,wscale 0,nop,nop,sackOK>
E..@.=@.1...H.|=..
..P.......J.m....5......
].0...].............
10:15:31.120547 IP bernardchan.41865 > 72.5.124.61.http: . ack 1 win 1460 <nop,nop,timestamp 482860 1576677510>
E..4..@.@.*...
.H.|=...P.J.m...............
..^,].0.
10:15:31.121101 IP bernardchan.41865 > 72.5.124.61.http: P 1:58(57) ack 1 win 1460 <nop,nop,timestamp 482860 1576677510>
E..m..@.@.*I..
.H.|=...P.J.m...............
..^,].0.HEAD / HTTP/1.1
Connection: close
Host: www.sun.com


10:15:31.121423 IP bernardchan.41865 > 72.5.124.61.http: F 58:58(0) ack 1 win 1460 <nop,nop,timestamp 482860 1576677510>
E..4..@.@.*...
.H.|=...P.J.................
..^,].0.
10:15:31.315358 IP 72.5.124.61.http > bernardchan.41865: . ack 58 win 33304 <nop,nop,timestamp 1576677530 482860>
E..4.>@.1...H.|=..
..P.......J......v,.....
].0...^,
10:15:31.315474 IP 72.5.124.61.http > bernardchan.41865: . ack 59 win 33304 <nop,nop,timestamp 1576677530 482860>
E..4.?@.1...H.|=..
..P.......J......v+.....
].0...^,
10:15:31.345593 IP 72.5.124.61.http > bernardchan.41865: F 517:517(0) ack 59 win 33304 <nop,nop,timestamp 1576677533 482860>
E..4.A@.1...H.|=..
..P.......J......t#.....
].0...^,
10:15:31.345644 IP bernardchan.41865 > 72.5.124.61.http: R 2605374887:2605374887(0) win 0
E..(..@.@.....
.H.|=...P.J......P....l..
10:15:31.348082 IP 72.5.124.61.http > bernardchan.41865: P 1:517(516) ack 59 win 33304 <nop,nop,timestamp 1576677533 482860>
E..8.@@.1...H.|=..
..P.......J.............
].0...^,HTTP/1.1 200 OK
Server: Sun-Java-System-Web-Server/6.1
Date: Thu, 03 Apr 2008 02:15:32 GMT
Content-type: text/html;charset=UTF-8
P3p: policyref="http://www.sun.com/p3p/Sun_P3P_Policy.xml", CP="CAO DSP COR CUR ADMa DEVa TAIa PSAa PSDa CONi TELi OUR  SAMi PUBi IND PHY ONL PUR COM NAV INT DEM CNT STA POL PRE GOV"
X-powered-by: Servlet/2.4,JSP/2.0
Connection: close
Set-cookie: Starload=star-fep5; Path=/
Set-cookie: JSESSIONID=12112cc14aabcdfffffffffe2641a9e183505; Path=/
Set-cookie: JROUTE=Pe4Y; Path=/


10:15:31.348114 IP bernardchan.41865 > 72.5.124.61.http: R 2605374887:2605374887(0) win 0
E..(..@.@.....
.H.|=...P.J......P....l..

# 3  
Old 04-03-2008
Thanks. That should work but I'll have to wait for the system guys to actually install something whether its perl net or expect and TCL. I'm not allowed to do it myself. Can anyone think of a more direct way?
Thanks for the advice
# 4  
Old 04-04-2008
Your system does not even have Perl? Otherwise, it should still be an easy one.

The Net::HTTP module is not compiled so does not need access to any C compiler. It does not even need to be installed as root either. Just extract the modules in the current directory and you ought to be ready to go.

http://search.cpan.org/~gaas/libwww-perl-5.808/

Put everything in the "lib/" in the tarball in the CWD.

Given the plaintext nature of HTTP, it is certainly possible to do it with primitive socket code but unless you are a programmer that would mostly be an overkill.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Homework & Coursework Questions

How to display certain line of file only using head or tail in 1 command?

First month learning about the Linux terminal and it has been a challenge yet fun so far. We're learning by using a gameshell. I'm trying to display a certain line ( only allowed 1 command ) from a file only using the head or tail. I'm pretty about this answer: head -23 history.txt | tail -1... (1 Reply)
Discussion started by: forzatekk
1 Replies

2. Shell Programming and Scripting

http request

I am running a website but I still have problems with the "service temporarily unavailable error". I want to make a simple check if the website is up and running. Does anybody has an idea how to do it? (the site is password protected, so you have to add a user and pwd before logging in). ... (2 Replies)
Discussion started by: jurgen
2 Replies

3. Programming

C++ http GET request using sockets

Hello I am trying to communicate with a server that is ready to accept HTTP GET requests and send back data per the request. However, I have very little experience in socket programming and I don't really know how to debug this. Googling on the web hasn't yielded much, except people saying I... (2 Replies)
Discussion started by: flagman5
2 Replies

4. UNIX for Advanced & Expert Users

Issue in Curl to send http POST request with attachment/multipart

Hi, I am using curl to hit a url using http in solaris 10 using commandline, I want to transfer an attachment(using multipart curl -F) also as a part of the request. If anyone has used kindly help me with the syntax. I am using below command: Code: /usr/local/bin/curl -v... (1 Reply)
Discussion started by: manishmaha
1 Replies

5. UNIX for Dummies Questions & Answers

cant make a http get request using wget

Hi all, Im trying to make an http get request to a web service from a linux machine like below and i get ERROR 500 wget http://10.1.21.236:8585/pns.asmx/Sen...&msgBody=werty 25018 $ --19:06:32-- http://10.1.21.236:8585/pns.asmx/Sen...erName=serverA Connecting to 10.1.21.236:8585...... (1 Reply)
Discussion started by: elthox
1 Replies

6. Shell Programming and Scripting

How to send XML data using HTTP Post Request

How to hit HTTP Post Request along with sending XML data to a Remote server through command line utility like wget (or anything else). (0 Replies)
Discussion started by: sandeep reddy
0 Replies

7. UNIX for Dummies Questions & Answers

HTTP request

Can anybody tell about http request processing in shell script..? (3 Replies)
Discussion started by: noufal
3 Replies

8. UNIX for Dummies Questions & Answers

http request forward

Hi, Maybe it's a stupid question, anyway here goes.. I have an Apache web server on Solaris box, let's say A, with a public ip and a web application on a Linux box, uhmmm B, on a private lan with a private ip. I want the people from outside to connect to the app, but its inside the lan,... (4 Replies)
Discussion started by: piltrafa
4 Replies

9. Programming

http HEAD reuest

I have written a c socket programe which can send the http GET request.But it dont work for HEAD reuest.can anyone help me.I am connected to internet via a proxy and the port/ip in the programe are proxies ones -------------------------------------------------- #include <stdlib.h> #include... (3 Replies)
Discussion started by: chamaraHe
3 Replies

10. Shell Programming and Scripting

Http request in Linux

Hi, i need a guide how to write a script which i can do a http request. Let say the request look like below; http://www.test.com?txid=1&type=service&server=linux I have a list of "txid" (in *.txt) and need to run all "txid" acordingly. So that mean, every transaction i have to refer "txid"... (7 Replies)
Discussion started by: malaysoul
7 Replies
Login or Register to Ask a Question