GNU ScreenでSSH接続したいならキーバインドを作るより,シェルのエイリアスを使おう

スポンサード リンク
LINEで送る
Pocket

GNU Screen上で楽にSSH接続を実現する方法として,多段キーバインドを設定する方法が広く使われている。例えば,以下のサイトのように。

開発版GNU Screenで楽々ウィンドウ管理 – Keep It Simple, Stupid

私は複数あるサーバに ssh し易いよう、以下のような感じでランチャ風に多段キーバインドを定義しています。

# alias for remote login
# override default `^V'(digraph) mapping
bind ^V eval 'command -c rlogin' 'echo "select server category: [0]  [1]Web [2] [3] [4] [5]DB [6] [7]Test [8] [9]"'
bind -c rlogin 1 eval 'command -c rlogin1' 'echo "login to: (1 Web)  [1]websvr1 [2]websvr2"'
bind -c rlogin 5 eval 'command -c rlogin5' 'echo "login to: (5 DB)   [1]dbsvr1  [2]dbsvr2"'
bind -c rlogin 7 eval 'command -c rlogin7' 'echo "login to: (7 Test) [1]testweb [5]testdb [6]testdb2"'

# (1 Web/)
bind -c rlogin1 1 eval 'screen -t websvr1 11 ssh websvr1' '@group Web/'
bind -c rlogin1 2 eval 'screen -t websvr2 13 ssh websvr2' '@group Web/'
bind -c rlogin1 3 eval 'screen -t websvr3 16 ssh websvr3' '@group Web/'

# (5 DB/)
bind -c rlogin5 1 eval 'screen -t dbsvr1 51 ssh dbsvr1' '@group DB/'
bind -c rlogin5 2 eval 'screen -t dbsvr2 55 ssh dbsvr2' '@group DB/'

# (7 Test/)
## (7 Test/TestWeb/)
bind -c rlogin7 1 eval 'screen -t testweb 701 ssh testweb' '@group TestWeb/'

## (7 Test/TestDB/)
bind -c rlogin7 5 eval 'screen -t testdb 750 ssh testdb' '@group TestDB/'
bind -c rlogin7 6 eval 'screen -t testdb2 755 ssh oracle@testdb2' 'encoding eucjp' '@group TestDB/'

こうするとssh接続のためのローカルのシェルは不要で,とってもスマートな感じになる。だがしかし,Screenの多段キーバインドを使ってしまうと,例えば上記のWebsvr1に接続するキーは ^a^V11 となり,決して打ちやすくない。いちいちCtrlキーなんて押したくないよ…… そのうえScreenのbindは一文字しか設定できないからとっても困る。

ということで,僕はシェルのエイリアスを使うことにした。

$ screen -X eval "hogehoge" 

で起動中のScreenを操作できるので,.bashrcやら.zshrcに

alias w1='screen -X eval "screen -t websvr1 11 ssh websvr1"'

なんて書いてやれば,上記の開発版GNU Screenで楽々ウィンドウ管理 – Keep It Simple, Stupidと同等の機能を実現できる。エイリアスのほうが自由度が高いし,シンプルで使いやすい。

ちなみに,僕の.zshrcでは今まで書きためてきたsshのノウハウ
カレントディレクトリはそのままにssh接続する方法 | PCと遊ぶ日々の記録
sshでログインするときにシェルを変える | PCと遊ぶ日々の記録
sshにパスワードで自動ログインするならexpectよりもsshpassを使おう | PCと遊ぶ日々の記録
を組み合わせているのでゴッチャリとした感じにはなっているが,非常に便利。

関連する記事

LINEで送る
Pocket



カテゴリー: CUIでいこう, コマンドメモ, シェルスクリプト パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
また,TeX の記法で数式を入力する場合は [latexpage] とコメントの最初に入力してください(QuickLaTeX の機能です)。
例: [latexpage] $\frac{1}{2}$

ERROR: si-captcha.php plugin: GD image support not detected in PHP!

Contact your web host and ask them to enable GD image support for PHP.

ERROR: si-captcha.php plugin: imagepng function not detected in PHP!

Contact your web host and ask them to enable imagepng for PHP.