Empowered by expect

希望は体力

sash -stand alone shell

年も明けて、基盤対応等々で今年は使うツールがだいぶ変わっていきそうな予感がしています。ということで現状使っているツールたちを整理がてら紹介しておこうと思います。

最初はsashです。
15年ほど前、「なぜか /usr/bin 以下のバイナリがいくつか消えた」というサーバーの対応をすることが何度かあり(おそらくパイプかfindかで間違った操作が行われたと思われます)、その時から自分が構築するサーバーには保険のためにsashを導入しています。
sashはstand alone shellの名の通り、基本コマンドを組み込みコマンドとして持つので緊急時の作業に役立ちます。

http://members.tip.net.au/~dbell/

More importantly, however, is that many of the standard system commands are built-in to sash. These built-in commands
are:

-ar, -chattr, -chgrp, -chmod, -chown, -chroot, -cmp,
-cp, -dd, -echo, -ed, -grep, -file, -find, -gunzip,
-gzip, -kill, -losetup, -ln, -ls, -lsattr, -mkdir,
-mknod, -more, -mount, -mv, -pivot_root, -printenv, -pwd,
-rm, -rmdir, -sum, -sync, -tar, -touch, -umount, -where
(manより抜粋)

Ubuntuならばuniverseにパッケージがあるのでaptで導入できます。
CentOSの場合はソースからの導入になります。
組み込みコマンドとするために、いくつかライブラリの -static パッケージが必要になります。(RHELの場合は optional-rpms のレポジトリを有効化する必要があります)
以下にitamaeレシピで導入手順を載せておきます。

package "zlib-static" do
  action :install
end

package "glibc-static" do
  action :install
end

package "e2fsprogs-devel" do
  action :install
end

directory "/usr/man/man1"

[
  "wget http://members.tip.net.au/~dbell/programs/sash-3.8.tar.gz",
  "tar xf sash-3.8.tar.gz",
  "cd /opt/local/src/sash-3.8 && make && make install",
].each do |command|
  execute command do
    cwd "/opt/local/src"
  end
end

とはいえ、その後は幸いsashに救われるような危機は経験していません。
そもそも今どきの環境であればロールバックしたり再デプロイしたり、OSのシステム部分が壊れた場合でも力業で直す以外の方法があるだろうとも思います。
そろそろ sash 保険から脱出できるでしょうか...