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