ESXi サーバー機の自動電源オンオフ備忘録
ESXi サーバー機スペック
Server | HP ProLiant ML110 G7 |
CPU | Intel Xeon E3-1230 @3.20GHZ |
MEM | 16GB |
HDD | SATA 250GB |
CPUとメモリは換装済み、ESXi 5.1 でゲスト OS (Windows 7) を4つ立ちあげ、1OS毎に2CPU、メモリは4GB割り振ってます。
リモートからサーバー機の電源をオンにする
Integrated Lights-Out(iLO)と ipmiutil
HP iLo は追加のソフトウェアをインストールしなくても購入後すぐに使用でき、サーバーの電源が入ってなくても機能する HP 謹製のツールです。サーバーハードウェアをモニタ可能にするための標準インターフェイス仕様のIPMIに対応しています。そこで IPMI の Windows 用のツールである ipmiutil を使ってリモートからサーバー機の電源操作をしたいと思います。こんな感じのバッチファイルで↓
cd C:\bin\ipmiutil ipmiutil power -u -N IPAddress -U YourAdministratorName -P YourPassword
リモートからサーバー機の電源をオフにする
vim-cmd でやろうとしたけどなぜか shutdown できないゲストOSがひとつ。仕方ないので、WMIC 経由でゲストOSのシャットダウンをしてから vim-cmd で ESXi のパワーオフすることにする。以下、ruby スクリプトのように見えてバッチファイル。
WMIC /NODE:GUEST001 /USER:foo /PASSWORD:bar OS WHERE Primary=1 CALL Shutdown WMIC /NODE:GUEST002 /USER:foo /PASSWORD:bar OS WHERE Primary=1 CALL Shutdown WMIC /NODE:GUEST003 /USER:foo /PASSWORD:bar OS WHERE Primary=1 CALL Shutdown WMIC /NODE:GUEST004 /USER:foo /PASSWORD:bar OS WHERE Primary=1 CALL Shutdown @echo off c:\ruby193\bin\ruby -x %0 @goto EOF #!/usr/bin/ruby require 'rubygems' require 'net/ssh' HOST = 'youresxihost' USER = 'root' PASSWORD = 'youresxipassword' sleep(60*3) # 3分待機 Net::SSH.start(HOST, USER, :password => PASSWORD) do |ssh| output = ssh.exec!("vim-cmd vmsvc/getallvms") states = [] output.split("\n").drop(1).each do |line| vmid = line.split.first guest = line.split[1] state = ssh.exec!("vim-cmd vmsvc/power.getstate #{vmid}") puts (state =~ /Powered on/) ? "on #{guest}" : "off #{guest}" states << (state =~ /Powered off/) end # ゲストOSの Powered off の数をカウントし、全部 off なら ESXi をパワーオフ if states.size == states.count{|x| x} output = ssh.exec!("poweroff") puts output end end __END__ :EOF
2013年 大納会
今日は2013年の大納会(株式取引の最終日)でした。2007年9月から何もわからない状態で株を始め、6年ほど株取引をほぼ毎日やっています。そこで株を始めるに至った経緯を書いておきたい。
自分は、8年ほど前に両親のやっている家業を継ぎました。家族経営ではありがちな話だと思いますが、家業を継いだといっても、実際には自分にはなんの裁量も与えられず、単なる使用人として扱われてしまうのだった。
この道40年のワンマン経営者な親にしてみれば、自分の意見はペーペーすぎて、例え血がつながった子供の意見でも聞き入れんわ!ということなんでしょう。これぞ真の老(検閲)。で親を説得するのは諦めて、家業の及ぶ裁量の範囲外で、自分は勝手に別の事を始めたのであった。
さて、もともとパソコンのお仕事しかしたことのない自分は、そっち方面でなんとか収入を得る方法がないか試行錯誤していました。その中のひとつが株式取引です。しかし、株を始めた翌年のリーマンショックで資金の大半を吹き飛ばしてしまいました。親にはもうやめろと言われてお金出してもらえないし、しかたないのでプロミスなどの消費者金融で資金を調達し、利子を返済しながらチマチマと株式取引を続けていたのであった。(←良い子は真似しないでください)
なんどもお金を吹き飛ばし、怒りの正拳で壁に穴を開けたりしていたこの6年はながかったけど、ようやく借金ゼロになり、今年12月にギリギリセーフで原資回復し、通算損益がプラスになりました。睡眠薬と精神安定剤を飲みつつがんばったかいがありました。
今までも娯楽やギャンブルで株をやってるつもりはなかったですが、来年からは法人口座を開設してさらにガチで死ぬ気で株式投資に取り組むつもりです。という内容の日記を年末に決意表明としてどっかに書いておきたかったのではてなブログに書きました。
ご清聴ありがとうございました。
テディベア効果
プログラミング作法というカーニハンの名著があります↓コレ*1
- 作者: ブライアンカーニハン,ロブパイク,Brian Kernighan,Rob Pike,福崎俊博
- 出版社/メーカー: アスキー
- 発売日: 2000/11
- メディア: 単行本
- 購入: 58人 クリック: 1,152回
- この商品を含むブログ (203件) を見る
エンジニアな人たちにとって、原因不明なバグや想定外の障害に頭を悩ませることは日常茶飯事のことと思います。そのような状況に陥った時、この本が教えてくれるのは、まずテディベアに相談しなさいということでした。以下引用
自分のコードを誰かほかの人に説明して聞かせるのも効果的なテクニックだ。こうすると自分自身インバグが見えてくることが多い。場合によっては説明し始めた途端に気がついて「あ、もういいや、変なところがわかったよ。ごめん、ごめん」などと言って照れくさい思いをすることもある。このテクニックは意外なほど有効だし、聞き手は別にプログラマでなくてもかまわない。ある大学の計算機センターのヘルプデスクのそばにはテディベアのぬいぐるみが常備されており、摩訶不思議なバグに悩む学生は、人間のスタッフに相談する前にぬいぐるみに向かって説明しなければならないことになっていた。
さて、年末も押し迫ってきて、やらないといけない瑣末なこと、とてもやりたい重要なこと、がたくさんあって混乱してくる。特に専門的なことでやりたいことを家族等に話していると「お前は何を言ってるのかさっぱりわからない」と言われるのだが(そりゃそうだ)頭を抱える悩み事を一方的にしゃべるだけで「ごめんわかったもういいや」となるのであった。他人様にはさぞ迷惑なことだろう。
というわけで今後「(専門的な)悩み事はテディベアに向かってしゃべるように、まず、はてな日記に書きましょう!」と自戒をこめてメモしておきます。
アマゾンでポチった本
Kindle Store でセールをやっていたので思わずポチったもの↓全部、紙の本を持ってるけど、古い名著を1冊200円程度の古本価格で電子書籍にしてくれるなら持ってても買う。
- 作者: 米長邦雄
- 出版社/メーカー: 祥伝社
- 発売日: 2013/10/11
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 米長邦雄
- 出版社/メーカー: 祥伝社
- 発売日: 2013/03/22
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 作者: オリバー・ベレス,グレッグ・カプラ
- 出版社/メーカー: 日経BP社
- 発売日: 2013/08/12
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 熊本県庁チームくまモン
- 出版社/メーカー: 幻冬舎
- 発売日: 2013/04/19
- メディア: Kindle版
- この商品を含むブログを見る
一番上にある「人生一手の違い」は、昔、米長邦雄の講演会を聞きに行ったら貰った本で今でも本棚に置いてあります。当時の米長邦雄は51歳で「誰か知らんけど、かっこよくて爽やかなおっさんだな〜」なんて思いました。(失礼ですみません)
わたくしは将棋も囲碁もどちらも指せませんが、この本は面白かった。
後半部分で囲碁棋士の藤沢秀行についての章があります。孔子は「七十にして心の欲する所に従えども矩を踰えず」と論語にありますが、藤沢秀行は「心の欲するままに矩を踰えて」生きる人で、本書ではその人となりが紹介されていて、とても魅力を感じました。真似はできませんが。「さすがディオ!おれたちにできない事を平然とやってのけるッ そこにシビれる!あこがれるゥ!」って感じでしょうか。
あと、印象に残っているのが「空気が濁る」という章です。要約すると、組織に空気を濁す人(=勝負に対する緊張感に欠ける人)がいると、いずれその組織は活力が失われ、堕落した集団になるという話です。
・・・などなど、米長邦雄は電王戦などで今でも有名ですし、この本は将棋知らなくても読めるので、古い本ですが Kindle 持ってる人は200円でポチって損はないと思いますよ!
どうでもいいはなし
かなり長〜い間、さくらインターネットでレンタルサーバーを借りていました。が、今年になってうっかり更新するのを忘れて解約になっちゃいました。
外部の WWW サーバーとか使わないし、まあいいか、と思ってたけどよく考えたら、Subversion のリポジトリも置いといたのだった。今、スクリプト修正してチェックインしようとして出来なくて気がついた��(゚Д゚)ガーン
全部趣味プログラムのコードとはいえ、そこそこの量&期間のコードが置いてあったんだったっけ・・・なんて悔やみつつ、失ってしまったドメインである rocky.sakura.ne.jp をふと見にいきました。
板橋区にある障害者施設のホームページになっていました。へー・・・まぁこれはこれでよかったかも。rocky という名のサブドメインにふさわしいな、なんてね。
つか Subversion のリポジトリどこにつくろう・・・Git で作りなおしてもいいけど、GitHub はプライベート利用は有料だしなぁ、なんて思いながら検索したら無料でプライベートリポジトリ作れるとこあった。
http://codebreak.com/
あとで使ってみる。
LANケーブルを自作してみた
サーバー機がうるさいので隣の部屋に移したいのだけど、LANケーブルのプラグが通るほど大きい壁穴が開いていない。そこで、ケーブルだけ通してから後付でプラグをつけようと思いたち、いまさらながらLANケーブルの自作にチャレンジしてみました。今回買ったのはこれです。
変換名人 LANケーブル作成セット CAT5用 圧着工具/皮むき工具/テスター/RJ45プラグ/ケーブル入 LANSET/1
- 出版社/メーカー: 変換名人
- メディア: Personal Computers
- 購入: 2人 クリック: 5回
- この商品を含むブログ (5件) を見る
レビュー
無事に届いたLANケーブル自作セット↓テスターに使う9V電池は別途購入する必要があるので揃えておきましょう。
ケーブルをちょん切り、コードをほぐします。以下のようにコードを並べて先をニッパーで揃えます。
薄橙色 | 橙色 | 薄緑 | 青 | 水色 | 緑 | 薄茶色 | 茶色 |
テスターで、1から8まで通電できればオーケーです。できあがり!!
NG集
・・・なんて簡単にできればよいのですけど、実際は3時間くらい悪戦苦闘しました。残骸↓
付属のケーブルはすぐに出来たのだけど、既存のケーブルを利用しようとすると、線が太いのか何度も失敗、挫折しました。明日にでも別のケーブルで試してみる。でもプラグだけは、高価でも別途ロードバー付きプラグ購入した方が良いと思いました。
SANWA SUPPLY ADT-6RJ-10 カテゴリ6RJ-45コネクタ
- 出版社/メーカー: サンワサプライ
- 発売日: 2004/03/21
- メディア: Personal Computers
- 購入: 1人 クリック: 8回
- この商品を含むブログを見る
VBA から ruby のコードを実行したい
色々と調べて、結局、実運用には難しそう・・・と思っているのだけど、却下したアイデアでも、思考の流れを残しておかないと、数年後には忘れて同じことをやりはじめそうな悪寒がするので、そうならないように日記に書いておきます。
やりたいこと
秒間で更新される Excel Worksheet 上の数値を使って ruby で計算したい。Win32ole は使わない方向で。あ、VBA から ruby スクリプトを呼ぶだけなら Shell 関数でできます。
方針
Worksheet が更新されるタイミングで、socket 通信をして ruby にデータを流し込む。VBA からの socket 通信は、winsock.dll を使いたくないので、ruby製 のクライアントを呼び出す。できるだけお手軽に。
準備
こちらから↓ ActiveRuby をダウンロード&インストールします。ActiveRuby にする理由は、ScriptControl を使いたいから。
http://www.artonx.org/data/asr/
Excel のオプション - 参照設定で、ScriptControl 1.0 にチェックを入れます。
スクリプト
- tcpserver.rb
require 'socket' require 'thread' svr = TCPServer.open(123456) puts "server is running..." while true Thread.start(svr.accept) do |s| puts s.gets s.close end end
- tcpclient.rb
require 'socket' def client(s) sock = TCPSocket.open('localhost', 123456) sock.puts(s) sock.close end
とりあえずのテストとして、Excel の Worksheet にボタンを貼り付けて、こんな感じに↓。
Private Sub CommandButton1_Click() Dim script As New ScriptControl script.Language = "RubyScript" fn = FreeFile Open "(pathto)\tcpclient.rb" For Input Access Read As fn script.AddCode StrConv(InputB(LOF(fn), fn), vbUnicode) script.Run("client", "testdata") End Sub
問題点
遅いのひとこと。うーんどうしたものか。