crontab 通常出力だけ/dev/nullしたいのに上手くいかない問題を倒そうとしている

調査途中報告、以下で出てくる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)

長くなってきたしお腹空いたから今日はこの辺でバイちゃ、まだまだ続きそう…

crontab /dev/null/できない、続き

IPv4とv6のDDNSログイン通知の両方やってまうとわかりにくいからIPv6だけに> /dev/nullつけたり1> /dev/nullつけたり半角スペース位置ズラしたり外したりで色々試す…

何度か手を変え品を変え試行錯誤してたら>/dev/null 2>&1つけた時はメール通知が来ない事がわかった、上に張り付けたのはmailコマンドからの一覧、下に張り付けたのは昨日追加したcronのlogからの一覧、これでとりあえず一歩前進と言っていいんか?いや、よくないよな。

>/dev/null 2>&1してしもたら標準出力と共に標準エラーも捨てられてしまうもんな、でもこんだけ難解やったらみんながこう>/dev/null 2>&1したりMAILTO=””にして通知黙らせたくなる気持ちわかるわ、大量メールや大量ログに無対策で通知放置しとくとログやメールだけでサーバ容量ガリガリ減らされ続けるしな、かと言ってPostfix入れんかったらMTAみつからんエラー吐き続けるしな、多段で罠組まれとる。

crontabに限らずリダイレクトやファイルディスクリプタ、マージはこの際ちゃんと理解するようにしようか、使えたら便利この上ないし、ちゃんと理解してなかったら今回のような苦痛を再び味わいそうやし、勉強や。

/dev/nullできないんですけど?

前回の続き。

メール減らそうと> /dev/nullを文末に付けてみたけど文末に/dev/nullが付いたメールが届くだけだった、なんで?

ログを見ても文末に> /dev/nullが付いてるだけ、こっちはそうなると思ってたけどメールの方も変化ないとは思ってなかった、なんでですかね?

crontabはよく躓く、cronのHow-to的なサイト見ながらやってもみんな旧バージョンやったりして情報が古いし新しい情報が仕入れにくい、OS違いも参考にならないランキング第2位くらいに入る、CentOSが結構目につくかな?crontabは言う事聞かないからと使わずにcron.d使ってたりする、マニュアル読んでもイマイチわからん、なぜなのか?めちゃくちゃ腑に落ちん、徹底抗戦する構えである。

cronの通知メールを減らしたい

毎回毎回、ターミナル開くとYou have new mail.の通知がくる。ちゃんとcronが自動でmydnsにログインして更新して報告しとるな、関心関心。

って思う時期は確かにあったけどいい加減もう頻繁な通知は要らない、そんな時期。

cronの仕事してますアピールはもういいんですよ、実際きっちり仕事してるの知ってますから、なんか仕事失敗したときに報告してくれるようにしたい!

3分とか5分置きにメールよこさなくていいんよ?

調べたらメール要らんならMAILTO””にしたらいいとか 1> /dev/null文末につけろとかの方法教えてくれるけど、失敗時の報告メールは欲しいしMAILTO””は駄目なんよ。/dev/null 2>&1が最悪で、なんでも全部捨ててまうやろ?要らないなにも捨ててしまおうって言って全部捨て去ったらダメなんよ、問題発生時に手がかりゼロやん、ゼロがいいゼロになろうはB’zだけでおk。

一番いい感じなんは常にログは残しててエラー時だけメールくれたらよい。

でもここで問題があって、cronさんはデフォルト設定ではログが出ない、なぜか常にメール。とりあえずログを吐かせるために/etc/rsyslog.d/50-default.confを開く。

#cron.* /var/log/cron.log

この文をコメントアウト(#消す)して

sudo systemctl restart rsyslog.service

これでログ吐き始める、あとはなんかの失敗時のみメール送信するようにしたらいいかな、ひとまずはログ出せるようにして続きは次回…

ようやくFTP使えるように設定した

定番vsftpdでLet’s EncryptのSSL証明書使いまわしして設定した、FTPS。

クライアントソフトはなんでも良かったけどひとまず使いやすそうなFileZillaを選択、外出先からのFTP接続は今のところないし今後必要になってもVPNで繋ぐ計画やからポートフォワーディングもしてないし、さらにufwでローカルエリアのみの接続に絞った。

ポートも攻撃対象になりがちな20、21から変更した、どこにポート変更したか知りたい?ヒントは君の誕生日さ、フフフ( *´艸`)キッモ。

CentOSではFTPのポート開閉を自動でやってくれるアプリ(どうやらモジュールみたい?ip_conntrack_ftp)があるみたいやったけどUbuntuでもあるんかな、LAN外にポート開いてないから大した問題ではないと思うけど興味はあるし忘れてなかったら調べる事にする。

あとずっとWordpressの新規投稿画面で固まったり躓いたりしてapache2をrestartせな処理進まないのが不便でしかなかったオブジェクトキャッシュ問題の元凶となっていたobject-cache.phpを無効化してみた、キャッシュどうこうするよかなんかサクサク動いている気すらしてくる…こうなってくると無駄になってると思われる設定全部初期化して一から組み直したいよね、交友関係リセット症候群な人たちの気持ちがなんとなくわかる。

オブジェクトキャッシュ無対策で稼働してた別のWordpress6.5では謎のcacheディレクトリ追加されてるし、肝心のセルフ対処してた方のWordpress6.5にはそんなディレクトリ増えてないし今回だけはノーガード戦法の勝ちかもしれん気もする、これはマルチサイト化せずに別々にWordpress稼働してたからわかった不思議現象、いやいやいや、君ね、リリースノート読みなさいや?という話かもしれんがそこは趣味のアマチュアエンジニアなので適当にやらせてほしいやで。

Apache2もしばらく使ってみたから次はNginxもいれてみるとする、入れてみたい、Nginxでエンジンエックスって読むなんて誰が思うん?大阪では放出と書いてハナテンと読む地域があるけどそういう感じ?

いざ、リバースプロキシ。

テーマ自動更新されるとヘッダーの追記リセットされるからサムネ無視されとるやん、OGP対策しなおさんとあかんやん

OGP対策コードコピペったゾ?これでサムネ反映されるか?テスト。

もう一つ追記しとったのんあったと思うんやけどなんやっけか?

…あー思い出した、アナリティクスのタグか。

んでコレObject-Cache.phpがらみでスクレイピングキーのエラー出るアレか、作業は簡単やけどダルさ倍増感なんなんやろか…

とりまテーマの更新は手動にしておくとする。

指輪的な時計が欲しい

スマートリングとかあるじゃない?時間がわかるだけのスマートリングがほしいんやけどそういうのってイメージ通りのが無いんよね。

そういうの作ろうかと思っとるんやけどDAISOのBluePlanetの腕時計が入手出来たから一旦バンドを短くするだけの加工で指時計化してみるわよ。

どうかしら?

少し楽しんだら中身引きずり出して細切れにして指輪的に加工するわよやで。

SoftetherVPNは無理そうなのでstrongSwanを検討してみている

VPNなんてなくてもいいやんと思ってたのにちょっとやってみて全然出来ないからなんとか入れて使おうとムキになりつつある…

そもそもApache2のキャッシュが調整しきれてなくて定期的にrebootせなあかんのが面倒というだけで、この問題を解決するためにVPN入れるのは間違いなんよ、キャッシュ上手く処理できるように調整したらいい、または処理速度にそそられるNginxかLitespeedに変えてしまえばいい。

そもそも大した処理があるブログでもないんやしな、バカらしいと思。

SoftetherVPN全然上手くいかん

少しの期間遠方に行かなならんのでSSH出来ん、しゃーなしVPNでも組むかと思った末にSoftetherVPNをインストール。

443ポートがすでにApache2に占有されてる問題があって別のポート開くも上手くいかず…

まず、な?Android12でL2TP/IPSecできないってなんなん?ふざけてんのか?Android11まではできる、Android12にアップデートする前にAndroid11でL2TP/IPSecしてたら引き継ぐって馬鹿か?ほな無理やんけこのくそぼけド畜生が。こちとら夢のVPN接続に期待して胸躍らせててんぞ?少し離れた仲いい親戚特殊詐欺にあうように祈ったろか?

…まあええわ、糞が。

以前のスマホがAndroid9やしこれでなんとかするわシャクやけどな。んでJuiceSSHは一旦置いといてOpenVPN Connectを使わなならん、ダル…。

んでAndroid9がなんか無理でもOpneVPN Connectあるし、それやからL2TP/IPSec出来てあっさり行けんのかと思ったら一瞬それっぽい画面出してその後NGよ、お前らもたいがい糞やな。

UFWの設定か?とか思ったからみて5555とか別のポート開けても結局上手くいかんしポートフォワーディングか?とか思ったけど443のhttpsでイケるんがsoftetherのイカしてるところなんやからちゃうわな、常識的に考えて。Apache2のVartualHost使ってプロキシも入れてなんとかせならん?でも上手くいかないってポストもあったよ?プロミスキャスモードがどうこうとかも確かに当てはまるしどないしょ?いったんプロミスキャスtrueしてみる?とかいろいろ悩みつつ検索し続けた結果!

自宅のWiFiルータがPPTPパススルーしかない!L2TP/IPSec通らない!おいこの水牛ルータふぁっくやんけ!なんで一瞬イケそうな雰囲気の画面出してんや⁉

腹立つ!別の方法を考える必要がある。

いたずらにポート開放せなならんの嫌やけどMobileシェル、Moshか、Moshしかないか?

もうダルなってきたぞそもそもキャッシュ問題が微妙過ぎてApache2のリブートせなならんくなっとるんや、ブログのシステムだけ初期化したろか?それともApache2やめてNginxに変えたろか?

ぐおー腹立つんじゃー!ふて寝するわー!

メールサーバーPostfixを入れよう

Postfix入れるよ、ん?これはSASL(Simple Authentication and Security Layer)パッケージも入れなならんの?

ニーズに最も適したメール サーバー構成の種類を選択してください。

設定なし:
 現在の構成を変更しないように選択する必要があります。
インターネット・サイト:
 メールは SMTP を使用して直接送受信されます。
スマートホストを使用したインターネット:
 メールは SMTP を使用して直接受信するか、fetchmail などのユーティリティを実行して受信します。 送信メールはスマートホストを使用して送信されます。
衛星システム:
 すべてのメールは、配信用の「スマートホスト」と呼ばれる別のマシンに送信されます。
ローカルのみ:

たまに急に日本語喋るよね?しかも英語でも読めそうなやつばっかり。

「メール名」は、ドメイン名のない _ALL_ メール アドレスを「修飾」するために使用されるドメイン名です。 これには、<root> との間のメールが含まれます。
マシンに root@example.org からメールを送信させないでください。
root@example.org が指示した場合を除きます。
この名前は他のプログラムでも使用されます。 これは、単一の完全修飾ドメイン名 (FQDN) である必要があります。
したがって、ローカル ホスト上のメール アドレスが foo@example.org である場合、このオプションの正しい値は example.org になります。
システムメール名:

入力欄にはFQDNを読み取って既に入力されてたよ。なので、了解する、しかない。

この設定、server-world.infoさんではNo Configurationを選択、hs3.orgさんではInternet siteを選択してたので無設定との比較もできるしインターネットサイトを選択してみた、無設定から全部やるのはダルそうやし、ま好きな方選んでいいんちゃうか。

インストールできた。

postconfで全パラメータ確認できるけど見ただけで吐きそう、何行あるんすかね…