調査途中報告、以下で出てくるIPアドレスは念為適当に改変してある。
/bin/sh: 1: cannot create /var/log/cronmail.log: Permission denied
単純に文末に2>> /var/log/cronmail.logを追加しただけでは権限がないと怒られる、2はファイルディスクリプタで通常エラー出力、>>は追記やけどファイルがなければ作成して以後追記してくれる、/var/log/cronmail.logはデフォルトでは存在してないけど作成してくれるなら問題ないはず、やけど権限問題があるなら作って権限付与した方が楽か。
腑に落ちないのは通常エラー出力を指定やのにもういきなりログ出そうとしてるみたい?気づいてなかったけど実はもう何か失敗してるの?と思って
2>> /var/log/cronmail.logを
>> /var/log/cronmail.logに変えてみる。>>は1>>の1を省略した形、1はファイルディスクリプタで通常出力。
が、変化なし…どういう事?通常出力であり通常エラー出力でもあるって事?そんな事ある?ん?Permission deniedやからエラーだよって事?
ほな
sudo nano /var/log/cronmail.log
適当に#でも打って保存
sudo chmod 666 /var/log/cronmail.log
したら?
<html>
<head>
<title>Free Dynamic DNS (DDNS) for Home Server and VPS etc | MyDNS.JP</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<LINK href="./site.css" rel=stylesheet type=text/css>
</head>
<BODY BGCOLOR="#FFFFFF"
TEXT="#304040"
leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"
>
Login and IP address notify OK.<BR>
login_status = 1.<BR>
<BR>
<DT>MASTERID :</DT><DD>mydns数字ほにゃらら</DD>
<DT>REMOTE ADDRESS:</DT><DD>150.9.36.97</DD>
<DT>ACCESS DAYTIME:</DT><DD>2024/05/17 01:57:02 UTC</DD>
<DT>SERVER ADDRESS:</DT><DD>168.235.73.168</DD>
<BR>
</body>
</html>
これが/var/log/cronmail.logに追記された、これが標準出力か!なんか思ってたんと違うな、相変わらずメールは届くがメールの行数が減ってるのでこれの分やと思われる、まぁそれやと意味がないどころか1通のメールで済んでたヘッダー情報と出力が2か所に分かれる事になって参照の手間が増え、ログに必要な容量も増えるだけになるのでデメリットしか生んでないわな。
ではお次にcrontabのwget実行文末の
>> /var/log/cronmail.logを2>> /var/log/cronmail.logに変えてみるとする。
あれ?なんかおかしいな?
変更したあたりから以下がログに吐かれてるゾ?
--2024-05-17 11:21:01-- https://mydns数字ほにゃらら:*password*@ipv4.mydns.jp/login.html
ipv4.mydns.jp (ipv4.mydns.jp) をDNSに問いあわせています... 81.4.119.52, 168.235.86.193, 168.235.81.33
ipv4.mydns.jp (ipv4.mydns.jp)|81.4.119.52|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 401 Unauthorized
選択された認証形式: Basic realm="Enter MasterID and Password."
ipv4.mydns.jp:443 への接続を再利用します。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/html]
‘STDOUT’ に保存中
0K 100M=0s
2024-05-17 11:21:03 (100 MB/s) - stdout へ出力しました [613]
やっぱそうや、cat /var/log/cron.logでEDITのログある時間以降から変わってるわ。
なんやコレ、ファイルディスクリプタで2、つまり標準エラーをログに吐くようにしたらコイツが吐かれてるて事はコイツが標準エラー扱いなん?つまり1通のメールの中身で標準出力と標準エラー出力が同居してるって事?
まさか「長さ:特定できません [text/html]」がエラーの扱いとかされてる?そんなわけない?
それやったら1はnull捨て、2はメール通知なんて思い描いてるような処理できひんやん?え、コレどうしたらいいですかね?
とりあえず「長さ: 特定できません [text/html]」で検索したら「動的ページはリクエストを受けてから作る、http head要求の場合はコンテンツ要求無いから長さ不定!特定なんて無理!」との事、終わったやんけ…いや、まだあきらめない。
「長さ: 特定できません [text/html]」のエラーっぽいの探したら、多分http 411エラー Length Requiredなんちゃうか?ときたのでさらにその対策を探す、これはクライアントエラーやからクライアント(ここでのクライアントはMydns)に言ってねって出てきた、趣味の個人サイトの都合でクライアント様にアレコレ言うのは気が引けるのでコレはいよいよ最終手段や、シャイなワイにはグレーアウトした項目なので選択不可や。他ない?
おや?【4つの方法】「HTTP 411 Length Required」エラーを解決するには|Kinsta®にてcontent-lengthを指定する方法を発見、でもコレやったら指定と違ってるよエラーこないか?素人やから全然わからんけどなんかそんな予感…他ない?
content-lengthをヒントにGNU Wget 1.10 Manual: 2. 呼び出し (quruli.ivory.ne.jp)でwgetでcontent-lengthを無視する記述あり、これか?
–ignore-length
‘–ignore-length’
残念ながら,HTTPサーバ(より正確にはCGIプログラム)には,偽の Content-Length
ヘッダを送るものもあり,それではドキュメント全てが 回収されないので,Wgetがおかしくなります.Wgetが同じドキュメントを何度 も何度も回収し,そのたびに(通常でない)接続が同じバイト数で閉じている報 告を得る場合,この症状を見付けることが可能です.
このオプションを用いた場合,WgetはContent-Length
ヘッダを—まる で存在しないかのように—無視します.
GNU Wget 1.10 Manual: 2. 呼び出し (quruli.ivory.ne.jp)
長くなってきたしお腹空いたから今日はこの辺でバイちゃ、まだまだ続きそう…