学校へのSSH接続を自動化した
はじめに
僕はよく学校へSSH接続を行い、そこからプログラミングの課題をやったり提出したりしている。その際にいちいち長いコマンドを打ち、パスワードを入力して接続するのは少々面倒だったので自動化することにした。
expectによる実装
- そもそもexpectってなんぞや? SSH自動化はexpectというもので出来るらしい。(他のでも出来ますがexpectが簡単で分かりやすそうだった) 調べたらexpectとは対話的なプログラムとのやりとりを自動化するプログラムらしい。 今回の場合、向こうからパスワードを聞かれた時それに対して人間がパスワードを入力するがこれを自動化してくれる。
- とりあえずスクリプトを書いてみた 以下の記事を参考にした。 qiita.com
#!/usr/bin/expect set timeout 10 #ssh ユーザ名@ホスト名 spawn ssh username@sshgate.u-hatena.ac.jp expect "Password: " send "ThisIsMyPasswd\n" interact
sshという名前のディレクトリを作ってそこでssh_school.shというファイル名に書いた。
#!/usr/bin/expect
これはそのスクリプトを動かすシェルの宣言。#でコメントアウトしているように見えるがこれがないと動かない。
set timeout 5
タイムアウトする秒を指定しています。
デフォルトだと10秒だがそれだと長いので5秒にしてある。
spawn ssh usename@sshgate.u-hatena.ac.jp
実行したいコマンドを指定。
要するにspawnで指定したコマンドが自動化するコマンドです。
この場合@の前にユーザ名、@の後にホスト名を入れる。
expect "Password: "
expectスクリプトで、相手からの応答(ダブルクォートで囲まれた文字列)を読み取り、パターンマッチをする時に利用します。
この場合向こうから「Password: 」とパスワードを聞かれた場合の文字列である。
send "ThisIsMyPasswd\n"
相手に文字列を返答するコマンドです。
これは"ThisIsMyPasswd"と自分のパスワードを打ってから\nでエンターを入力したという意味だ。
interact
標準入出力をキーボードと画面にします。
スクリプトを書き、そのまま実行しようとしてもパーミッションなんちゃらがでるので
$ chmod u+x ssh_school.sh
で実行権限を付与。
$ ./ssh_school.sh
で見事SSH自動化に成功。これを叩くだけでパズワードを入力する手間をかけずに学校にSSH接続できた。やったね!
その後、自分はzshを使っていたのでzshの環境設定ファイル.zshrcに以下のようなのを追加した。
#.zshrc alias sshs='~/ssh/ssh_school.sh'
でaliasを貼り、これで長いコマンドを打たなくて済み、尚且つどこの場所にいても"sshs"と叩けば学校へのSSHが出来るようになった。
最後に
今回の一つ前に投稿したのが去年の12月。3ヶ月間ブログで書く事がなくてやっと見つけた話題。これからも続けられるか心配だがモチベを上げてやっていこうと思う。AtomからVimに乗り換えた話
はじめに
たったの7ヶ月(笑)しか使っていなかったAtomからVimに乗り越えた。
まずAtomとはGithubが提供しているオープンソースのエディタである。
そしてVimとは設定ファイルの編集やプログラムを書くのに特化したエディタで、
vimスクリプトと呼ばれる独自のスクリプトを使用して高度に機能を拡張することができます。
別にAtomが嫌になって乗り換えたってわけではないです。。
所々と間違っている箇所はあるかもしれないですが、
AtomやVimに興味がある人の参考になればと思います。
Vimに乗り換えた理由
エディタ戦争というものがあってその中でも二大陣営といえるのは、Vim愛好派とEmacs愛好派である。学校では最初の方はEmacsを使っていたので二大陣営のもう片方のVimが興味本位でどういうものか気になったのと、Vimを使っている人が周りにいたからのが使い始めた理由です。
Atomを使った理由
なぜAtomを使っていたかというとおすすめエディタというサイトでAtomを見た瞬間「めっちゃ綺麗で見やすやん!!」と衝動的にインストールして使い始めました笑。
こんな感じ。 またGUIで設定ができるのでそこら辺は、初心者の僕でもあまり抵抗なく使えます。
Vimの環境設定
いきなりAtomの話は終わりますが続いてはVimの環境設定。
カラースキーマは以下のサイトのIcebergというのにした。
github.com
手順
githubからファイルを取得して指定のフォルダへ保存。
$ mkdir -p ~/.vim/colors
$ git clone https://github.com/cocopon/iceberg.vim
$ mv ~/iceberg.vim/colors/iceberg.vim ~/.vim/colors
次にVimの設定ファイルを開き以下の2行を追加。
$ vim ~/.vimrc
".vimrc syntax on colorscheme iceberg
ちなみにVersionは0.6(12月19日現在)
これでカラースキーマの設定は終わり。
次に以下のサイトを見つけた。
qiita.com
とりあえずここにあるコードを丸コピして.vimrcに追加。
さらに行番号に色をつけるコードも追加
autocmd ColorScheme * highlight LineNr ctermfg=93
ちなみに僕は93の紫色を選びましたがこんな感じに他の番号の色もたくさんあります。
h2plus.biz
現段階のUIはこんな感じ。
あと入れるものがないかなとサイトを見ていたらプラグインでNERDTreeというものを見つけた。
何とvimを開きながらディレクトリをツリー表示することができ、ファイルにvimを開きながらアクセスができるプラグインらしい。
あと括弧を自動的に閉じてくれるプラグイン、この2つを追加。
catcher-in-the-tech.net
ここの記事を参考にして以下を追加。
"C-tでツリー表示 nnoremap <silent><C-t> :NERDTreeToggle<CR> "--------------------------- " Start Neobundle Settings. "--------------------------- " bundleで管理するディレクトリを指定 set runtimepath+=~/.vim/bundle/neobundle.vim/ " Required: call neobundle#begin(expand('~/.vim/bundle/')) " neobundle自体をneobundleで管理 NeoBundleFetch 'Shougo/neobundle.vim' " NERDTreeを設定 NeoBundle 'scrooloose/nerdtree' "括弧を自動的に閉じてくれる NeoBundle 'Townk/vim-autoclose' " 今後このあたりに追加のプラグインをどんどん書いて行きます!!" call neobundle#end() " Required: filetype plugin indent on " 未インストールのプラグインがある場合、インストールするかどうかを尋ねてくれるようにする設定 " 毎回聞かれると邪魔な場合もあるので、この設定は任意です。 NeoBundleCheck "------------------------- " End Neobundle Settings. "-------------------------
そして開いてみると
一応環境設定はこれで終わりなので設定ファイルなどはGitで管理して学校でも使えるようにする。
最後にVimを使ってみての感想
まずVimを最初に開いた時
この~がたくさんあるのを見た時ミミズがいっぱいいる..と最初思いってしまいました。
あとキーボードで操作するのがメイン、またkjhlで上下左右に動いたり、
挿入モードやビジュアルモードなどといろんなモードがあるので操作に慣れるまでとても時間がかかりそうです。。
だけど早めにこのシンプルな操作性に一度慣れてもっとカスタマイズしていけたらな〜と思います。