<サイト死活監視>curlコマンドでWebサイトの死活チェックをしてみる
はじめに
ネットで調べ物をしていると、応答が無いWebサイトに行きつきました。
自宅環境かサイト側、どちらの問題か気になったので、サイトの死活確認方法を調べてみると「curl」というコマンドがWindowsに標準装備されているとの事。
ということで、curlコマンドで色々試したので結果をまとめてみました。
curlの気軽さ
仕事でWebアプリケーションの開発に携わっていると、忘れた頃に繋がらない状況が発生して頭を抱える事があります。
そんな時に、一次調査としてcurlコマンドのお手軽さは重宝すると思います。
制限が緩い自宅環境なら監視ツールや監視用サイトに突っ込めば解析できますが、テスト環境や制限がきつい客先環境なんかだとcurlの手軽さが活きそうです。
curl実験で使うもの
>今回使用するcurlのバージョン
C:\Users\USER>curl --version
curl 7.83.1 (Windows) libcurl/7.83.1 Schannel
Release-Date: 2022-05-13
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS HSTS IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI UnixSockets
>アクセス不可なサイト(2022/08/07時点 ※2022/08/08復旧されました)
※ブラウザアクセス時の画面
>アクセス可能なサイト(対比用、2022/08/07時点)
curlの基本的な使い方
curl <オプション> <確認対象のURL>
オプション無し
応答が無い場合はTime outのエラーメッセージ、レスがある場合はHTTPレスポンスBodyが表示されました。
タイムアウトしているという事は、Webサイト側の問題のようです。(サーバが落ちてる?)
>対アクセス不可サイト
C:\Users\USER>curl https://pricia.co.jp
curl: (28) Failed to connect to pricia.co.jp port 443 after 21062 ms: Timed out
>対アクセス可能サイト
C:\Users\USER>curl https://www.yorontou.info
<!DOCTYPE html>
<html lang="ja" itemscope itemtype="http://schema.org/Webpage">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
...以下省略...
他にも色々試してみます
ちなみにアクセス不可サイトはどんなオプションを指定しても同様のメッセージだったので、以降は基本アクセス可能なサイトを使用します
HTTPヘッダを取得
-I
もしくは
-i
をオプションに指定します
(-I はヘッダのみ、-iはヘッダ + Bodyを表示)
> -I を指定した場合
C:\Users\USER>curl -I https://www.yorontou.info
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 07 Aug 2022 16:49:07 GMT
Content-Type: text/html
Content-Length: 36470
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Thu, 04 Aug 2022 08:32:58 GMT
Cache-Control: max-age=86400, public
Expires: Sun, 07 Aug 2022 16:47:07 GMT
Vary: Accept-Encoding
Accept-Ranges: bytes
>-i を指定した場合
C:\Users\USER>curl -i https://www.yorontou.info
HTTP/1.1 200 OK
Server: nginx
...ヘッダ情報...
<!DOCTYPE html>
<html lang="ja" itemscope itemtype="http://schema.org/Webpage">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
...Body情報...
レスポンス以外の情報を非表示にする
FTPなどデータ転送する場合は、処理状況も表示するようで、処理状況などのレスポンス以外の情報を非表示にできます。
そのためには、-s をオプションに設定します。
curl -s https://www.yorontou.info
※使用URLはファイル転送が無いので、結果はオプション無し実行と同じ表示
但し、-s の場合Time outなどエラー情報も表示されなくなります。
仮にエラーを表示したい場合は、大文字の -S もオプションに設定します。
curl -sS https://www.yorontou.info
※s と S は順不同
リクエストヘッダの指定
-H オプションを使用して、ヘッダ情報を入力する。
例(Content-Typeを指定):
curl -H "Content-Type: application/json" https://www.yorontou.info
なんでも屋の -w
-w オプションは、後ろに形式を指定する事で、実行結果の表示末尾に様々な形式での表示を追加する事ができます。
形式は、 -w "%{指定形式}" です
>HTTPステータスを表示
"%{http_code}" を使用します
C:\Users\USER>curl -w "%{http_code}" https://www.yorontou.info
<!DOCTYPE html>
<html lang="ja" itemscope itemtype="http://schema.org/Webpage">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
.....(Body情報).....</ br>
200
※もはやステータスだけで充分、という場合はこちら
C:\Users\USER>curl -s -I -o nul -w "%{http_code}" https://www.yorontou.info
200
>処理全体に要した時間を表示する
"%{time_total}" を使用します
C:\Users\USER>curl -s -I -o nul -w "%{time_total}" https://www.yorontou.info
0.113231
最後に
今回試してみたcurlコマンド、冒頭に述べたように手軽にちょっと調べてみるというノリだと有用だと思います。
ただし、ヘッダやPOSTメソッドで何か情報を独自に乗せたり、ログイン情報を乗せたりする場合は工夫が必要そうなので、そういう場合は時間をかけてツールとか使う方が吉かと思います。
(いずれもcurlで出来ない事は無いですが、工夫やコマンド作成が大変そう)
<blender>スナップを駆使して物体同士をピッタリくっつける<はじめてのパンダ作成>
3DCGで何か作れるようになってみたい!と思い立ち、とにかく色々ものつくりを経験してみます。
・使用ソフト:blender 3.2
・ソフト導入、セットアップ、基本的な操作感はこちらの書籍でふんわりと理解
やってみる
・こちらのサイトを元に、パンダらしきものを作成
ベースになるオブジェクト同士を重ねる際は、スナップを駆使してペタペタ
>到底パンダに見えない立方体同士をくっつけたい
>スナップする要素の種類を「辺」に設定、磁石アイコンをON
>オブジェクトモードで動かす側を選択、吸着面の辺辺りにカーソルを置き「G」押下
(横から見るとやりやすい)
>後はオブジェクト複製(Shift+D)、複製後のキー操作(Xを押下するとX軸に平行移動)を駆使してパンダベースを作成
色塗りは恙なく、ワールド背景の設定に迷ったのでメモ
>プロパティタブ⇒ワールドプロパティ⇒背景⇒背景色を設定
カメラ位置とライトの設定については、アレコレやっていたらいつの間にかうまくいったので、今後の課題。
そんなこんなで出来上がったパンダがこちらです。
誰がどう見てもパンダです。
という事で初めての3DCG作成でした
<初投稿>ごあいさつ
はじめまして、よーすいと申します。
IT系企業に勤めているサラリーマンをしております。
自分の身に着けた事、学んだ事を残しておきたいなと思い、ブログを始めてみました。
なぜブログを始めるに至ったかを軸に、簡単に自己紹介をできれば。
きっかけ
日々慌ただしく働いていたのですが、少し身体を壊して数カ月お休みを頂戴しました。
ダラダラしている中で、ふと「経験はそれなりに積んできたけど、特定分野の知識が全くねぇ!」と危機感を覚えました。
取り合えずその場で思いついた興味ある分野を思いつくまま勉強してみようと思い、独学で眠気と闘いながら勉強している日々です。(長期休み万歳)
何故ブログを?
教本や動画、他ブログ様の記事を見て勉強する中で、気になった事深堀りした事を備忘録を残す場所が欲しいなと思い、本ブログを始めてみました。
誰かのお役に立てればこれ幸いですが、第一義的には自分が後から見返す用と考えています。
目標
勉強した物が何に役立つか分かりませんが、変態エンジニアと呼ばれるくらいには成長できたらなと思います。
あとはアフィでウマウマできたらいいな
何ができるの?何をしたいの?
>経験したことある
・Java(メインスキル)
・Salesforce(仕事で必要だったので、ノリと度胸で)
・Jenkins(ノリとry)
・AIX(ノリry)
>勉強してる
・python(なんか流行ってそうだから)
・ネットワーク(なんか面白そうだから)
・3DCG(「メタバース」が流行りそう⇒3DCG作れたら面白そうじゃない?)
まずは投稿を継続する事が第一関門だと思いますが、今後よろしくお願いします。