Ubuntu Server 24.04 LTSリリース

リリースされたがまだ不安なのでアップデートしない、怖い。

きっとまだまだ不具合あるしな、一カ月くらいは様子見と言われてるけどビビッて半年は見守るぜ、んでアップデートよりクリーンインストールの方がいいやろしな、きっちりバックアップとって情報集めてからにするぴょん。

極度に目新しいもの好きというわけでもないし鯖なんて程よく枯れてる方がいいし。

クリーンインストールするなら前から言ってる現Apache2からのNginxかLitespeed試すのもいいやん、頃合い的に丁度よい、駄目なら元に戻せばよいだけや。

独自ドメインも今のんにこだわりもないので変えてもいいかもな、何かWordpressデータベースのURL書き換えで苦労しそうやけど…まぁよい、元に戻せばよい、元に戻せればよい、戻せるよね?

HTMLで遊ぶ

釣りのオモリ(錘)の号数ごとのグラムとかさ、PEラインの強度をナイロンラインにするとどのくらいとかさ、流石に覚えてられんから毎度気になるたびに検索するんやけど、自分のサイトにあればパッと出てくるやん?って思ってやってみた。

コレ系やっぱあると便利やな、余計な前置きやらも省いて無画像、テキストのみでの必要最低限やから検索するより確実に早い、表示も超軽高速。

何度も作ってるレシピとか、よく使うLinuxのコマンドとか?htmlのよく忘れるタグだとか、家庭菜園系の種まき定植時期の早見表とか?

あると便利なもんてたくさんあるしな、忘れんようにブログに書くようにはしてるけど検索効率悪いんよな、ネタ集まったらまとめなあかんのやな。

潮見エールなんかも毎度検索してるけどこの形式で必要なところだけのヤツ作れば良くない?なんてことを検討し始めている、引き続き注視していくことを検討する。

htmlでテーブルとか使うん超久々やん、楽しい。

ようやくcrontab問題に進展が

これでログにIDとパスワードが出てこなくなったゾ?やった?ね?

以下がcrontabが読み込んでるシェル、「ほにゃらら.sh」の全貌だ!

#!/bin/bash
#

user=ウフフ秘密
pass=秘密(*´艸`*)


# Mydns.jp IPv4
/usr/bin/wget --auth-no-challenge --http-user=$user --http-passwd=$pass --ignore-length -nv -O - 'https://ipv4.mydns.jp/login.html'

wait

# Mydns.jp IPv6
/usr/bin/wget --auth-no-challenge --http-user=$user --http-passwd=$pass --ignore-length -nv -O - 'https://ipv6.mydns.jp/login.html'

んで、以下がcrontabの中身だ。

*/7 * * * * ./ほにゃらら.sh >/dev/null 2>> /var/log/cronmail.log

/var/log/crontab.logは自分で作って権限付与る必要があった。これで標準出力がnullに消えてくれてエラーはcronmail.logに吐かれるためcronで来てたmailは届かなくなる。mailの標準出力と標準エラー出力の間みたいな文も吐かれるけどオプション付けまくって最少にしてある。

IDパスワード代入の影響か?失敗しましたの接続タイムアウトだけ気になるが、こればっかりはしゃーない、あちらサイドのサーバや通信環境の影響もあるんやろしな。

-nvつけたら凄くシンプルな出力になった

完璧ではないけどやってやったぜ?

-nv’‘–non-verbose

冗長でない出力です—完全に静かにするのではなく(そうするには‘-q’ を使用してください)冗長を停止するということで,エラーメッセージと基本的 な情報は,まだ出力されることを意味します.

GNU Wget 1.10 Manual: 2. 呼び出し (quruli.ivory.ne.jp)

以下が冗長と思われているらしい部分。

ipv6.mydns.jp (ipv6.mydns.jp) をDNSに問いあわせています... ipv4.mydns.jp (ipv4.mydns.jp) をDNSに問いあわせています... 2604:180:f3::4d5, 2604:180:f4::28b, 2001:278:1033:4::74:211, ...
ipv6.mydns.jp (ipv6.mydns.jp)|2604:180:f3::4d5|:443 に接続しています... 168.235.85.192, 81.4.101.244, 168.235.80.65, ...
ipv4.mydns.jp (ipv4.mydns.jp)|168.235.85.192|:443 に接続しています... 接続しました。
接続しました。
HTTP による接続要求を送信しました、応答を待っています... HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 無視しました [text/html]
‘STDOUT’ に保存中

     0K                                                        79.8M=0s

2024-05-19 13:54:04 (79.8 MB/s) - stdout へ出力しました [616]

200 OK
長さ: 無視しました [text/html]
‘STDOUT’ に保存中

     0K                                                        38.7M=0s

2024-05-19 13:54:05 (38.7 MB/s) - stdout へ出力しました [646]

この[616]やら[646]やらもなんか意味があるんやろな、知るべくタイミングが来たら知る事になるはず。

ただ、今まではログファイルでもログインパスワードが*password*と表示されてたのに-nv入れたら完全に平文になってモロ見えになってしまった、見られる事ないアルヨやけどあんま良くないなぁ。

ってか、ここまでcrontabの平打ちでやっといてアレやけど、よくあるシェルスクリプトでやってもこのあたりの出力は変わらんのかなってのも気になってきているな、それも試してみるかな…

–ignore-length入れたら長さ無視しだした

長さ:特定できません[text/html]から長さ:無視しました[text/html]になった

無視する割にエラー出力扱いなのは変わってない、意味なし。

あとなんかなんも知らんとつけてた-O -の意味が偶然わかって得した、得した?なんか今無駄な事してないか?とも思えてきたゾ?

-O file’‘–output-document=file

ドキュメントは適切なファイルに書かれず,全て一緒に連結されてfile に書き込まれます.fileとして‘’が使用されている場合,ドキュ メントは標準出力に書き込まれ,リンクの変換は利用不可能になります. (‘’という名前のファイルに出力するために‘./-’を使用して下さい.)

GNU Wget 1.10 Manual: 2. 呼び出し (quruli.ivory.ne.jp)

有無を言わさずBASIC認証入るように–auth-no-challengeも追加してみたら「HTTP による接続要求を送信しました、応答を待っています… 401 Unauthorized」のメッセージが出なくなった、ヨシ。

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でエンジンエックスって読むなんて誰が思うん?大阪では放出と書いてハナテンと読む地域があるけどそういう感じ?

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