汎用クライアントの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"
個人的に使うのがこのくらいだったので、他に使う機会が出たら随時追加していきます。