TOOLS

Tools

自分が作成してるツール類についてのページ。基本的にすべて Github で管理している。

Dotfiles

自分のDotfiles。 zsh/bashを使い分けてるのだが、どちらもプロンプトに顔文字を入れるようにしてる(´・ω・`)。

シェル関数

なにかの参考になるかもしれないので、よく使ってる関数だけ抜粋して記述する。

docker_runin/docker_login

使用するdockerコンテナをTUIで選択して起動orログインする。

# docker_runin:
#     Docker Imageをpecoなどで選択して起動する
#         -r ... 事前に定義したrcfileを使ってbashを起動する
#         -e ... 現在の環境変数や関数を読み込んでbashを起動する
#         -v ... ボリュームをマウントする
docker_runin
docker_runin -r -v ~/images/:/images

# docker_login:
#     起動中のDockerコンテナをpecoなどで選択して起動する
#         - r ... 事前に定義したrcfileを使ってbashを起動する
#         - e ... 現在の環境変数や関数を読み込んでbashを起動する
docker_login -r

pping

複数ホストにパラレルでpingをする。 pingの実行結果はタイムスタンプを付けて色付けしてる。

# pping:
#     パラレルで複数のホストにpingをする
#         -n ... pingをする回数
#         -m ... タイムアウト(mill second)
#         -p ... Port(tcp)

# 192.168.0.1-5までにパラレルでpingを行う
pping 192.168.0.{1..5}

# 172.28.10.200-255までにpingを実行してttlでgrepする(疎通が取れたホストだけ抽出する)
pping -n 1 -m1000 172.28.10.{200..255} | grep ttl --line-buffered

# portを指定してpingする
pping -p 8000 127.0.0.1

ddig

複数のホスト名を複数のDNSサーバに名前解決させる。 @hogeでDNSサーバを指定する。

# ddig:
#     複数のホスト・DNSサーバを指定して一気に名前解決の結果を取得する
ddig google.{com,{co.,ne.,}jp,org,net} @{8.8.8.8,1.1.1.1} orebibou.com
$ ddig google.{com,{co.,ne.,}jp,org,net} @{8.8.8.8,1.1.1.1} orebibou.com
google.com in @8.8.8.8: 172.217.175.14
google.com in @1.1.1.1: 216.58.220.142
google.co.jp in @8.8.8.8: 172.217.161.67
google.co.jp in @1.1.1.1: 216.58.220.131
google.ne.jp in @8.8.8.8: 172.217.26.35
google.ne.jp in @1.1.1.1: 172.217.25.195
google.jp in @8.8.8.8: 172.217.175.3
google.jp in @1.1.1.1: 172.217.161.35
google.org in @8.8.8.8: 216.239.32.27
google.org in @1.1.1.1: 216.239.32.27
google.net in @8.8.8.8: 172.217.25.100
google.net in @1.1.1.1: 216.58.197.228
orebibou.com in @8.8.8.8: 157.112.152.17
orebibou.com in @1.1.1.1: 157.112.152.17

imgview

iTerm2用の画像表示のスクリプト関数。

imgview /path/to/imgfile

lssh

Golangで書いてるsshクライアント。 TUIで選択したホストにssh接続する。

以下、特徴。

  • Goのcrypt/sshを使用
  • ssh/scp/sftp別にコマンドを分割
  • sshでのシェル接続対応(vimやpasswdなどもOpenSSHクライアントと同じような感覚で利用できる)
  • 複数ホストでのコマンドの並列実行が可能(parallelssh)
  • ssh agent対応
  • Proxy接続(ssh/http/socks)対応
  • x11 forwarding対応
  • Local/Remote/Dynamic Port forwarding対応
  • ターミナルログの取得対応
  • ssh_configをそのまま読み込み可能

設定ファイル

~/.lssh.confというtomlファイルを作成して利用する。 以下サンプル。

~/.lssh.conf
[common] port = "10022" user = "user" [server.ServerName1] # user port=10022,user=user addr = "192.168.0.101" user = "password" note = "this is a test. password auth" [server.ServerName2] # user port=10022,user=user addr = "192.168.0.102" key = "/path/to/key" note = "this is a test. key auth" [server.ServerName3] addr = "192.168.0.103" port = "22" # overwrite common port number user = "test" # overwrite common user key = "/path/to/key" keypass = "password" note = "this is a test. key auth"

lssh

シェル接続

$ # ホストを選択して接続
$ lssh

$ # 独自シェルを利用して複数ホストに接続する(-s)
$ lssh -s

コマンド実行

$ # コマンドを実行するホストを選択して接続(複数のホストを選択する場合は`Tab`キーで選択)
$ lssh command...

$ # 複数ホストでコマンドを並列に実行する場合は`-p`オプションを付与
$ lssh -p command...

lscp

$ # sftpプロトコルを使ってファイルをコピーする
$ # ローカルのファイルをリモート(複数可)にコピーする
$ lscp /path/to/local r:/path/to/remote

$ # リモート(複数可)のファイルをローカルにコピーする
$ lscp r:/path/to/remote /path/to/local

$ # リモート(複数可)のファイルをリモート(単体)にコピーする
$ lscp r:/path/to/remote r:/path/to/remote

lsftp

$ # 複数ホストにsftpで接続し、専用のシェルを介してファイルをやり取りする
$ lsftp

hwatch

Rustで書いてるCUIツール。watchコマンドのように、定期的に指定したコマンドをするCLIツール。 watchコマンドにhistory管理や実行結果の記録、diff機能を追加している。

diffの有無やどのタイミングの実行結果を表示するかはTUIで都度操作する。

hwatch command...

boco

lssh使用時に接続先で利用するために作成したbash用のfunction。 シェル関数で速度を出すためにgrep、sortコマンドが必要。

command ... | boco