それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

linux

grep の後方参照の代替案 4つ

grep では 後方参照ができないので、代替案を考えることになる。 方法1基本的な方法 -o マッチした箇所だけを取り出す -o を使って、マッチした箇所だけを取り出す。 cat out.txt | \grep -Po 'Abc.*Xyz' 方法2 先読み+あとよみ 先読み・後ろ読みにマッチ…

cronをWEB管理するソフトを作りました。

cron の代替を作りました。 github.com 経緯 cron(自動実行プログラム)の管理が煩雑でした。 増え続けるcrontab。ここ数年管理が崩壊していました。systemd.timer や google app scripts なども増えるし、ラムダ系で実行してたりいろいろな所で、タイマー(…

multipass のubuntu で dockerd を動かして外部から接続できるようにする。

multipass に docker を入れる。 multipass を windowsでインストールすると、HyperVの仮想マシンで起動します。 choco install multipass windows の hyper-V で起動したubuntu に docker を入れる。 sudo snap install docker mutipass な ubuntu の docke…

別ホストのdockerをTCP経由で操作する

docker は自PCに入れなくても動作します。 docker コマンドの接続は次のようになっています。 docker-cli ---- fd(sock) --- docker-host docker は api 経由で動作しているので、TCP経由でも接続できます。 docker-cli ---- tcp(sock) --- docker-host tcp …

bashスクリプトで標準入力か引数のどちらかを取得する

STDINか引数を処理するコマンドを作りたい。 たとえば、次のようなコマンドを作りたい。 標準入力があるときは、標準入力を使い、それ以外は引数を使う。 echo AAA | to_lower to_lower AAA to_lower の例。 ヒアストリングに展開すれば楽ちんです。 <<< ${@…

ファイル名の最大長の限界を、ストレージのフォーマットタイプごとに調べる

ファイル名の限界を調べる。 windows の人からもらった zip ファイルが 展開できなくて、ファイル名の長さの問題だったので、限界値(最大のファイル名の長さ)をぱぱぱっと調べた。 日本語だと文字数ほとんど使えないLinux Linuxはファイルの文字数が255バ…

awk がちゃんと動かない→gnu awk を入れる。

WEBのawk サンプルが動かないときの対応 一般的に使われているawk には色々あります。ネットに書かれている「テクニック」は gnu awk が多いです。 あれれ動かんぞ、とおもったら gawk を入れましょう。 sudo apt install gawk awk のサンプルが動かない例 …

7-zipコマンドの一覧オプション ba を使って再利用しやすくる

7z にはドキュメント化されてないオプションがあるんだ・・ 罠でしょ。 7z でアーカイブファイルをパイプで渡しやすい形式にする。 takuya$ 7z l -ba sample.zip 2021-08-23 15:59:54 ..... 2 2 a.txt 7z でアーカイブファイルの中身を見る 通常であれば、 7…

sudo時の$HOME/$USER の環境変数の継承について

はじめに -E で環境変数を引き継げるのだけれど、WSLでsudo したときに、Windowsアプリにroot を使ってほしくなく、単にファイルを書き換えたいだけという欲求が出てきたので調べた。結論としてはむやみにやるんじゃない。ってことですけどね。 Home環境変数…

改行を維持して 変数をechoする。

改行を維持して echoする。 改行を保持したまま、変数を出力したい ダブルクォーテーションすることで改行が出る 変数定義 STR=" aaa " 出力例 echo $STR ## 改行が出ない echo "$STR" # 改行がでる 変数をダブルクォーテーションでクォートすると、変数内に…

join コマンドでLEFT OUTER JOIN のNULL 付きで出して、会議ごとの出席者一覧データを作る。

join コマンドでLEFT OUTER JOIN のNULL 付き的なことをやる 会議の出席の記録や、商品の売上のようなデータを横展開して表にしたい時がある。 このようなとき、join コマンドをぱぱっと実行すれば、データのOUTER JOIN的な事ができる。 出席と欠席を join …

journald で今日のログ だけを見たい

今日のログだけを見る 日付を指定して、ログが見れる。 journalctl --since 2021-07-12 もっとかんたんに date コマンドと組み合わせれば、ぱぱっと実行できますね。 journalctl --since $(date -I) 今日の 17:00 以降ログ 時間も合わせて、さっきのログをみ…

Ubuntuでmysql(/var/lib/mysql)を初期化して初期パスワード生成

mysql をリセットする apt でインストールしたmysql のデータを全消しして、初期化し直す。 mysql を消したくなるとき。 何らかの作業をしていて、いったんmysql をサクッと削除して作り直したい時がある。 しかし、apt はしたくない。 sudo apt purge mysql…

lxc でCentOSのコンテナを起動する

centos をぱぱっと作る LXCでCentOSのコンテナを起動して動作させる。 docker と違い ちゃんとinit.d / systemd が起動した centos なので実験・テスト環境にはとても楽。 LXD はほんと、ちょっとしたコツを覚えれば快適に実験環境を作れる。 centos を lxc …

unbound で指定ドメインを上書きして応答する。

unbound で指定したドメインの名前解決を上書きする unbound では、指定したドメインの応答結果を本来の結果とは違う応答を返却することができる。 ドメインの一種の偽装である。グローバルに偽装応答すると犯罪だがローカルで書き換えるのであれば問題ない…

LXC で不要になったストレージを取り外す

LXC で不要になったストレージを取り外す LXC で不要になったストレージを取り外す 使用中のストレージを一覧する lxc storage list を使って、いま、ストレージが使われているか確認する。 takuya@lxc-host:~$ lxc storage list +---------+--------+------…

lxc の zfs プールを追加する。

lxc の zfs プールを追加する。 zfs が default だけじゃ使いにくいので。zfs のプールを追加する。 現在のプールを確認 lxc は現在 default と名付けられたZFS プールに紐付いている。 zfs プールを確認 lxc に使ってるストレージとはいえ、zfs であるので …

sed で改行削除/sedで全文(複数行マッチ)

sed で改行を消してCSVにしたい。 コマンドの結果の改行を消してCSVのようなカンマ区切りに変換したい。 他の置換ツールや python / ruby のワンライナーに回せばいいと思うけど、sedでできたほうが汎用性が高そう。そのためsedで改行を置換、改行を別の文字…

マルチコアのCPUを使い切って圧縮を速くする

gzip の限界 = CPU 1コア マルチコア・マルチスレッドのCPUがあるのに、gzip や lzma(xz)や bzipといったメジャーな圧縮は、CPUを1コアで処理するんですね。 CPU使用率を見てみたら、CPU利用率は100%を超えないんですね。 HDD・SSDの書き込み速度に限界が…

cloudflare 以外からのアクセスを拒否する/ipsetとiptablesで

linux のFWで特定のアクセス元だけを許可する。 たとえば、cloudflare からのアクセスを許可して、通常のアクセスは全部拒否する。 アクセス元IPで接続を限定する。 クラウドのVPSにデータを置くときには、アクセス制限をキッチリやらないから、情報漏洩が起…

chgrp で Operation not permittedになる場合の対処

事象 Linuxでファイルの所属グループを変更したいが、Operation not permitted になって権限が足りずにできない。 chgrp www-data virtualhosts/prod/test.com chgrp: changing group of 'virtualhosts/prod/test.com': Operation not permitted 対応1:sud…

gsuite のアカウント増やさずにメアドだけ増やして mailcow で管理する。

概要 GSuite(google workspace) 宛のメールを、独自のメールホストへ転送してGoogle アカウント管理下にないメールアドレスを使う。 前提条件 課金済み 重大な前提条件 Google Workspaceで課金済み。 課金しているGsuiteが必要です。歴史的経緯の無償版Gsuit…

curl でSMTP経由のメール送信

curl で smtp 経由でメールを送信する。 curl -v --url 'smtp://192.168.1.1:2525' \ --upload-file sample-mail.txt \ --mail-from takuya@example.com \ --mail-rcpt takuya@example.com curl で送信できるわこれ。 smtp をTELNETで接続してメール送信テス…

Postfixが ssh ログインして、メールをリレー配送する設定を入れる。

動機: ssh 経由でsendmail を使えると気づいたので応用してみた。 ローカル postfix に sshさせ、SSHで別サーバーからメール送信させたい。 得られるメリット 1つのPostfixをSSH経由で使い回す。 設定と覚えることがシンプル パスワードを平文保存しなくて…

sendmail コマンドを ssh 経由で呼び出せることに気づいた。

sendmail でメールを送ろうとして苦労してた。 webの問い合わせフォームだとか、php のsendmail をサーバでは使えるが、ローカルでは smart-relay な postfix を設定して試していた。 実にめんどくさいことだった。或る日、コマンドを眺めていて、ふと気づい…

windows のIPアドレスの確認 ・変更( netshと ip の比較 )

windows のIPアドレスの確認 ( netsh ) Windowsには netsh コマンドがあって、IPアドレス関連の各種設定ができる。 netsh の使い方をまとめておく コマンド linux windows IPアドレス確認 ip addr show eth0 netsh interface ipv4 show addresses eth0 v6ア…

LXC のストレージサイズ変更(拡張・縮小)する。

LXC のストレージサイズが足りない。 LXC のストレージのりサイズをなんとかしたいです。容量不足になって困らないようにしたい。調べました。 lxdのリサイズはストレージのフォーマットに従う。 lxd のbtrfsを拡大する場合 lxd のストレージ一覧 bt01 / btr…

dig がエラーを出した。

dig がエラーになってた 名前解決ができない。 dig: isc_nm_udpconnect: network unreachable なんのエラーかと思って調べてたら、v6 で経路が見つからない。というv6ルーティングやv6アドレスのエラーだった。 無理やりv6を指定して、v4 ネームサーバーを指…

lsof でIPを指定する

lsof でIPを指定する lsof で探すときに、指定したIPでリッスンしているものを見たいときにどうするのか、複数のIPがあると明示的に指定したいですね。 ip を@マークで指定する。 lsof では @マークで ip アドレスを指定することができる。 アドレス指定 lso…

aptインストールを速くする(no-install をデフォルト設定とする)

急いでいるときに、すこしでもaptを速くしたい apt の src を高速なミラーとかローカルミラーを使えば少し早くなる。んだけど、それだけだとまだ足りない。 Aptで余計なものを入れなければいいんだと思うんですよね。 apt.conf にrecommends と suggestを除…