Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

Backing Fileを持つqcow2イメージを単体のqcow2ファイルにする

Backing Fileを持つqcow2ファイル(差分)を、Backing Fileとマージして一つのファイルにする方法についてのメモ。

Backing FileをA.qcow2, 差分ファイルをB.qcow2とします。単純に差分BをAにマージしたいだけなら

# qemu-img commit B.qcow2

でよいですが、これだとBacking File(ベースとなるイメージ)にBの内容がマージされるため、A自体が書き換わってしまいます。

そのため、BのBacking FileをAからCに変更後、commitします。

まずは、AをCとしてコピーします。

# cp A.qcow2 C.qcow2

BのBacking FileをAからCに変更します。

# qemu-img rebase -b C.qcow2 B.qcow2

変更後、commit します。

# qemu-img commit B.qcow2

これで、C.qcow2 に B.qcow2の内容がマージされますので C.qcow2 を単体のqcow2ファイルとして利用できます。

Thunderbird(IMAP)のサブフォルダの新着を確認する

ThunderbirdでIMAPを使用していると、受信トレイに入っている新着メールは確認できるのですが、GmailのようなIMAPサーバ側の設定で自動でサブフォルダにメールを振り分けていると、Thnuderbird側で新着メールは確認できません。これはフォルダを右ウリックしプロパティを開いて「このフォルダーに新着メッセージがないか確認する」にチェックすると自動で新着を確認してくれるのですが、フォルダが多いと面倒です。

デフォルトで全フォルダをチェックしたい場合、Thunderbirdのデフォルト設定を変更すると実現できます。具体的には「ツール」→「オプション」の「一般」の「設定エディタ」を開き、「mail.server.default.check_all_folders_for_new」で検索し、値を「true」にしましょう。
※ 私は現在バージョン78を使ってますが、古いバージョンでは、「mail.check_all_imap_folders_for_new」という設定値のようです。

これで、フォルダ振り分けしたメールの新着も確認できるようになりました。

LinuxでIPv6 PPPoE接続

Ubuntu 20.04を使って、プロバイダのIPv6 PPPoEサービスに接続してみた時のメモ。

# apt-get install pppoe pppoeconf

設定ツールを起動

# pppoeconf

いろいろ聞かれますが、以下のよう設定しました。

一般的なダイヤルアッププロバイダを使っているほとんどの人は、
'noaut'オプションと'defaultroute'オプションを設定に選び、
'nodetach'オプションを削除するのがよいでしょう。あなたの設定
ファイルを確認して、これらの設定を必要に応じて変更しますか?

⇒ はいを選択

以下の入力ボックスに、あなたのプロバイダへのPPPログインに通常
必要となるユーザ名を入力してください。もしヘルプ画面を見たいの
であれば、ユーザ名を削除して「OK」を押してください。

⇒ プロバイダから提供された接続ユーザ名を入力して了解を選択。今回はmyusernameと想定。

以下の入力ボックスに、あなたのプロバイダへの PPPログインに
通常必要となるパスワードを入力してください。

⇒ プロバイダから提供された接続パスワードを入力して了解を選択

通常のホスト名を解決するためには、少なくとも1つのDNSIPアド
レスが必要です。通常、あなたのプロバイダは、接続確立時に
利用可能なサーバのアドレスを送ってきているはずです。これら
のアドレスを自動的にローカル/etc/resolv.confファイルのネー
ムサーバのリストに追加しますか?  (推奨します)

⇒ はいを選択

ほとんどのプロバイダは 1460 以上の MSS の IPケットをサポー
トしないルータを持っています。
~略~
pppoe で MSS を 1452 バイトに制限しますか?

⇒ はいを選択

PPPDが設定されました。ブート時に接続を開始するようにしますか?

⇒ はいを選択

これで、"pon dsl-provider" で DSL 接続を行い、"poff"で切断
できるようになりました。今接続を開始しますか? 

⇒ 今接続しないので、いいえを選択

ここまで設定すると、/etc/ppp/peers/dsl-provider というファイルにこのような設定が書き込まれます。

noipdefault
defaultroute
replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
persist
#mtu 1492
#persist
#maxfail 0
#holdoff 20
plugin rp-pppoe.so eth0
user "myusername"
usepeerdns

なお、パスワードは、/etc/ppp/chap-secrets や /etc/ppp/pap-secrets に保存されています。

ただし上記設定だと、IPv6でうまく繋がりません。設定パラメータの解説は、man pppd コマンドや http://man.he.net/man8/pppd , https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477245辺りを参考にしながら、以下2行を追記しました。

+ipv6
ipparam ipv6default

そして、/etc/ppp/ipv6-up.d/routing ファイルを作ります。この設定により、接続時にIPv6のルートが自動で追加されるようになります。(ファイルに実行を付けてください)

#!/bin/sh
if [ -z "${CONNECT_TIME}" ]; then
    if [ "${PPP_IPPARAM}" = "ipv6default" ]; then
        ip -6 route add default dev ${PPP_IFACE}
    fi
fi

その他、にろきのメモ帳ももいろテクノロジー を参考に、/etc/sysctl.conf に以下を追加

net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.ens160.accept_ra = 0

設定を反映

# sysctl -p

次に、IPv6接続時にDHCPを使う設定をします。dhcpcdをインストール

# apt-get install dhcpcd5

/etc/dhcpcd.conf に以下を追記

noipv6rs

interface ppp0
  ipv6rs
  iaid 1
  ia_pd 1 eth0

dhcpcdを起動

# systemctl start dhcpcd.service

最後にPPPoEで接続します。
※ dsl-provider は、/etc/ppp/peers ディレクトリに作られるファイル名になります。pon時の名前を変更したい場合、ファイル名を変更するだけでいけます。

# pon dsl-provider

接続が完了すると、eth0の情報を見るとこんな感じになりました。
※下記は実際のIPではないです
※黄色の箇所が接続後に追加で表示された箇所です。

# ip address show
 2: eth0:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
     link/ether b8:27:aa:bb:cc:dd brd ff:ff:ff:ff:ff:ff
     inet 172.16.0.1/16 brd 172.16.0.255 scope global eth0
        valid_lft forever preferred_lft forever
     inet6 2001:aaaa:bbbb:cccc:1/64 scope global dynamic noprefixroute
        valid_lft 14379sec preferred_lft 14379sec
     inet6 fe80::aaaa:bbbb:cccc:dddd/64 scope link
        valid_lft forever preferred_lft forever
49: ppp0:  mtu 1454 qdisc fq_codel state UNKNOWN group default qlen 3
     link/ppp
     inet6 fe80::aaaa:bbbb:cccc:dddd/10 scope link
        valid_lft forever preferred_lft forever

試しに google に ping を実行してみます。以下のようにIPv6で通信できました。

# ping www.google.co.jp
 PING www.google.co.jp(nrt12s17-in-x03.1e100.net (2404:6800:4004:80d::2003)) 56 データ長(byte)
 64 バイト応答 送信元 nrt12s17-in-x03.1e100.net (2404:6800:4004:80d::2003): icmp_seq=1 ttl=116 時間=5.39ミリ秒
 64 バイト応答 送信元 nrt12s17-in-x03.1e100.net (2404:6800:4004:80d::2003): icmp_seq=2 ttl=116 時間=6.03ミリ秒

ちなみに、接続を切るのはpoffです。

# poff dsl-provider

sshでno hostkeys available @ Ubuntu 20.04 Server (Raspi)

ラズパイにUbuntu 20.04を入れて、いざssh接続しようとしたら接続できません・・・

/var/log/syslog を見ると、

sshd: no hostkeys available -- exiting

というログが出ており、どうやらSSHサーバのキーが生成されていないようです。最初はOSのインストールに失敗したのかな?と思ったりしましたが、2回目同じ症状だったので、ここに対処方法を残しておきます。

とはいえ、以下のコマンドでキーを生成するだけです。

# ssh-keygen -A

生成が完了したら、sshを起動してあげましょう。

# systemctl start ssh

固定IPの設定@Ubuntu 20.04 LTS

以前のUbuntuでは、固定IPを使いたい場合 /etc/network/interfaces に設定を書いてましたが、ubuntu 20.04ではこのファイルはなく、/etc/netplan に設定ファイルをyaml形式で書く必要があります。

(例) /etc/netplan/99-network.yaml
※ /etc/netplan/ には 50-cloud-init.yaml というファイルがありますが、これを書き換えるのではなく、このファイルより辞書順で後になるようなファイル名で新規にファイルを作成します。参考

network:
    version: 2
    renderer: networkd
    ethernets:
       eth0:
           dhcp4: false
           dhcp6: false
           addresses: [172.16.0.2/16]
           gateway4: 172.16.0.1
           nameservers:
              addresses: [1.1.1.1]

設定項目は説明する程ではないと思いますが、上記では8行目で固定IP(ipv4)として172.16.0.2/16を設定してます。またデフ2ォルトGWに172.16.0.1, DNSに1.1.1.1を設定しています。

上記ファイルを作成し以下のコマンドを叩くと設定が反映されます。

# netplan apply

applyではその設定がすぐに反映されますが、リモートでのIPの変更はリスクを伴います。そのリスクを避けたければ、代わりに以下のコマンドを叩いてみてください。以下ではコマンド実行後5秒間以内にEnterを押さないと設定が元に戻ります。

# netplan try --timeout 5
 Warning: Stopping systemd-networkd.service, but it can still be activated by:
   systemd-networkd.socket
 Do you want to keep these settings?
 Press ENTER before the timeout to accept the new configuration
 Changes will revert in  3 seconds   [Enterをここで押す]
 Configuration accepted.

Galaxy Fit2 へ乗換 & レビュー

以前使っていた Fitbit Charge3(以下Charge3) の画面が、1年半で映らなくなり、充電もできなくなってしまったので、Galaxy Fit2(以下Fit2)に乗り換えてみましたので使い勝手などを比較しながら紹介したいと思います。

外見・つけ心地

デザインは個人の好みだとは思いますが、個人的には可もなく不可もなくといった所です。Charge3と比べて画面サイズは大きいですが、非常に軽く感じました。

Charge3 はベルトの付け根部分が弱く、少しキツめに締め付けてたら1年程度でちぎれてしまいましたが、Fit2はCharge3よりは丈夫そうに感じます。また、ベルトの金具(といってもプラスチックですが)部分が直接肌に面積が小さく、長時間付けていても肌への負担は低そうです。ベルドの締め方が少し変わっており、若干固定しづらいですがすぐに慣れると思います。ただし、ベルトの「つく棒」がそのうち折れそうで心許ないです。

画面はカラーの有機ELで大変見やすいです。明るさは10段階で調整でき、私は真ん中のレベル5で使ってますが、1月の晴天の太陽下でも十分表示を確認できます。

画面表示

Charge3もFit2も画面表示のデザイン変更はスマホで行うのですが、Charge3は変更する度に数十秒(だったかな?)待たされたのですが、Fit2はデザインを選択した瞬間に端末に反映されるので、実際の表示を見ながら選択することができます。

Fit2で用意されているデザインは以下のように奇をてらった物は少なく、以下のように基本となるデザインが幾つかあり、それをベースに時計と何を表示するかを選択するイメージです。
※ 下記画面は一部右にスクロールできるものがあるので全てではないです。

操作感

Charge3かなり操作が引っかかる感じがあり大変ストレスがあったのですが、Fit2はかなりスムーズに画面操作できます。基本は画面を指でスクロールして操作し、画面の下をタッチすると最初の時計の画面に戻るので、操作はすぐに慣れると思います。スクロールで表示する機能もスマホ側で設定できます。

電池の持ち

画面輝度は5に設定し、特別なエクササイズはせず一日3000~8000歩ぐらい歩く程度ですが、1日10%弱の電池消費量でした。よって私の使い方では電池の持ちは最大で11~12日程度かなと思います。

スマホのアプリ

アプリの作りはFitbitの方が使いやすいと感じました。

Charge3のアプリは、Fitbit提供のアプリ一つをインストールするだけでよかったのですが、Fit2はSamsung提供のGalaxy WearableというアプリやらS Health、さらにそれらアプリのプラグイン等複数のアプリをインストールする必要があり面倒です。WearableがFit2端末の接続や設定変更を行うアプリで、S Healthは収集したデータ(歩数や心拍数等)を表示するアプリというイメージです。つまり、やりたいことによってアプリを切り替える必要があります。

また、Samsungのアプリは運動してない場合でもスマホの位置情報やスケジュール等へのアクセス権限が必要で、権限を付与しないとアプリが起動しません。人によってはこの仕様は結構嫌がるのではないでしょうか。必要最低限の権限で動くように今後改善して欲しいところです。

Google Fitとの連携

Fitbitは独自のサーバにデータが保存されGoogle Fitと連携はできませんが、FitToFitという無料のアプリを使うことで定期的にGoogle Fitにデータを自動同期してました。Samsung(S Health)も独自のサーバにデータが保存されるようでGoogle Fitと連携できません。Health Syncというアプリで同期できます。有料アプリで買い切りだと320円でした。

FireHD 10(2019)にPS3のコントローラーを繋ぐ (OTG)

FireHD 10(2019)でゲームをするために、PS3のコントローラーを繋いでみました。

長時間プレイするとなると充電しながら使いたかったので、最初に購入したのが、「Hanmir USB Type C ハブ 6-in-1 USB-Cハブ」というOTG対応のType C接続のハブ。

こちらのブログで、スマートフォンを充電しながら使えたという記事があったので買ってみたのですが、残念ながら FireHD 10(2019)では使えませんでした。このハブを繋ぐと水分を検出したというワーニングが出てUSBポートが無効化されてしまいます。ネット上を検索すると、同じ症状の報告が複数確認できたし、このハブ自体は他のスマートフォンでは使えたので、おそらくFireHD側で充電しながらという使用方法に対応してないのかなと思い、諦めました。

 

次に試したのがダイソーのOTG対応USB Type C変換アダプタ。100円で買えます!ただし在庫が少ないのか、小さな店舗には置いていませんでした。

このアダプタを挟んで繋ぐだけでPS3のコントローラが無事タブレット上で使えるようになりました。もちろんマウスやUSBメモリ等のPS3以外の機器も使えました。

WSL2のLinuxメモリ量固定

WSL2は本物のLinuxカーネルが動くという性質上、大量のディスク読み書きなどすると大量にキャッシュとしてメモリが消費されてしまい、ホストのメモリを食いつぶしてしまいます。ホストにあまりメモリが積まれておらずホストが激重になってしまいましたので、WSL2のメモリ量を固定してみました。

Windows10のエクスプローラーで、%USERPROFILE% を開き、.wslconfig というファイルがなければテキストファイルとして新規にファイル作成し、以下を書き込みます。

[wsl2]
memory=4GB
swap=2GB

上記は、メモリを4GBに固定し、スワップに2Gを設定しています。ホストのメモリ量に応じて適宜変更してください。

変更後、WSL2 を再起動する必要があります。

コマンドプロンプトを管理者権限で開きWSL2を停止します。

C:> wsl --shutdown

再度、WSL2を起動(Ubuntu等のアイコンをクリック)し、Linuxのコマンドラインで以下を実行し、メモリ量やスワップの量が指定した値になっているかを確認します。

$ cat /proc/meminfo
MemTotal: 4028424 kB
MemFree: 3950724 kB
MemAvailable: 3847712 kB
Buffers: 5748 kB
Cached: 8576 kB
SwapCached: 0 kB
Active: 12532 kB
Inactive: 3752 kB
Active(anon): 2012 kB
Inactive(anon): 8 kB
Active(file): 10520 kB
Inactive(file): 3744 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097152 kB
SwapFree: 2097152 kB
Dirty: 48 kB
Writeback: 0 kB
AnonPages: 2060 kB
Mapped: 4100 kB
Shmem: 68 kB
Slab: 21744 kB
SReclaimable: 11912 kB
SUnreclaim: 9832 kB
KernelStack: 1480 kB
PageTables: 108 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 4111364 kB
Committed_AS: 3108 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
Percpu: 944 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 15360 kB
DirectMap2M: 4177920 kB

参考 : https://docs.microsoft.com/ja-jp/windows/wsl/wsl-config

WSL2にDockerをインストール

Ubuntu同梱のDocker.io をインストールすると、service コマンドで起動できないので、Dockerコミュニティ版を使用します。root ユーザで以下コマンド叩きます。

# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
# apt install -y docker-ce
# service docker start

動作確認

# docker info

WSL2を使って本物のLinux環境をWindowsで使う

Windowsには、WSL (Windows Subsystem for Linux)というLinux互換機能が随分前から実装されていましたが、これはLinuxの全機能が使えるわけではなく様々な制限がありました。そのため、低レイヤーにアクセスするDockerのようなコンテナ機能や各種ネットワーク制御系アプリケーション等が動作せず使い勝手の悪いものでした。しかし、WSL2はHyper-Vを使った仮想マシン上でLinuxの本物のカーネルが動くため、これら制約がなくなりましたので早速使ってみます。

管理者としてコマンドプロンプトを開き、WSL2を有効化します。

> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.572
イメージのバージョン: 10.0.19042.630
機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。

仮想マシンを有効化します。

> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.572
イメージのバージョン: 10.0.19042.630
機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。

一旦Windowsを再起動します。

再起動完了したら、コントロールパネルから「プログラムと機能」を開き、「Windowsの機能の有効化または無効化」の画面で、「Linux用Windowsサブシステム」と「仮想マシンプラットフォーム」にチェックを入れます。

PowerShellを管理者として開きWSL2をデフォルトに設定します。

> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください

Microsoft Storeを開き、Linuxをインストールします。今回は Ubuntu 20.04 をインストール(入手)しました。ダウンロードサイズは444.5MBでした。

ダウンロードが終わると「起動」というボタンが表示されるので起動します。

初めての起動時は、このようにInstalling ・・という表示が出力されます。その後、ユーザ名やパスワードを聞かれるので適宜設定してください。

UbuntuがWSL2上で動いているかどうかは、PowerShell上で以下のコマンドを使って確認できます。VERSIONが2ならOKです。

> wsl --list --verbose
NAME STATE VERSION
Ubuntu-20.04 Running 2

あとは、Ubuntuの世界の話なので、sudo 使って適宜アップデートなりパッケージインストールをしましょう。

curlで取得したスクリプトに引数

インストール用シェルスクリプトをcurlでダウンロードし、そのままシェルに渡して実行することが増えてきました。

例えば、HELM をインストールする場合、以下のコマンドでインストールする方法が紹介されています。

$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

上記スクリプトを実行すれば、最新版のHELMがインストールされますが、実は --version という引数を与えることで、バージョンを指定することができます。これを、上記のようにcurlでダウンロードして直接bashで実行したい場合、bash の -s オプションを使えばできます。

試しに、curl でダウンロードしたと想定して、「echo $1 $2」を実行するスクリプトに、123 と 456 を引数で与えると、このように引数の内容が表示されます。

$ echo 'echo $1 $2' | bash -s 123 456
123 456

なお、引数が "--version" のように "-" があると、bash の引数と理解されてしまうので、その場合は、"--" を -s の後ろにつけましょう。

$ echo 'echo $1 $2 $3' | bash -s -- --version 123
--version 123

Dockerネットワークで割り当てるIP範囲を絞る

docker network createで新しいコンテナ用のブリッジネットワークを作成する場合、コンテナに割り当てるIPの範囲を絞ることができます。

例えば、以下のように --subnet で 172.16.0.0/16 を指定し、--ip-range で 172.16.0.0/24 を指定すると、コンテナには172.16.0.1~255の範囲で割り当てられます。

# docker network create --subnet 172.16.0.0/16 --ip-range 172.16.0.0/24 --attachable -o "com.docker.network.driver.mtu=1450" my-nw

git pushでフリーズする

git clone や git pull はできるのに、git push するとフリーズしてしまうのは、環境変数が悪さしてる可能性があります。ASKPASS関連の環境変数が定義されている場合、Linuxなら以下のようにunsetしてあげると、うまくpushできるようになるかもしれません。お試しあれ。

# unset SSH_ASKPASS
# unset GIT_ASKPASS

sshログインしても何も操作をさせないぜ!

トンネリングを目的にsshを使う場合、ログイン後の操作を制限したい場合があります。これは、sshサーバ側のユーザのauthorized_keysに「command」という設定を書くことで実現できます。
※ authorized_keysを使うのでsshキーによるログインが前提の方法です。

具体的には、サーバ側の~/.ssh/authorized_keys に以下のように書かれているとします。

ssh-rsa AAAABYMfIAJF(ssh公開キー中略)0aAAn root@localhost

この行に以下のようにcommandという設定を先頭に書き足します。

command="echo 'locked'; tail -f /dev/null" ssh-rsa AAAABYMfIAJF (公開キー中略) 0aAAn root@localhost

この状態でsshログインすると、上記commandに指定されたコマンドが実行されるため、

locked

という文字が表示された後、"tail -f /dev/null" が実行され続けます。つまりユーザは何もできません。
※ tail -f /dev/null は、永遠に /dev/null から情報を読み続けるだけの意味のないコマンドで、別のコマンドでも構いません。

Docker with CentOS 8

CentOS 8(RHEL 8)にはDockerが同梱されなくなり、長い間DockerコミュニティからもCentOS 8向けのDockerがリリースされていなかったので、CentOS 8上でDockerを使うのが難しかったのですが、2020/9 頃にリリースされていましたので、インストールしてみました。

公式ドキュメントにも書かれていますが、インストール方法は簡単です。(CentOS 7と同じです)

# yum install -y yum-utils
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install docker-ce docker-ce-cli containerd.io

以上です。

インストールしただけではDockerは起動しないので、systemctl で起動しましょう。

# systemctl start docker

ssh接続が切れたときの対処方法を考える

sshの接続はサーバダウンやNW故障等、様々な理由で切断されます。端末の目の前にいるなら手動で再接続すれば良いのですが、いない場合はどんな方法で復旧できるかをまとめてみました。

autossh

まず1つ目は、autossh を使用する方法です。RHEL系ならepelのリポジトリを使ってyumやdnf, Debian系ならaptでインストールできます。使い方はsshとほぼ同じですが、-M というオプションが必要です。以下はsshserverというホストにuserというユーザ名でポート22に接続しています。-M オプションは接続監視のオプションです。0を指定すると監視オプションは無効化されます。
※ 無効化してもTCPのセッションが切れた場合は再接続してくれます

# autossh -M 0 -p 22 user@sshserver

-M に 9000 といったポート番号を指定すると、端末とsshserver間で定期的に指定したポートを使って実際に通信ができるか定期的にチェックしてくれます。これは、autosshの “-M” オプションの正体 という記事がわかりやすいです。上記記事によると端末側とサーバ側で9000ポート、さらに端末側で9001(9000+1)ポートが使われていない必要があるようです。

autossh -M 9000 -p 22 user@sshserver

なお、自動で再接続をするには、sshキーを登録しておいてパスワードなしでログインできるようにしておいたり、sshキー登録が無理なら、テキストファイルにサーバ名やID,パスワードを書いておいて再接続時に自動で入力するようなソフトもあるようです。

mosh

正確にはsshではないですが、mosh を使うと端末のIPが変わったり、NWが切断されてもセッションを保つことができます。サーバ側にmoshサーバ、クライアントにmoshクライントが必要ですし、プロトコルにUDPを使うので、制約のある環境では使いにくいです。

これもRHEL系ならEPELリポジトリを有効にしてyumやdnf、Debian系ならaptでインストールできます。

moshクライアントは、Windows上ならcygwin 向けのコマンドや、MobaXterm といったクライアントソフトを使えば接続できます。

その他

sshクライアントが切断されたら自動で再接続するようなスクリプトを書くこともできると思います。Linux系ならsystemd 等を使ってプロセス停止時に自動でsshコマンドを再起動する方法なども考えられます。puttyなら、この辺りの記事が参考になると思います。他にも、Bitviseといったsshクライアントはソフトウェアとして再接続機能が実装されているようです。

全国のコロナ情報集計サイトまとめ

東京都で使われている新型コロナのサイトは、オープンソースソフトウェアといってシステムの設計図が公開されてます。よって誰でも同じようなサイトを構築することができ、各地のコロナのサイトが構築・公開されています。

派生サイトは、以下のように GitHub と呼ばれる開発サイト上に情報がまとめられているので、ご興味あれば参考にしてみてください。

このブログについて
プライバシーポリシー・お問い合わせ等
購読する(RSS)
記事検索
アーカイブ
カテゴリー
  • ライブドアブログ