SlideShare a Scribd company logo
1 of 27
地味に便利な自作の鯖管コマンド

    id:shoichimasuhara
■ 自己紹介
はてなid:shoichimasuhara
Twitter:@shoichimasuhara
はてなバイト新入社員 (3月から)
鯖管
日頃はなぜかPerlの会社でRuby書いてます
Kyoto.pmで鯖管?
さて本題
地味に便利な自作の鯖管コマンド
  っぽいものを作ってみた
サーバってどうやって管理してますか?

   (※インフラな人向け)
■ 数百台ならまだしも
数千台オーダになると全台手作業とかムリ
PuppetとかChefとか使ってますよね
設定ファイルをgitで管理とか


サーバの設定がまちまちだと管理しにくい
頑張っているものの

   たまに
「あれ、あのファイル、
  入ってるホストと
 入ってないホストが
   あるっぽいぞ?
 今すぐリスト出せ」
なんてことがあります
そんな時には
同時ログインSSHコマンド
たとえば
CSSH
■ CSSH
使い方
 ホストリスト渡すと一気にターミナルが開いて同時ロ
  グインができる
 キーボードを打つと全台に入力される
メリット
 目視しながら同時にコマンド実行できる
デメリット
画面サイズ足りな
    い
■ 他…
mssh
 Man見る限り機能が貧弱そう
Gnu parallelとかxargsとか
 コマンドライン書くのも覚えるのも面倒
他にも似たようなのはある
 Capistranoもできたような…?
 調べるほど必要でもない…
ということで作りました
parascript
なにはさてより D   E M O ります
■ 基本設計
ssh batchモード
 ssh -o BatchMode=yes
StrictHostKeyCheckはしない…
 ssh -o StrictHostKeyChecking=no
コマンドライン、スクリプトをbase64encode
 向こう側でデコード
 echo $encoded_command |base64 -d -i|sh
 e c h o a G 9 z d G 5 h b W U = |b a s e 6 4 - d
■ sudoするには
sudo -S でパスワードを標準入力
最後のshをsudoしたいけど、コマンド・スクリ
 プト本体を送るために標準入力使ってる
なので実行するコマンド全部を文字列にし
 て、sh -c に食わせましょう
まとめて書くとこんな感じ
(passwd)→|sudo -S sh -c 
'echo d2hvYW1p|base64 -d -i|sh'
■ SSH標準入出力と並列実行
パスワード入力の標準入力
結果の標準出力、標準エラー出力
これらを簡単に扱いたい
→ use Net::SSH qw/ sshopen3 /;
並列実行
→ ごく普通にParallel::ForkManager
結果とか
■ 注意点・課題
base64コマンド必須
鍵認証前提
 そのあたりの柔軟性どうしよう
セキュリティ甘め
デストリビューション混在時にちゃんと動作する
 かどうか…
すでにFreeBSDで不具合報告
地味に便利です
ご清聴ありがとうございました

More Related Content

What's hot

MySQL Casual Talks Vol.3 LT
MySQL Casual Talks Vol.3 LTMySQL Casual Talks Vol.3 LT
MySQL Casual Talks Vol.3 LT
Tomohiro Ikeda
 
古い?ダサい?まだまだイケルChef!
古い?ダサい?まだまだイケルChef!古い?ダサい?まだまだイケルChef!
古い?ダサい?まだまだイケルChef!
Naoto Ishizawa
 

What's hot (20)

初心から一週間で作ってみた Kinesis Client Library for Go
初心から一週間で作ってみた Kinesis Client Library for Go初心から一週間で作ってみた Kinesis Client Library for Go
初心から一週間で作ってみた Kinesis Client Library for Go
 
CoffeeScript+enchant.jsでクロージャが気持よくかけた話
CoffeeScript+enchant.jsでクロージャが気持よくかけた話CoffeeScript+enchant.jsでクロージャが気持よくかけた話
CoffeeScript+enchant.jsでクロージャが気持よくかけた話
 
What webpage calls.
What webpage calls.What webpage calls.
What webpage calls.
 
やってよかったOS作り
やってよかったOS作りやってよかったOS作り
やってよかったOS作り
 
redashのプラベートカタログ作成してつまづいたアレやコレや
redashのプラベートカタログ作成してつまづいたアレやコレやredashのプラベートカタログ作成してつまづいたアレやコレや
redashのプラベートカタログ作成してつまづいたアレやコレや
 
apasec001-kawai
apasec001-kawaiapasec001-kawai
apasec001-kawai
 
第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会
 
K初めてのstylus
K初めてのstylus K初めてのstylus
K初めてのstylus
 
Vagrant chef
Vagrant chefVagrant chef
Vagrant chef
 
Bashで競技プログラミング #w8lt #w8lt4
Bashで競技プログラミング #w8lt #w8lt4Bashで競技プログラミング #w8lt #w8lt4
Bashで競技プログラミング #w8lt #w8lt4
 
八王子
八王子八王子
八王子
 
MySQL Casual Talks Vol.3 LT
MySQL Casual Talks Vol.3 LTMySQL Casual Talks Vol.3 LT
MySQL Casual Talks Vol.3 LT
 
Zabbix study5lt
Zabbix study5ltZabbix study5lt
Zabbix study5lt
 
古い?ダサい?まだまだイケルChef!
古い?ダサい?まだまだイケルChef!古い?ダサい?まだまだイケルChef!
古い?ダサい?まだまだイケルChef!
 
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメWeb時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
 
Dockerstart
DockerstartDockerstart
Dockerstart
 
Ansible meetup201409
Ansible meetup201409Ansible meetup201409
Ansible meetup201409
 
Tips for bash script
Tips for bash scriptTips for bash script
Tips for bash script
 
【LT用前編】Rancherでマルチクラウド をやってみた
【LT用前編】Rancherでマルチクラウド をやってみた【LT用前編】Rancherでマルチクラウド をやってみた
【LT用前編】Rancherでマルチクラウド をやってみた
 
MODXで超キレッキレのブログ作る秘訣公開します りたーんず!!!
MODXで超キレッキレのブログ作る秘訣公開します りたーんず!!!MODXで超キレッキレのブログ作る秘訣公開します りたーんず!!!
MODXで超キレッキレのブログ作る秘訣公開します りたーんず!!!
 

Parascript