Overview
You can use the command-line curl tool over SSH at DreamHost to transfer data to and from servers — view or save a webpage's source, test a connection, and check response headers. This article explains what cURL is and provides common curl commands for your website.
Background
cURL is free software that allows you to transfer between servers. The cURL project offers two sub-projects:
- curl — This is the command line tool you can run on your local computer or your DreamHost server. It offers several command options for you to send and receive data. 'curl' uses 'libcurl'.
- libcurl — This is a library that supports many different protocols. It's very common for the PHP programming language to use this library. See the cURL manual for further details.
Prerequisites
This article assumes you have created a shell user and are able to log into your server via SSH.
How do I run curl commands?
The following sections provide common commands you can use with your website.
How do I view the installed curl version?
Run the following to display the version of curl your shell is using.
[server]$ curl --version
How do I view a webpage's source code?
This returns the source-coding of a specific page.
[server]$ curl https://example.com
How do I save a webpage's source to a new file?
To save source-code to a new file, use the -o flag. This uses the lowercase 'o' character. Make sure to change example.com-CODE to the new file you're saving to.
[server]$ curl -o example.com-CODE http://example.com
Save to a file of the same name
If you do not want to save to a new file name, you can save to a file that's the same as the page you're accessing. For example, if you're accessing example.com/index.html, this will create a new file titled index.html with the saved code. Use the -O flag with a capital 'O' character.
The syntax would be curl -O <website-url>
[server]$ curl -O https://example.com/index.html
How do I test a website connection?
Use the -v flag to view connection data, then the full code of the page you entered.
[server]$ curl -v https://wordpress.org/ * About to connect() to wordpress.org port 443 (#0) * Trying 66.155.40.250... connected * Connected to wordpress.org (66.155.40.250) port 443 (#0) * successfully set certificate verify locations:
The above shows a successful connection. If it failed, you'd see the failure in the response instead.
How do I check website headers?
Use the -I flag to check website headers.
[server]$ curl -I http://example.com/index.php HTTP/1.1 200 OK Date: Mon, 01 March 2024 20:55:09 GMT Server: Apache Last-Modified: Sun, 24 Sep 2023 22:45:30 GMT ETag: "2f3-5387d8a979b59" Accept-Ranges: bytes Content-Length: 755 Vary: Accept-Encoding Content-Type: text/html
If you want a specific header not shown, you must manually specify it using the -H flag. For example, run the following to check if gzip is enabled:
[server]$ curl -I -H 'Accept-Encoding: gzip,deflate' http://example.com/index.php HTTP/1.1 200 OK Date: Mon, 01 March 2024 20:55:09 GMT Server: Apache Last-Modified: Sun, 24 Sep 2023 22:45:30 GMT ETag: "2f3-5387d8a979b59" Accept-Ranges: bytes Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 428 Content-Type: text/html
If gzip is enabled, you'll see this line in the output:
Content-Encoding: gzip
Troubleshooting
What does a 'Moved Permanently' response mean?
It's possible that when you run curl on a website URL, you'll see a Moved Permanently response. For example:
[server]$ curl http://www.example.com <html> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="http://example.com">here</a>.</p> </body></html>
This usually just means the URL does (or doesn't) use the 'www' subdomain before it. Try again with (or without) www.
Otherwise, you can use the -L flag to redirect you automatically.
[server]$ curl -L http://www.example.com