動作しているPostgreSQLのバージョンを調べるには、以下の方法がある。

1.コンソール上から確認する

コンソール上からのバージョン確認は、以下のコマンドで行える。

/usr/pgsql-*/bin/pg_config --version
/usr/pgsql-*/bin/postgres -V
-bash-4.2$ /usr/pgsql-*/bin/pg_config --version
PostgreSQL 9.4.8
-bash-4.2$ /usr/pgsql-*/bin/postgres -V
postgres (PostgreSQL) 9.4.8

...

調べものをしてたところ、コンソール上でパイプで渡して動的にあいまい検索を行い、その行を選択できる『pick』コマンドというものがあったので、ちょっと入れてみることにした。

1.インストール

以下のコマンドを実行し、『pick』コマンドをインストールする。

CentOSなどRHEL系

yum install -y ncurses ncurses-devel
wget https://github.com/thoughtbot/pick/releases/download/v1.4.0/pick-1.4.0.tar.gz
tar xzvf pick-*.tar.gz
cd pi...

Ubuntu 14.04 LTSを16.04 LTSへアップグレードする

Ubuntu 14.04 LTSから16.04 LTSへアップグレードしたい場合、以下のコマンドを実行してやることでアップグレードさせることができる。
事前にupgradeを実行しておくのを忘れないようにしておこう。

sudo apt-get dist-upgrade
sudo do-release-upgrade -d

awkで四則演算や割り算の余りを求める場合。
これは非常に簡単で、以下のようにすればよいだけだ。

awk '{print x + y}' # 加算
awk '{print x - y}' # 減算
awk '{print x * y}' # 乗算
awk '{print x / y}' # 除算
awk '{print x % y}' # 剰余(割り算の余り)
awk '{print x ^ y}' # べき乗

bl...

awkで、指定した列から後ろの列すべてを出力させる場合、forで繰り返し処理をさせるのが楽だ。

awk '{c="";for(i=指定する列;i<=NF;i++) c=c $i" "; print c}'
blacknon@BS-PUB-UBUNTU-01:~$ head /tmp/test7.txt
aaaaa 123 test 1 2
bbbbb 123 test 2 2
ccccc 123 test 3 2
ddddd 123 test 4 2
eeeee 123 test 5 2
fffff 123 test 6 2
ggggg 123 test 7 2
hhhhh 123 t...

Ubuntu 16.04 LTSでGoogle Authenticatorによるワンタイムパスワードを用いたsshログイン時の二要素認証

前回、CentOS 7で『Google Authenticator』によるワンタイムパスワードの二重認証(二要素認証)について設定したので、今回はUbuntu 16.04 LTSでの設定。
といっても、基本的な設定方法は変わらないので、普通に進めていく。

なお、すでに公開鍵認証の設定は済んでいるものとする。

1.Google Authenticatorのインストール

まずは、『Google Authenticator』のインストール。
Ubuntuではapt-getでそのままインストールができる。以下のコマンドを実行する。

sudo apt-get install libp...

awkでは、桁数が多い数字(小数点以下を含め、7桁以上)の出力を行うと、デフォルトだと科学表記法(10のべき乗。指数表記とも)で表示されてしまう。

[root@BS-PUB-CENT7-01 ~]# echo "123456789.87654321 94" |awk '{print $1/$2}'
1.31337e+06

これは、awkでは、組み込み変数「OFMT」で返り値の書式を設定できるのだが、そのデフォルトが「%.6g(科学表記か浮動小数点、出力する文字数が少ない方を自動的に選択する)」となっているためだ。
つまり、コマンド実行の際に「OFMT」の設定をし直すか、もしくはpri...


CentOS 7でGoogle Authenticatorによるワンタイムパスワードを用いたsshログイン時の二要素(三要素)認証

家のサーバにて、テストとしてsshログイン時の二要素認証の設定をしたのでその備忘。
sshログイン時の二要素認証だと、Googleの提供している『Google Authenticator』を用いての設定が多いので、今回はそれで設定する。

なお、インストール先のOSはCentOS 7を用い、すでに鍵認証でのログイン設定は行われているものとする。

1.Google Authenticatorのインストール

まずは、以下のコマンドで『Google Authenticator』をインストールする上で前提となるパッケージを導入してやる。

sudo yum -y groupinsta...

awkで2行目以降の行のみで処理を行わせる場合、NR(awkで何行目かを認識する変数)を用いて、以下のようにすればよい。

awk 'NR>1{処理内容}'
blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test.csv
id,user,value
1,aaa,1223
2,bbb,3333
3,ccc,855
4,ddd,998
5,eee,24354
6,fff,345
7,ggg,325
8,hhh,22
9,iii,4657
10,jjj,896
blacknon@BS-PUB-UBUNTU-01:~$ awk -F, 'NR>1{print $2}...

Linuxで、root以外のユーザでOSの設定ファイルに追記しようとすると、リダイレクトの際にちょっと面倒な書き方をしなきゃいけなくて億劫。
で、sudoでやるならsedで書けるな、という点に気づいたので、備忘&忘れて検索したときに引っかかるよう残しておく。

sed '1i 文字列' ファイルPATH
sed '$a 文字列' ファイルPATH

awkで、最後の行のみを出力して処理を行わせる場合、以下のようにすればよい。

awk 'END{処理内容}'
[root@BS-PUB-CENT7-01 ~]# cat /tmp/test4.txt
1 aaaa
2 bbbb
3 cccc
4 dddd
5 eeee
6 ffff
[root@BS-PUB-CENT7-01 ~]#
[root@BS-PUB-CENT7-01 ~]# # 最終行のみ表示
[root@BS-PUB-CENT7-01 ~]# cat /tmp/test4.txt | awk 'END{print}'
6 ffff
[root@BS-PUB-CENT7-01...

LinuxやMacでCUIの操作をしていると、英語のドキュメントしかない場合が多い。
簡単な英語とか、ヘルプみたいな短文だったら問題ないが、疲れてるときに長文のドキュメントとか読む気にならないし、正直面倒くさい。

そんなときには、この『translate-shell』というコマンドが便利そうなので、ちょっと触ってみることにする。
このコマンド、簡単に説明するとGoogle翻訳をコンソール上から行ってくれる、というコマンドだ。

1.インストール

まずはインストールから。
以下のコマンドを実行する。

git clone https://github.com/soimort...

ネットで調べものをしていたところ、コンソール上で複式簿記の記帳や計算のできるコマンド『Ledger』というものを見かけた。
結構昔からあるコマンドのようだが、今まで知らなかったので試しに使ってみることにする。一応、日本語での勘定項目の記述もできるようだ(ただ、残念ながら単位として日本円は使えなさそう…)。

これで家計簿をつける、というのもできそうだ。

1.インストール

インストールは簡単。
以下のコマンドで行える。

CentOSなどのRHEL系

yum install ledger

Debian/Ubuntu系

apt-get install ledger
...
motd用のテキスト生成ツール『FireMotD』

以前、motdの内容を動的に変更させる方法について記述したことがあったが、その際に使えそうな『FireMotD』というものを見かけた。

1.インストール

まずはインストールから。
以下のコマンドで、前提となるパッケージを導入する。

CentOSなどRHEL系

sudo yum install openssh-clients bc sysstat mpstat

Debian/Ubuntu系

sudo apt-get install bc sysstat mpstat

前提となるパッケージを入れたら、以下のコマンドで『FireMotD』をインストールする。

...
ログなどでキーワードをハイライト表示させるのに便利なコマンド『rainbow』

先日紹介した『colout』と似たようなコマンドで、『rainbow』というコマンドがあるので今回はそれを触ってみる。

1.インストール

まずはインストール。
以下のコマンドを実行する。

git clone git://github.com/nicoulaj/rainbow.git
cd rainbow
sudo python setup.py install

2.使ってみる

インストールされたr...


ファイルの圧縮方式に合わせて自動的に解凍してくれる『dtrx』コマンド

ネットサーフィンをしていたところ、tarやzip、rarなどファイルの圧縮方式に合わせて解凍をしてくれる『dtrx』コマンドなるものがあることを知ったので、試してみる。

1.インストール

以下のコマンドでインストールできる。

RHEL系

wget http://brettcsmith.org/2007/dtrx/dtrx-7.1.tar.gz
tar -xvf dtrx-7.1.tar.gz
cd dtrx-7.1
python setup.py install --prefix=/usr/local

Debian/Ubuntu系

sudo apt-get inst...

CentOS 7にブラウザベースのログモニタリングツール『log.io』を入れてみる

ログの監視について調べていたところ、ブラウザでSyslogを閲覧、フィルタリングすることができるモニタリングツール『log.io』なるものがあることを知ったので、試しに入れてみることにした。
今回は、CentOS 7にこのツールをインストールし、実際にアクセスしてみる。

ちなみに、こちらにデモページが用意されている。
インストール前に触ってみたい人は最初にこちらをいじってみた方がいいだろう。

1.インストール・起動

まずはインストールから。
npmでインストールできるので、以下のコマンドでインストールできる。

sudo yum install npm
sudo n...

会社で、OpenStack上に作成して動かしてたVMをKVMホストに移行させる必要があったので、備忘として残しておく。
といっても大したことは特に必要ない。以下の流れに沿って作業を行うだけだ。

1.OpenStack上でスナップショットを取得する

OpenStack上で、対象の仮想マシンのスナップショットを取得する。
これは、(OSのアップデート中とか高負荷状態でないなら)VMの動作中でも構わない。

スナップショットの取得も特殊なことは必要なく、普通にブラウザから対象のVMを選択してスナップショットの取得を行うだけだ。

2.スナップショットのデータ(仮想HDDデータ)を取得

...

LinuxやMac OS Xを使っていると、findコマンドで取得したファイルをすべてアーカイブ化したり圧縮したりしたいことがある。
そんなときは、以下のようにすればよい。

1.tarでアーカイブ化する

GNU拡張のfindコマンドを使う場合

GNU拡張のfindコマンドを使っている場合、-execでtarコマンドを呼び出してやればよい。
ただ、ここでできるのはあくまでもアーカイブ化(一つのファイルにまとめる)ことだけで、圧縮(zip化)はできないという点。

find ファイルPATH <検索条件> -exec tar -rvf 作成するアーカイブファイルPATH {} \...

Mac/Ubuntuで使えるBSDのテキスト整形用ツール『rs』コマンドを使ってみる

ふとtwitterみてたら、rsコマンドなるものを使って処理しているものがあったので、ちょっと調べつつ使ってみることにした。
どうやらBSDで使われていたデータ処理のコマンドのようで、ちょっとしたバグはあるようだけど、いろんな使い道があるようだ。日本語のmanはこちら

一応Mac OS Xには最初から、Ubuntuには以下のコマンドでインストールすることができる。

sudo apt-get install rs

以下、いくつかの使い方をピックアップする。

1.複数の列に分割する

以前にこちらでも触れたのだが、pasteのように標準出力で受けた列を、複数の列に分割...


sedやgrepなどを使って、ダブルクォーテーションやシングルクォーテーションに囲まれた文字列を抽出する方法についてを記述する。
基本的にはsedでいいと思うけど、念のため他のやり方についても書いておく。

1.sed

sedでダブルクォーテーションやシングルクォーテーションに囲まれた文字列を抽出する場合は、以下のようにする。

sed 's/^.*"\(.*\)".*$/\1/' # ダブルクォーテーションの場合
sed "s/^.*'\(.*\)'.*$/\1/" # シングルクォーテーションの場合
blacknon@BS-PUB-UBUNTU-01:~$ echo 'aaa...

sedで改行を置換・削除する

sedでは、普通に「\n」を指定しただけだと改行の削除や置換を行うことができない。

blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test1.txt
1.aaa
2.bbb
3.ccc
4.ddd
blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test1.txt | sed 's/\n//g'
1.aaa
2.bbb
3.ccc
4.ddd

じゃ、どうした...


ポケモン版のcowsayコマンド『pokemonsay』

調べもの中に、昔からあるジョークコマンド『cowsay』のポケモン版として『pokemonsay』というものが有志によって作られていることを知ったので、ちょっといじってみた。
AsciiArtというより、GBA版あたりのドット絵をANSIArtで表現しているような感じ。

1.インストール

インストール前に、依存している『cowsay』『fortune』をインストールしておく必要がある。

CentOSなどRHEL系

yum install fortune-mod.x86_64
rpm -ihv http://www.melvilletheatre.com/article...

通常のgrepコマンドではあいまいな検索は行えないのだが、時折うろ覚えなキーワードでもgrepしてもらいたいこともある。
そんなときは、あいまい検索を行えるgrepとして『agrep』コマンドというものがある。

1.インストール

まずはインストールから。
以下のコマンドでインストールできる。

sudo yum install agrep # RHEL系
sudo apt-get install agrep # Debian/Ubuntu系


wgetコマンドよりも便利で速い『axel』コマンド

ちょっと調べものをしていたところ、wgetコマンドよりも使い勝手のよさそうなダウンロードツール『axel』コマンドというものを見かけたので、ちょっと試してみることにした。
セッション数を指定することで、その数に分割してダウンロードを実行するので、10分割位にすれば普通にダウンロードしてくるよりも速くなる。

…まぁ、もちろんその分だけリソースを食うので、他の人のネットワーク速度が遅くなるかもしれないが。

1.インストール

まずはインストール。
以下のコマンドを実行する。

CentOSなどRHEL系

rpm -ihv http://pkgs.repoforge.org/ax...

sedで、例えばファイルの頭から数えて○行、後ろから数えて○行に対して処理を行わせる、といった場合、以下のようにする。

前から

前から数行を指定するのは簡単で、以下のようにすればよい。

sed '1,n 処理内容'
blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test5.txt
     1  aaaaa123
     2  bbbbb123
     3  ccccc123
     4  ddddd123
     5  eeeee123
     6  fffff123
     7  ggggg123
     8  hhhhh123...

2018/04/26 一部コマンドを修正+追記

xargsとブレース展開を使うことで、うまいこと逆順に出力させることも可能だ。

コマンド | xargs -L1 bash -c 'eval eval echo \\\${$#..0}'
blacknon@BS-PUB-UBUNTU-01:~$ echo {a..e}{01..05} | xargs -n5
a01 a02 a03 a04 a05
b01 b02 b03 b04 b05
c01 c02 c03 c04 c05
d01 d02 d03 d04 d05
e01 e02 e03 e04 e05
blacknon@BS-PUB...