Bashの改行文字

Bashの知らなかった機能。

stty -icrnlで、CRのNLへの置換を抑止しても、対話型Bashでは、EnterやCtrl-Mでコマンドが実行出来る。 cat -vにEnterやCtrl-Mを与えてみると、ちゃんと^Mと表示され、stty -icrnlが効いていることがわかる。

$ echo $'pwd\rls\r' | bash
bash: 行 1: $'pwd\rls\r': コマンドが見つかりません
$ echo $'pwd\rls\r' | bash -i
ちゃんとpwdとlsが実行される

じゃあ、改行文字がCRLFのファイルを実行する時に、bash -i ファイル名で良いのかというと駄目。

$ echo $'pwd\rls\r' > foo
$ bash -i foo
bash: $'pwd\rls\r': コマンドが見つかりません
$ bash -i < foo
これは上記と同じくちゃんと実行される

bash -i < ファイル名ならOK。

追記: 投稿の数分後、ふと、これはreadlineの機能では無いか??と思いつき、bash --noediting -iとしてみると、EnterやCtrl-Mではコマンド実行出来ない。^Mと表示されるだけ。やっぱりreadlineだったようだ。

$ bind -p | grep "C-[jm]"
"\C-j": accept-line
"\C-m": accept-line

CentOS8 から CentOS8 Stream への移行

CentOS8のサポートが切れるのでとりあえずStreamに移行した。 特に問題発生せず。

# dnf install centos-release-stream
# dnf swap centos-{linux,stream}-repos
  /etc/yum.repos.d 以下が切り替わる
# dnf distro-sync
  パッケージのインストール/アップデート/ダウングレード
# cat /etc/centos-release
    CentOS Stream release 8

続:「鎌倉殿の13人」の配役

約1年前に大河ドラマ「鎌倉殿の13人」と「草燃える」の配役の年齢比較を書いたが (「鎌倉殿の13人」の配役 )、 その後に追加で発表された配役があるので、現時点で再作成してみた。

やはり、松平健26が目立つ。渋沢栄一吉沢亮が27だったのでそれより若い。 まあ、主役は政子の岩下志麻という位置づけなのだろうが、事実上の主役だったと思う。

役名 鎌倉殿の13人 2022年齢 草燃える 1979年齢 年齢差
北条義時 小栗旬 40 松平健 26 14
北条時政 坂東彌十郎 66 金田龍之介 51 15
北条宗時 片岡愛之助_(6代目) 50 中山仁 37 13
北条政子 小池栄子 42 岩下志麻 38 4
源頼朝 大泉洋 49 石坂浩二 38 11
源頼家 金子大地 26 郷ひろみ 24 2
大姫 南沙良 20 池上季実子 20 0
源義経 菅田将暉 29 国広富之 26 3
源範頼 迫田孝也 45 山本寛 42 3
阿野全成 新納慎也 47 伊藤孝雄 42 5
亀の前 江口のりこ 42 結城しのぶ 26 16
安達盛長 野添義弘 64 武田鉄矢 30 34
伊東祐親 浅野和之 68 久米明 55 13
伊東祐清 竹財輝之助 42 橋爪功 38 4
工藤祐経 坪倉由幸 45 加藤和 51 -6
仁田忠常 高岸宏行 30 中田譲治 25 5
比企能員 佐藤二朗 53 佐藤慶 51 2
畠山重忠 中川大志 24 森次晃嗣 36 -12
梶原景時 中村獅童_(2代目) 50 江原真二郎 43 7
和田義盛 横田栄司 51 伊吹吾郎 33 18
三浦義澄 佐藤B作 73 早川雄三 54 19
三浦義村 山本耕史 46 藤岡弘、 33 13
岡崎義実 たかお鷹 74 小栗一也 56 18
土肥実平 阿南健治 60 田豊 45 15
首藤経俊 山口馬木也 49 田中明 53 -4
大庭景親 國村隼 67 加藤武 50 17
上総広常 佐藤浩市 62 小松方正 53 9
千葉常胤 岡本信人 74 小笠原弘 52 22
三善康信 小林隆 63 石濱朗 44 19
大江広元 栗原英雄 57 岸田森 40 17
後白河法皇 西田敏行 75 尾上松緑_(2代目) 66 9
丹後局 鈴木京香 54 草笛光子 46 8
平知康 矢柴俊博 51 津村鷹志 36 15
牧宗親 山崎一 65 中井啓輔 43 22
平清盛 松平健 69 金子信雄 56 13
平宗盛 小泉孝太郎 44 西田健 34 10
平維盛 濱正悟 28 須永慶 36 -8
文覚 市川猿之助_(4代目) 47 観世栄夫 52 -5
51.1 41.6 9.5

年齢は放送年の誕生日が来たらなので、撮影時は約1歳下のはず。

Chromedriverの自動アップデートスクリプト for Windows

Chromeブラウザのバージョンアップは自動的に行われるので、それに追随してChromedriver.exeもアップデートするPowerShellスクリプト。 タスクスケジューラで毎日実行する。

$BIN="D:\usr\local\bin"
$CHROME="C:\Program Files (x86)\Google\Chrome\Application"

$VerBrw = (Get-Childitem "$CHROME\[0-9]*" -Directory -Name).split(".")[0]
$VerDrv = (Invoke-Expression "$BIN/chromedriver --version").split(" ")[1].split(".")[0]

echo "Browser=$VerBrw"
echo "Driver =$VerDrv"

if($VerBrw -eq $VerDrv){
   exit
}

$Version = (Invoke-Webrequest -Uri "https://chromedriver.chromium.org/downloads" |
  Select-String -Pattern "path=($VerBrw[0-9.]+)" |
  ForEach-Object { $_.Matches.Groups[1].Value })

cd "$env:TEMP"
$URL = "https://chromedriver.storage.googleapis.com/$Version/chromedriver_win32.zip"
Invoke-Webrequest -Uri $URL -OutFile "chromedriver_win32.zip"
expand-archive -Path chromedriver_win32.zip -Force
Move-Item "chromedriver_win32\chromedriver.exe" "$BIN" -Force

firewalldの設定

zonepublicを使う。

firewall-cmd --list-all
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --add-service=smtp --permanent
firewall-cmd --add-port=9999/tcp  --permanent #sshで使うポート

firewall-cmd --set-log-denied=all #ログを取る

/etc/rsyslog.d/00local.confに、

kern.=warning   -/var/log/firewall.log

/etc/logrotate.d/syslogに、/var/log/firewall.logを追加。

Let's Encryptサーバー移行メモ

  • epelでcertbotをインストール

  • 証明書失効

certbot revoke --cert-path=/etc/letsencrypt/archive/example.jp/cert1.pem
  • 証明書申請
certbot certonly --manual \
--server https://acme-v02.api.letsencrypt.org/directory \
--preferred-challenges dns-01 \
-d "*.example.jp" -d example.jp \
-m foo@example.jp \
--agree-tos \
--manual-public-ip-logging-ok

CentOS8のPrivateTmp

httpdsystemdで起動すると、デフォルトでは/tmpに書けず、毎回作られた一時ディレクトリーに書くようになっている。

/etc/systemd/system/multi-user.target.wants/httpd.servicePrivateTmp=truefalseにすれば/tmpに書くように戻る。