この記事は openSUSE Advent Calendar の2日目です。

今回は highlight を紹介します。

パッケージ名 highlight
バージョン highlight-4.1-1.3.x86_64
動作 ○
詳細
テキストを読み込んで、色を付けて表示するツールです。出力形式は平文のほかに HTML や RTF、ODT、SVG などが選べます。オプションを付けないと平文が生成されます。

HTML出力をすると、色を付けたHTMLテキストが生成されます。ODT への変換もメニューにあるのですが、結果ファイルは、LibreOffice 7.1 では開けませんでした。そのかわり、RTF 形式では、LibreOffice 7.1で開くことが出来ました。


テキストを簡単に見やすくして表示させる場合には便利に使えると思います。

この記事は openSUSE Advent Calendar の1日目です。

今回は、 headmore を紹介します。

パッケージ名 headmore
バージョン headmore-1.2-1.16.x86_64
動作 △
テキストベースのVNC クライアントです。しかし、一応画面は表示されるのですが(ここではWindowsに繋いでいます)、GUIな画面をテキストで表示しているため、大まかな雰囲気が掴めるという感じでしかありません。ものすごくズームすれば、大まかな形は分かりますが。


取りあえずコンソールから、GUIな画面がおおよそどうなっているかを簡単に確認するときには便利に使えるかもしれません。

前回は S でしたが、今回は A です。

パッケージ名 ansifilter
バージョン ansifilter-2.18-1.5.x86_64
動作 △
詳細
テキスト中の ANSI エスケープシーケンスを取り去ったり、HTMLなどの形式に変換できます。たとえば、script コマンドで、ANSI エスケープシーケンス付きのメッセージを記録したのち、それをテキストとして利用するときなどには便利に使えます。

ただし、漢字についてはうまくいかない場合がかなりあります。また、HTML 変換については、エスケープシーケンスを落として変換、すなわち、色とかの情報がまるまる落ちて変換されます。ここはちょっと惜しいところです。
漢字が含まれていない、typescript の結果を整理する場合などには便利に使えそうです。

パッケージ名 arping2
バージョン arping2-2.21-1.5.x86_64
動作 ◎
詳細
ICMP のほかに、ARP を使って相手との疎通を確認するツールです。ICMP echo に反応しない機器との疎通を確認できます。但し、root でないと動きません。

# ping -c 4 192.168.A.BB
PING 192.168.A.BB (192.168.A.BB) 56(84) bytes of data.

--- 192.168.A.BB ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3058ms

tw:~ # arping2 -c 4 192.168.A.BB
ARPING 192.168.A.BB
42 bytes from a6:3a:xx:yy:zz:98 (192.168.A.BB): index=0 time=487.929 usec
42 bytes from a6:3a:xx:yy:zz:98 (192.168.A.BB): index=1 time=362.456 usec
42 bytes from a6:3a:xx:yy:zz:98 (192.168.A.BB): index=2 time=356.881 usec
42 bytes from a6:3a:xx:yy:zz:98 (192.168.A.BB): index=3 time=389.354 usec

--- 192.168.A.BB statistics ---
4 packets transmitted, 4 packets received,   0% unanswered (0 extra)
rtt min/avg/max/std-dev = 0.357/0.399/0.488/0.053 ms

たとえば、Windows Server の既定状態のような機器との疎通を確認するには便利に使えそうです。

前回は T でしたが、今回は S です。

パッケージ名 scout
バージョン scout-0.2.4+20210325.6c2d9f3-1.1.noarch
動作 △
詳細
コマンドが見つからない場合、パッケージ内にあれば、そのパッケージを表示してくれるツールです。たとえば、

> scout bin sdl-config
 リポジトリ                            | パッケージ        | パス       | バイナリ
----------------------------------+--------------+----------+------------
 zypp (openSUSE-20210325-0)       | libSDL-devel | /usr/bin | sdl-config
 zypp (download.opensuse.org-oss) | libSDL-devel | /usr/bin | sdl-config

というような感じになります。
ただ、日本語で表示するとカラムがずれてしまうこと、マニュアルに書いた例題が、上記以外では動作しないこと(python のエラーになります)があるので、使えるかどうかは微妙なところです。

パッケージ名 sc
バージョン sc-7.16-13.26.x86_64
動作 ◯
詳細
コンソールで動くスプレッドシートです。但しちょっとくせがあります。文字はそのまま入力できず、必ずプレフィックスをつける必要があります。例えば、数字や数式を入力する際には、まず = キーを押してから、入力したい文字列を入れます。
文字列も入りますが、日本語文字列は、UTF-8環境では入りませんでした。
カーソル移動は矢印キーのほかに、h、j、k、l の vi 風キーバインドでも使えます。
関数は @sum とか @lookup とか、@logとか、最低限のものは揃っているようです。
sc は、大昔のPC を知っている人ならば、 VisiCalc だと思えば感覚が掴めるかと思います。

パッケージ名 socat
バージョン socat-1.7.4.1-1.4.x86_64
動作
詳細
種々のソケットによる通信を中継してくれるツールです。IPv6 にも対応し、種々のネットワークオプションや細かな制御のためのオプションも用意されています。
一番簡単な使い方としては、ファイアウォールの内側にあるサーバに対して、入口のサーバに socat を設定しておき、socat 経由で接続するというやり方でしょう。あるいは直接ルーティングされていないセグメントへの接続時にも使えます。
たとえば、192.168.x.0 のセグメントから、172.31.y.0 のセグメントにあるサーバを経由し、 172.16.z.0 のセグメントにあるマシンに繋ぐには以下のようにします(ここでは、daytime プロトコルを起動しておいてそこに繋ぎます)。

socat tcp4-listen:8089,reuseaddr,fork tcp:172.16.z.zz:13

結果はこうなります。

% telnet 172.31.y.yy  8089
Trying 172.31.y.yy...
Connected to susedev.
Escape character is '^]'.
28 APR 2021 18:00:15 JST
Connection closed by foreign host.

このようにすることで、2段階のログインをしなくとも172.16.z.0 のセグメントにあるマシンに接続することが出来ます。

前回は Q でしたが、今回は T です。

パッケージ名 tcptraceroute
バージョン tcptraceroute-1.5.beta7-lp152.48.5
動作 ○
詳細
tcp を使った traceroute と同等の機能を実行するツールです。ICMP ではなくて、TCPで特定のポートを叩く形で traceroute 相当の出力を表示します。インストール時にはlibnet9-1.2~rc3-lp152.3.4 も必要となります(自動でインストールされます)。また、Thumbleweed には入っていません。LEAP のみです。
とあるサーバにtraceroute をしてみてもうまく動かなかったのですが、ポート 22 を指定して tcptraceroute を実行したところ、うまく表示できました。

% traceroute -n 210.171.174.178
traceroute to 210.171.174.178 (210.171.174.178), 30 hops max, 60 byte packets
 1  172.31.255.254  0.875 ms  0.529 ms  0.612 ms
 2  124.155.82.121  26.090 ms  25.900 ms  25.712 ms
 3  124.155.82.69  25.762 ms  25.571 ms  25.651 ms
 4  124.155.82.2  25.465 ms  25.627 ms  25.441 ms
 5  202.224.52.170  62.408 ms  62.183 ms  61.993 ms
 6  202.224.52.5  24.652 ms  27.474 ms  27.147 ms
 7  202.224.52.13  27.300 ms  16.913 ms  16.556 ms
 8  203.190.230.13  16.553 ms  16.760 ms  16.508 ms
 9  61.211.190.90  16.626 ms  16.458 ms 61.211.190.98  16.564 ms
10  219.124.151.210  16.147 ms  20.514 ms  19.783 ms
11  210.171.170.10  19.491 ms  19.283 ms  8.395 ms
12  210.171.170.34  7.396 ms  18.154 ms  17.967 ms
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

% tcptraceroute -n 210.171.174.178 22
Selected device eth0, address 172.31.255.189, port 57123 for outgoing packets
Tracing the path to 210.171.174.178 on TCP port 22 (ssh), 30 hops max
 1  172.31.255.254  0.614 ms  0.723 ms  0.702 ms
 2  124.155.82.121  4.183 ms  3.435 ms  3.461 ms
 3  124.155.82.69  4.362 ms  4.036 ms  3.909 ms
 4  124.155.82.2  3.690 ms  3.572 ms  4.257 ms
 5  202.224.52.170  6.843 ms  6.607 ms  10.887 ms
 6  202.224.52.5  6.634 ms  6.954 ms  6.597 ms
 7  202.224.52.13  5.601 ms  4.822 ms  5.065 ms
 8  203.190.230.13  5.674 ms  6.073 ms  7.402 ms
 9  61.211.190.90  6.423 ms  5.553 ms  6.690 ms
10  219.124.151.214  5.680 ms  6.735 ms  5.742 ms
11  210.171.170.10  6.646 ms  6.523 ms  7.012 ms
12  210.171.170.34  5.233 ms  7.322 ms  6.962 ms
13  192.168.3.252  10.616 ms  6.878 ms  10.268 ms
14  210.171.174.178 [open]  8.053 ms * *

ただ、万能ではないようです。Azure の中にある仮想マシンに、 tcptraceroute をポート 3389 や port 22 で実行してみたのですが、やはり繋がりませんでした。

パッケージ名 tdiff
バージョン tdiff-0.8.5-3.6.x86_64
動作 ◎
詳細
ディレクトリの比較をするコマンドです。diff とは違い、ファイルの差分を取るわけではありません。ディレクトリ中のファイルについて、日付や属性などを比較するためのツールです。たとえば、このような感じになります。

# tdiff . /home/ribbon
tdiff: (top-level): mode: 0700 0755
tdiff: (top-level): uid: root(0) ribbon(1000)
tdiff: (top-level): gid: root(0) users(100)
tdiff: (top-level): nlink: 9 21
tdiff: .bash_history: uid: root(0) ribbon(1000)
tdiff: .bash_history: gid: root(0) users(100)
tdiff: .bash_history: size: 1382 3546
tdiff: .bash_history: contents differ
tdiff: .bashrc: only present in /home/ribbon
tdiff: .cache: uid: root(0) ribbon(1000)

また、-v オプション( -vv,-vvv,-vvvv もあります)を指定すると統計情報を出力します。

tdiff: inode cache statistics:
 Hashing statistics for inode cache (@0x55916e3e4610):
    Table size              :      101
    Entry count             :       11
    Occupied buckets        :       10
    Distribution efficiency :    90.91%
    Average bucket length   :      1.1
    Max bucket length       :        2
tdiff: end

そのほかにもオプションが多数あります。数字の0 から 9 までのオプションを指定すると、チェックする項目が徐々に増えていくようになっています。

# tdiff -0 .local /home/ribbon/.local
# tdiff -1 .local /home/ribbon/.local
tdiff: share/RecentDocuments: only present in /home/ribbon/.local
tdiff: share/baloo: only present in /home/ribbon/.local
tdiff: share/flatpak/.changed: only present in .local
(略)
# tdiff -2 .local /home/ribbon/.local
tdiff: (top-level): mode: 0755 0700
tdiff: share/RecentDocuments: only present in /home/ribbon/.local
tdiff: share/baloo: only present in /home/ribbon/.local
tdiff: share/flatpak: mode: 0700 0755
tdiff: share/flatpak/.changed: only present in .local
(略)
# tdiff -3 .local /home/ribbon/.local
tdiff: (top-level): mode: 0755 0700
tdiff: (top-level): uid: root(0) ribbon(1000)
tdiff: (top-level): gid: root(0) users(100)
tdiff: share: uid: root(0) ribbon(1000)
tdiff: share: gid: root(0) users(100)
tdiff: share/RecentDocuments: only present in /home/ribbon/.local
tdiff: share/baloo: only present in /home/ribbon/.local
tdiff: share/flatpak: mode: 0700 0755
tdiff: share/flatpak: uid: root(0) ribbon(1000)
tdiff: share/flatpak: gid: root(0) users(100)
tdiff: share/flatpak/.changed: only present in .local
(略)

tdiff は、ファイルの有無や、属性の違いなどを一気に調べるときに便利に使えそうです。

前回は D でしたが、今回は Q です。Qt関連のパッケージが多く存在していました。

パッケージ名 qdirstat
バージョン qdirstat-1.7-1.6.x86_64
動作 ◎
詳細
グラフィカルにディスクの使用量を見たり、ファイルやディレクトリの操作をするツールです。Qt ベースで動きます。見栄えはかなり良いです。

面白いのは、下部に表示されている図で、これは、各ファイルの大きさをベースにしたイメージです。例えば、ある大きな模様の所をクリックすると、そのイメージに対応するファイルに移動することが出来ます。

さらに、右クリックで種々の操作を選ぶことも出来ます。

qdirstat は、ディレクトリを渡りながら、ディスクの掃除をするときなどに便利に使えそうです。

前回は O でしたが今回は Dです。

パッケージ名 datefudge
バージョン datefudge-1.24-1.3.x86_64
動作 ◎
詳細
datefudge はシステム時刻をごまかすユーティリティです。例えば以下のようになります。

% date
2021年  4月  3日 土曜日 22:09:35 JST
% datefudge "2007-04-01 10:23" date
2007年  4月  1日 日曜日 10:23:00 JST
% datefudge "2 weeks ago" date
2021年  3月 20日 土曜日 22:11:39 JST

さらに、 –static オプションというのがあり、これを使うと、日付を固定してしまうことが出来ます。

% datefudge "2007-04-01 10:23" sh -c "sleep 3; date"
2007年  4月  1日 日曜日 10:23:03 JST
% datefudge --static "2007-04-01 10:23" sh -c "sleep 3; date"
2007年  4月  1日 日曜日 10:23:00 JST

このように、3秒後でも時刻が変わっていません。
datefudge は、時刻に絡んだテストや、テスト結果の取得時に便利に使えそうです。

パッケージ名 datamash
バージョン datamash-1.7-1.9.x86_64
動作 ◎
詳細
datemash は、種々の演算をコマンドライン上で行えるツールです。たとえば、行や列の処理、数値の集計、統計機能などがあります。dirname(1) 、 basename(1)、cut(1)などの機能を持っています。
たとえば中身が

%cat sar.txt
06:25:01        %user   %nice   %system %iowait %steal  %idle
06:35:01        7.26    0.00    1.18    0.06    0.00    91.51
06:45:01        7.23    0.00    1.19    0.04    0.00    91.54
06:55:01        7.89    0.00    1.34    0.13    0.00    90.65
07:05:01        7.23    0.00    1.24    0.04    0.00    91.49
07:15:01        7.61    0.00    1.32    0.10    0.00    90.96
07:25:01        7.69    0.00    1.32    0.06    0.00    90.93
07:35:01        7.62    0.00    1.31    0.05    0.00    91.02

となっているファイルの縦横は、

% datamash  transpose <sar.txt
06:25:01        06:35:01        06:45:01        06:55:01        07:05:01        07:15:01        07:25:01  07:35:01
%user   7.26    7.23    7.89    7.23    7.61    7.69    7.62
%nice   0.00    0.00    0.00    0.00    0.00    0.00    0.00
%system 1.18    1.19    1.34    1.24    1.32    1.32    1.31
%iowait 0.06    0.04    0.13    0.04    0.10    0.06    0.05
%steal  0.00    0.00    0.00    0.00    0.00    0.00    0.00
%idle   91.51   91.54   90.65   91.49   90.96   90.93   91.02

と言うように変換できます。また、2列目の合計と平均を出すには、

%  tail -n +2 sar.txt |datamash sum 2 mean 2
52.53   7.5042857142857

とします(最初の1行が非数値を含む行なのでスキップしています)。
datamash を使うと、awk などを駆使したり、perlや python などで小さなプログラムを書いていた処理を書かなくても済む可能性があります。うまく使えば作業の効率化に繋がりそうです。

パッケージ名 dfc
バージョン dfc-3.1.1-2.6.x86_64
動作 ◎
詳細
コンソール上で見栄え良くディスクの使用状況を表示するツールです。df の見栄えが良い版です。たとえば、

% df
ファイルシス   1K-ブロック    使用  使用可 使用% マウント位置
devtmpfs           4961412       0 4961412    0% /dev
tmpfs              4972560       0 4972560    0% /dev/shm
tmpfs              1989028    1172 1987856    1% /run
tmpfs                 4096       0    4096    0% /sys/fs/cgroup
/dev/sda2         14669824 6630060 8039764   46% /
tmpfs              4972564       0 4972564    0% /tmp
/dev/sda3          8581120 1338444 7242676   16% /home
tmpfs               994512      16  994496    1% /run/user/461
tmpfs               994512      12  994500    1% /run/user/1000

の時に、

のように表示されます。また、dfc にはいくつかオプションがあり、

% dfc -e csv
FILESYSTEM,%USED,AVAILABLE,TOTAL,MOUNTED ON
devtmpfs,0%,4.7G,4.7G,/dev
tmpfs,0%,4.7G,4.7G,/dev/shm
tmpfs,0%,1.9G,1.9G,/run
tmpfs,0%,4.0M,4.0M,/sys/fs/cgroup
/dev/sda2,45%,7.7G,14.0G,/
tmpfs,0%,4.7G,4.7G,/tmp
/dev/sda3,16%,6.9G,8.2G,/home
tmpfs,0%,971.2M,971.2M,/run/user/461
tmpfs,0%,971.2M,971.2M,/run/user/1000

というように、csv 形式で表示させることも出来ます。そのほか、html,json,tex 形式でも出力させることが出来ます。これは、出力結果を何らかの形で加工したり、そのまま表示させるようなときに便利です。
このコマンドは、df の代わりに常用して使っても良いコマンドでしょう。

パッケージ名 dhex
バージョン dhex-0.69-1.11.x86_64
動作 ◎
詳細
curses ベースで動く16進エディタ+ファイル比較ツールです。最初に起動すると、キーの定義を行います。その後、実作業に移ります。

下記の画面が、キーの定義をした後の画面です。先に定義したカーソルキーで自由にカーソルを動かすことが出来ます。カーソル位置の値は直接書き換えることが可能です。

また、2つのファイルのバイナリ比較をすることも出来ます。

dhex は ちょっとしたデータの修正や結果の比較などに使うのであれば便利に使えそうです。

パッケージ名 dhtest
バージョン dhtest-1.5-2.5.x86_64
動作 ◎
詳細
dhtest は、DHCP 要求を送ってIPアドレスを取得するためのテストプログラムです。結果を NIC に割り当てるとかはせず、単にDHCPリース操作を行わせるためだけのプログラムです。実行した例は以下の通りです。

# dhtest -i ens18 -L 180
DHCP discover sent       - Client MAC : 4a:23:a6:ba:3a:b1
DHCP offer received      - Offered IP : 192.168.3.214
DHCP request sent        - Client MAC : 4a:23:a6:ba:3a:b1
DHCP ack received        - Acquired IP: 192.168.3.214

DHCP サーバのテストをするときに覚えておくと良いかもしれません。