LoginSignup
5
11

More than 5 years have passed since last update.

cURLで困った時はこうする!?

Last updated at Posted at 2017-11-29

汎用クライアントのcURLについてのチートシートのようなものです
覚え書き&使用例なので、詳細は本家のTips( https://curl.haxx.se/docs/ )を読むことをお勧めします。

  • 使えるプロトコル
DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB,
 SMBS, SMTP, SMTPS, Telnet and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading,
 HTTP form based upload, proxies, HTTP/2, cookies, user+password 
 authentication (Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos)

cURLにproxyを設定

コマンドラインで設定する

curl -U (ユーザ名):(パスワード) -x proxy.host.com:(ポート) -L https://www.google.com

設定ファイルで設定する

vi ~/.curlrc
※全ユーザの場合は/etc/curlrc

proxy-user = "(ユーザ名):(パスワード)"
proxy = "http://proxy.host.com:(ポート)"

cURLでFTP(FTPにコマンドを渡すより楽)

Download

curl -u <user>:<password> ftp://<host>/<path to file>

Upload

curl -T <file> -u <user>:<password> ftp://<host>//<dir>

list

curl -u <user>:<password> ftp://<host>/<path to directory>

cURLでHTTP[s]

Download

#単一ファイル
curl -O http://www.example.com/index.html

#連番
curl -O http://www.example.com/data[001-100].txt

Upload(PUT):WebDAVなんかの場合

curl -X PUT --user myuser:mypasswd http://www.upload.com/tofile -F "file=@/path/to/file.ext;type=image/jpg"

Upload(POST):アップロードフォームにポストする場合

curl -F "form_input_id=1" -F "form_file_comment=This is an image file" -F "image=@/local_path/filename.jpg" localhost/uploader.php

POST:URLエンコードしながらフォームにポストする場合

curl --data-urlencode "input_text=a&b" --data-urlencode "input_jp_text=あ" http://example.org/test.cgi

SAMBAやWindows共有サーバ (smb/cifs) (cURL 7.33 以上)

Download

curl -u "domain\username:passwd" smb://サーバ名/パス/file.txt

Upload

curl -T アップするファイル名 -u "domain\username:passwd" smb://サーバ名/パス/

STDIN

cat "ファイル名" | curl -T - -u "domain\username:passwd" smb://サーバ名/パス/file.txt

SMTP(s) (Mail Send)

curl smtp://example.com --mail-from 'from@example.com' --mail-rcpt 'to@example.com' -u 'username:password'  -T \
"From: 'xxxxx'
To: 'xxxxx'
Subject: I am cURL

NoHTTP(Not Only HTTP)
"

もしくは、

cat <<EOF | curl -v --url 'smtps://smtp.gmail.com:465' --mail-from 'from@example.com' --mail-rcpt 'to@example.com' --user 'username:password' -T -
From: 'xxxxx'
To: 'xxxxx'
Subject:  I am cURL

NoHTTP(Not Only HTTP)
EOF

ファイル(email-contents.txt)を本文にして送る場合

curl --connect-timeout 15 -v --insecure 'smtp://smtp.example.com:25' -u 'username:password' --mail-from 'from@example.com' --mail-rcpt 'to@example.com' -T email-contents.txt --ssl

IMAP(s) (Mail Receive)

メールボックス確認

curl -u 'username:password' --url 'imaps://imap.gmail.com:993' -X 'EXAMINE INBOX'

一覧取得

curl -u 'username:password' --url 'imaps://imap.gmail.com:993/INBOX;'

未読/既読一覧取得

curl -u 'username:password' --url 'imaps://imap.gmail.com:993/INBOX' -X 'SEARCH UNSEEN'
curl -u 'username:password' --url 'imaps://imap.gmail.com:993/INBOX' -X 'SEARCH SEEN'

メールを読む

curl -u 'username:password' --url 'imaps://imap.gmail.com:993/INBOX;UID=(読みたいメールのUID);SECTION=TEXT' | nkf
※;SECTION=TEXTを外すとヘッダー込みのデータが、;SECTION=HEADERにするとヘッダーのみのデータを取得出来ます。

もしくは
curl -u 'username:password' --url 'imaps://imap.gmail.com:993/INBOX' -X 'FETCH (読みたいメールのUID) BODY[TEXT]' | nkf

※添付ファイルを取りだす場合、BODYからマルチパートを取りだす

削除フラグ

curl -u 'username:password' --url 'imaps://imap.gmail.com:993/INBOX' -X "STORE (メールのUID) +Flags \Deleted"

未読化(-Flags \Seen)/既読化(+Flags \Seen)

curl -u 'username:password' --url 'imaps://imap.gmail.com:993/INBOX' -X "STORE (メールのUID) -Flags \Seen"

curl -u 'username:password' --url 'imaps://imap.gmail.com:993/INBOX' -X "STORE (メールのUID) +Flags \Seen"

個人的に使うのがこのくらいだったので、他に使う機会が出たら随時追加していきます。

5
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
11