2025/02/03

Linux用のTUI(テキストユーザインタフェース)のエディタを作ってみたらめっちゃ使い勝手の悪いエディタが出来上がった

  • 自分が作ったエディタ使うぐらいなら、Linuxで使えるnanoを使った方が1000倍ましと思えるぐらいの物が出来上がった
  •  
  • 機能としては
  • TUIのエディタ
  • 対応はUTF-8のファイル、マルチバイト文字
  • 引数に渡せば複数のファイルを読み込み、L キーで一覧出力し、番号入力でファイルに切り替える事ができる
  •  
  • undo、redo、置き換えとかは無し
  • イベントドリブンとカーソルキーの取得とprint等の最低限の環境依存部分のみにncursesを使用し、他は自前実装(自前実装だから使いにくいし、冗長、くそソース)
  •  
  • でも、せっかく書いたのでアルファ版として公開してみる
  •  
  • https://drive.google.com/drive/folders/1pMpJ7PMb0aqgRy-pf7gbNtpFEkd6HLot
  • のmaEditから

2024/12/23

SSH設定

  • #!/bin/sh 
  •  
  • # インストール 
  • apt install -y openssh-server fail2ban; 
  • systemctl enable ssh; 
  •  
  • # ---- 
  • # 削除 
  • # ---- 
  • Func(){ 
  •     sed "/$1/d" $2 > /tmp/$$.tmp; 
  •     mv -f /tmp/$$.tmp $2; 
  • return 0; 
  • }; 
  • # プロトコル 
  • Func '^Protocol' '/etc/ssh/sshd_config'; 
  • # 接続を許可するユーザ 
  • Func '^AllowUsers' '/etc/ssh/sshd_config'; 
  • # 接続のインターバル 
  • Func '^ClientAliveInterval' '/etc/ssh/sshd_config'; 
  • # 試行回数の最大値 
  • Func '^ClientAliveCountMax' '/etc/ssh/sshd_config'; 
  • # rootでのログイン 
  • Func '^PermitRootLogin' '/etc/ssh/sshd_config'; 
  • # 空のパスワード 
  • Func '^PermitEmptyPasswords' '/etc/ssh/sshd_config'; 
  • # 公開鍵での認証 
  • Func '^PubkeyAuthentication' '/etc/ssh/sshd_config'; 
  • # パスワードでの認証 
  • Func '^PasswordAuthentication' '/etc/ssh/sshd_config'; 
  •  
  • # 一時ファイルの削除 
  • rm -r -f /tmp/$$*; 
  •  
  • # ---- 
  • # 追加 
  • # ---- 
  • # プロトコルを指定 
  • echo 'Protocol 2' >> /etc/ssh/sshd_config; 
  •  
  • # 許可するユーザ 
  • echo "AllowUsers $(logname)@127.0.0.1" >> /etc/ssh/sshd_config; 
  • echo "AllowUsers $(logname)@192.168.*" >> /etc/ssh/sshd_config; 
  •  
  • # インターバル 
  • echo 'ClientAliveInterval 60' >> /etc/ssh/sshd_config; 
  • # 試行回数 
  • echo 'ClientAliveCountMax 2' >> /etc/ssh/sshd_config; 
  •  
  • # rootでのログインを拒否 
  • echo 'PermitRootLogin no' >> /etc/ssh/sshd_config; 
  • # 空のパスワードでのログインを拒否 
  • echo 'PermitEmptyPasswords no' >> /etc/ssh/sshd_config; 
  •  
  • # パスワードでの認証を許可 
  • echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config; 
  •  
  • # 公開鍵でのログインを許可 
  • echo 'PubkeyAuthentication yes' >> /etc/ssh/sshd_config; 
  • # 公開鍵での認証を許可し、パスワードでの認証を許可しないようにする場合 
  • # echo 'PasswordAuthentication no' >> /etc/ssh/sshd_config; 
  •  
  • # sshのリスタート 
  • systemctl restart ssh; 
  •  
  • # fail2banの設定ファイルを作成 
  • cat /dev/null > /etc/fail2ban/jail.local; 
  •  
  • # 書き込み 
  • echo '[DEFAULT]' >> /etc/fail2ban/jail.local; 
  • echo 'ignoreip = 127.0.0.1/8' >> /etc/fail2ban/jail.local; 
  •  
  • # BANする時間(秒) 
  • echo 'bantime = 86400' >> /etc/fail2ban/jail.local; 
  •  
  • # findtimeの時間内にmaxretry回続けば遮断される 
  • echo 'findtime = 600' >> /etc/fail2ban/jail.local; 
  • echo 'maxretry = 3' >> /etc/fail2ban/jail.local; 
  •  
  • echo '[sshd]' >> /etc/fail2ban/jail.local; 
  • echo 'enabled = true' >> /etc/fail2ban/jail.local; 
  •  
  • # ポートを変えてる場合、設定する 
  • echo '# port = 22' >> /etc/fail2ban/jail.local; 
  •  
  • # 再起動 
  • systemctl stop fail2ban; 
  • systemctl start fail2ban; 
  •  
  • exit; 
  • わざとパスワードを間違えてアクセスするとlogファイルにBanされた情報が確認できる
  • /var/log/fail2ban.log
  • NOTICE [sshd] Ban 192.168.*.*

2024/12/15

UbuntuでTOTP

  • インストール
  • apt install -y oathtool;
  • apt install -y pwgen -s;
  •  
  • ワンタイムパスワードをクリップボードに出力
  • oathtool --totp -d 6 --time-step-size=30s --base32 (KEY) | xsel -b -i; xsel -b -o;
  •  
  • -d 作成するワンタイムパスワードの桁数
  • --time-step-size 切り替わる時間
  • --base32 Base32のキー
  • (KEY) TOTPを設定する時に表示されるQRコードの所に表示されるキー
  •  
  • xsel クリップボードへ入れる

2024/12/10

UbuntuでLutrisを使いGOG Galaxyを起動

まず入ってるwineを全てアンインストールする 

apt remove -y --purge wine; 

 

wine公式 

https://www.winehq.org/

 

Downloadへ移動し、Distro Binary Packagesから使ってるディストリビューション選ぶ 

使用しているUbuntu - WineHQ binary packages for Ubuntu を参考にする 

https://gitlab.winehq.org/wine/wine/-/wikis/Debian-Ubuntu

 

# 32ビット アーキテクチャを有効に 

sudo dpkg --add-architecture i386; 

 

# リポジトリを追加する 

sudo mkdir -pm755 /etc/apt/keyrings; 

wget -O - https://dl.winehq.org/wine-builds/winehq.key | sudo gpg --dearmor -o /etc/apt/keyrings/winehq-archive.key -; 

 

Distribution nameの所から使ってるUbuntuのバージョンのコマンドを使用する 

自分はUbuntu 24.04を使ってるので 

sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources; 

 

パッケージを更新 

sudo apt update; 

 

wineのバージョンを 

安定版 winehq-stable 

開発版 winehq-devel 

ステージング版 winehq-staging 

から選ぶ 

自分は開発版をインストール 

sudo apt install --install-recommends winehq-devel; 

 

winetricksをインストール 

apt install -y winetricks; 

 

Lutrisをインストール 

apt install -y lutris; 

 

Lutrisを起動し、左のメニューのwineにカーソルを合わせsettingを選択 

Lutris-setting.png

 

wine versionの所でwineのバージョンを選ぶ 

winehq-develを選択したのでWineHQ Devel(バージョン)を選びSave 

 

左上の+を選び、Search The Lutris website for installersを選びgogで検索 

GOG Galaxyをインストールする 

 

 

2024/12/01

Ubuntu上でWaydroidをインストール(Android 11)

公式サイトは
https://waydro.id/

インストールに関するドキュメントは
https://docs.waydro.id/usage/install-on-desktops

今回はUbuntuで使用するので
https://docs.waydro.id/usage/install-on-desktops#ubuntu-debian-and-derivatives
参考にする

# curlはコマンドラインでサーバへのリクエストが行える
# ca-certificatesはCA証明書 パッケージ
sudo apt install -y curl ca-certificates;

# リポジトリを追加
# /usr/share/keyrings/waydroid.gpg
# /etc/apt/sources.list.d/waydroid.list
curl -s https://repo.waydro.id | sudo bash;

# waydroidをインストール
sudo apt install -y waydroid;

# クリーンアップ
sudo rm -rf /var/lib/waydroid /home/.waydroid ~/waydroid ~/.share/waydroid ~/.local/share/applications/*aydroid* ~/.local/share/waydroid;

# Ubuntuを再起動する
sudo reboot;

初回実行。Android TypeはGAPPSを選択
waydroid first-launch;

起動はメニューの中のwaydroidをクリック
終了はUbuntu側のターミナルで行う
waydroid session stop;

waydroid内でアップデートが行われたらUbuntuが強制でログアウトされるのでアップデート通知が出たらUbuntu側の編集中のものは全て閉じてアップデートする
アップデート後、waydroidが立ち上がらないので終了コマンド
waydroid session stop;
を実行してその後waydroidを立ち上げる

このデバイスはPlay プロテクトの認証を受けていません
を解消し、Google Playを使用できるようにする
https://docs.waydro.id/faq/google-play-certification

Waydroidを起動した状態でUbuntu側のターミナルで実行
sudo waydroid shell;

:/ # と表示されるので、そのリモートシェルにペースト
ANDROID_RUNTIME_ROOT=/apex/com.android.runtime ANDROID_DATA=/data ANDROID_TZDATA_ROOT=/apex/com.android.tzdata ANDROID_I18N_ROOT=/apex/com.android.i18n sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";"

ブラウザを立ち上げgoogleにログイン後、android_idの後の数字を登録
https://www.google.com/android/uncertified

シェルを終了
exit;

認証されるまで暫く待つ
waydroid session stop;

Ubuntuからwaydroidの内蔵ストレージへアクセス
sudo xdg-open /home/$(logname)/.local/share/waydroid/data/media/0;


2024/11/21

Ubuntu Linuxで乱数を出力

  • 自分用のメモ
  •  
  • cat /dev/urandom | tr -dc '\-_.0-9A-Za-z' | head -c 1024 | fold -w 16;
  •  
  • cat /dev/urandom
  • で乱数出力
  •  
  • tr -dc
  • で指定されてる文字以外を削除
  •  
  • head -c
  • で文字数指定
  •  
  • fold -w
  • で指定文字数毎に改行

Linux用のTUI(テキストユーザインタフェース)のエディタを作ってみたらめっちゃ使い勝手の悪いエディタが出来上がった

自分が作ったエディタ使うぐらいなら、Linuxで使えるnanoを使った方が1000倍ましと思えるぐらいの物が出来上がった   機能としては TUIのエディタ 対応はUTF-8のファイル、マルチバイト文字 引数に渡せば複数のファイルを読み込み、L キーで一覧出力し、番号...