Shared SSL

共有SSL – レンタルサーバーはさくらインターネット
こんなのあったんだ。
これで筆者のページも https 化できるのか。
さっそくやってみよう。

コンパネにログイン。
[ドメイン設定] の [ドメイン/SSL設定] をクリック。
このドメイン名の所にある [変更] ボタンをクリック。
[SSLの利用をお選びください] の [共有SSLを利用する] を選択。
[送信] ボタン、で設定完了!

30 秒だけ一応待って https でアクセス。
アクセスできた、https 化完了!

http から https へ自動ジャンプさせたいな。
httpからhttpsにリダイレクトする方法と注意点について | キーワードファインダー

せっかくなのでいつかやろうと思っていたサイト名変更。
サイト名を Paepoi に。
ブログを Paepoi Blog に。
やっぱり統一したほうがいいよね。

追記

自サイトだけ変更したら Google AdSense が表示されなかった。
show_ads.js への URL も https に変更しないと弾かれるようです。

Fedora fwupd

先日から Fedora 31 のファームウエア更新が失敗する。
環境によるっぽいけど、アップデート通知を毎回適用しても変わらず。
これが再起動毎に通知されるのでウザい。

# fwupd @ 1.3.3 to 1.2.11
sudo dnf downgrade fwupd

で毎回元に戻している、けどいいかげんにメンドイ。
ASK ページは一応チェックしているんだけど。

Failed to Update – Discussions in English / on using Fedora – Ask Fedora

おっと動きがあったようだ。
tpm2-abrmd って何だ?

tpm2-abrmd command man page | ManKier

TPM2 のアクセス制御デーモンということみたい。
TPM については以下、もちろん検索で見つけただけ。

TPM2.0の活用方法 | ファナティックレポート

デーモンを削除しなくてもバイオスで無効にできるみたい。
と思ってやってみたけど変わらなかった、素直に削除しよう。

sudo dnf remove tpm2-abrmd && sudo dnf --refresh upgrade

やっとアップデートできた。
けどこのデーモンって必要あるのかな?
次の Fedora Upgrade 時は新規インストールすることにして様子見。

subprocess run Popen

そういえば最近このブログは subprocess.Popen を使っているけど。
subprocess.run で全部まかなえるようになったんじゃなかったっけ?
Popen を使う理由は何だろう。

subprocessでPythonからLinuxコマンド実行

あぁ戻り値を得ないならば非同期実行になるってことね。
しかしなんともなサンプルコードだ、多分 Windows なんだろうけど。
UNIX 系ならこんなに単純なサンプルコードにできる。

#!/usr/bin/env python3

import subprocess

subprocess.Popen(['sh', '-c', 'sleep 3; echo First'])
subprocess.Popen(['sh', '-c', 'echo Second'])

print('__done__')

__done__ が一番最初に表示されるね、なるほど。
ただし with as を使うと戻り値を使うのと同様になるので順番どおりになる。

#!/usr/bin/env python3

import subprocess

with subprocess.Popen(['sh', '-c', 'sleep 3; echo First']) as p:
    pass
with subprocess.Popen(['sh', '-c', 'echo Second']) as q:
    pass

print('__done__')

この特性を上手く利用すれば色々便利になりそう。

subprocess readline loop

sftp を subprocess で関連は色々詰まって全然進まない。
特に stdout.readline は検索すると同じ事で詰まっている人ばかり見つかるってどうよ。
そうです、readline でループすると値が戻らず止まってしまうんです。
俺だけじゃなかった!なんて安心してもしょーがないんですけど。

python – catching stdout in realtime from subprocess – Stack Overflow

上記で上手くいっている人と駄目な人がいるみたいだけーが。
exe ってことは Windows なら問題ないってことなのかも、知らんけど。

Pythonでサブプロセスと対話する – 西尾泰和のはてなダイアリー

上記でやっとなんとかなった。
サンプルコード、bash のエミュレーター。

#!/usr/bin/env python3

import sys, subprocess, os

with subprocess.Popen(['/bin/bash'], encoding='UTF-8', stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) as p:
    while True:
        try:
            s = input('test > ')
        except EOFError:
            # Ctrl+D
            break
        p.stdin.write(f'{s}\n')
        p.stdin.flush()
        if s == '':
            continue
        if s == 'exit':
            break
        r = os.read(p.stdout.fileno(), 1024)
        sys.stdout.write(r.decode())
        sys.stdout.flush()
        # not UNIX ?
        #for line in iter(p.stdout.readline, b''):
        #    print(line.rstrip())

print('__done__')

os.read はファイルオブジェクトに使わないでって書いているけど動くようだ。
os — 雑多なオペレーティングシステムインタフェース ? Python 3.8.0 ドキュメント
ls の出力が改行されてしまう理由は解らない。
subprocess ごときにこんなに苦戦するとは思わなかったぞ。

subprocess sftp

sftp コマンドをラッピングしてアプリを自作するのもアリかも。
と前回書いたし自分で作ろうかなって。
Python なら subprocess であっさり作れそう。
後は PyObjC あたりで GUI を作ればいい。

まず問題なのがパスワード入力をどうするかってこと。
すぐに見つかったけど sshpass コマンドを使えば簡単にできるようだ。
Fedora には最初からあるけど macOS には無いんだなぁ。
まあいい後回し、今回は Fedora から接続で試す。

次は接続されるのを待つ必要があるな。

Python の subprocess – Qiita

この一番下みたいに開始の出力を得ればなんとかなりそう。
色々試したけど Connected to … は stderr 出力だ、なんだそれ。

Pythonでデッドロックを回避しながらサブプロセスの標準出力を1行ずつ読み込む – 物理の駅 by onsanai

デッドロックしまくったけどコレをみつけてなんとかなった。
色々遠回りしたけどなんとかなったコード。

#!/usr/bin/env python3

import shlex, subprocess

args = shlex.split('sshpass -p PASSWORD sftp USERNAME@HOSTNAME')

with subprocess.Popen(args, encoding='UTF-8', stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) as p:
    # wait Connect
    while True:
        line = p.stdout.readline()
        print(line)
        if 'Connected' in line:
            break
    # Start
    s = input('test > ')
    outs, errs = p.communicate(input=s, timeout=15)
    print(outs)

communicate ではプロセスが終わってしまうんだよな。
bye を送るまで while ループさせる所で今つまっている。

Paramiko 使えってのは無しにして、それじゃつまらないし勉強にもならない。
外部モジュールで満足する人はフリーソフトのインストールで満足しちゃう人だと思う。