2008年11月29日土曜日

telnet があれば、RAWプリンタで印刷できる

telnet ですかー!?
telnetがあれば、TCP9100のRAWポート印刷に対応しているネットワークプリンタから印刷できる。
 
lprコマンドとかの立場はまあおいといて。
 
 

取りあえずそこらにネットワークプリンタがあったら、Telnetで9100番ポートに繋いでみよう。
telnet [プリンタのIPアドレス] 9100

セッションが張れたら任意の文字を入力しよう、コピペでもOK。
 
 

そしておもむろに「 Ctrl+]」 でエスケープ(Windows・Linuxと多分共通)、「telnet >」のプロンプトで "c" または "close" と入力してセッションをクローズしよう。
 

印刷された?
 

telnetシリーズタグ

ちょっとjmeterでメモ

jmeter関連でアドバイス貰ったのでメモ。
 

http://www.jasst.jp/archives/jasst07e/pdf/C2-1.pdf
 

http://d.hatena.ne.jp/defiant/20080909#1220944470
http://d.hatena.ne.jp/defiant/20080909#1220943546
 

http://www.programmerplanet.org/pages/projects/jmeter-ant-task.php
 

MS の Applecation Center Test とかも悪くないんだけど。
負荷・テストツールは手軽に手に入る環境がいいなあ。
 
 

あと、CSVデータセットの使い方
http://www26.atwiki.jp/11rtksn/pages/7.html

2008年11月28日金曜日

携帯対応とはてなスター機能追加@自分のwordpress

Wordpress の機能追加をした。
携帯電話(モバイル)に対応するプラグイン、「MobilePressNEO」と、色々なWEBサービス提供でおなじみの はてな より、ブログに はてなスター をつけてもらえる機能を実験的に追加。
これは はてな にログイン済みのユーザで無いと分からないかな?
 
 

携帯対応、MobilePressNEO


元々携帯向けのブログではないけどやってみた、MobilePressNEO というプラグインを採用。
 
プラグイン有効にしただけで携帯からのアクセスはあっさり風味のモバイルサイトに見せてくれる優れものプラグイン。
作者の言うとおり造りが素直なようで、phpのバージョンやら気にしなくてよいのもうれしい、php4でも5でも動くっぽい。
 

折角なのでQRコードを作成、
[caption id="attachment_1084" align="alignnone" width="250" caption="画像:「SawanoBlog.」QRコード"]画像:「SawanoBlog.」QRコード[/caption]
 
 

はてなスター機能追加


スター付与ボタンがついているブログをどこかで見たのでSawanoBlogにもつけてみた。
 

wordpressが出力するHTMLのHEADにて、はてなスタースクリプトを読み込むように記述、記事タイトルの横にはてなスター付与ボタンができた。
コメントは無効にしてある(はず)。

[sourcecode language='html']
[/sourcecode]
 

Wordpress を はてなスター に対応するには、普通のはてなスタースクリプトを追加するだけじゃあ駄目、Wordpress対応用スクリプトも一緒に読み込む必要がある。
 
専用スクリプトが何か言うと、はてなスター付与ボタンをつけるためにコンテンツを解析して、「記事のタイトルっぽい所」を検出、その後ろに付与ボタンをつけるという処理をしているらしい。
テンプレートをあちこち改造する必要もなく、とても楽に設置できた。
 


 

はてなスター、 重かったりイタズラされやすい という話もあるが、うちはそんなに人こないので全く問題ないだろう。
とりあえず見栄え優先。

2008年11月27日木曜日

GNU screen で仮想端末。処理をほったらかしにして切断、さあ帰ろう

先日、全力でCPU負荷をかけているサーバにリモートシェルからMySQLのレコードを数十万行流し込むという用事があった。
作業してた人は、sshクライアント落とせないので 「PC落とせない=帰れん」 となり、少々悩んで結局PCをつけっぱなしで帰った。
 

これが自分の身に降りかかったら とても嫌 だと思い、そうなった場合の対策を探したところ、GNU screen という結構由緒正しい仮想端末ソフトがヒット。
 
これは使える、、、知らなかったのは不覚だ。ちょっとさわりを書いてみる。
(追記)突然の回線切断でも大丈夫、繋ぎなおしたら作業中の環境復活OK、と追記しとく。
 
 

screen のデタッチ、アタッチについて簡単に説明


勝手に終わらないコマンドとして適当なもの、たとえばTOPを実行しているとした場合。
 

×Screenがないとき
TOPコマンドはsshクライアントからつないだ仮想端末(例:xterm)を制御端末として動く。
sshクライアントを終了するとTOPコマンドの制御端末がなくなるのでTOPコマンド終了ー。
 

○Screenがあるとき
sshクライアントからつないだ仮想端末(例:xterm)でscreenコマンドを使用すると、新たな仮想端末(screen)ができる。
screenからTOPコマンドを実行すると、当然制御端末は screen になる、そして screen は起動時の制御端末 - xterm が終了しても独立して動く機能がある。
ということで、sshクライアントを終了しても screen は配下のTOPコマンドを生存させたまま残ることが可能。
(追記) これは別の表現で言うと突然xtermの接続が切れても大丈夫、ということ。
 
 

表現とかちと怪しい部分もあるが大体こんな感じ、
詳しいことは下記サイトとかがいいのかな?

screenのススメ
http://www.dekaino.net/screen/


screenの理解ならここはとても参考になります。ただ、エスケープキャラクタは「Ctrl+a」のままでもいいと思う。
 
 

一通り実際やってみる


yum でも cvsよいのでscreenをインストールしよう。cvs のほうが縦分割ができてお得か。
 

[caption id="attachment_1074" align="alignnone" width="500" caption="画像:puttyでsshログイン"]画像:puttyでsshログイン[/caption]
早速screenコマンドを叩いてみる、クライアントは putty を使った。
 

[caption id="attachment_1075" align="alignnone" width="500" caption="画像:screen起動直後"]画像:screen起動直後[/caption]
タイトルバーのところに「screen 0」 というのが出てきた。今は仮想端末screenの0番を使っているよという意味だ。準備OK。
 
 

コマンドを実行したままで screen をデタッチ


screen上で適当にコマンドを実行して、そのままscreenを切断します。
ちなみにscreen制御用のコマンドはまずエスケープ(デフォルトではCtrl+a(^a と書いたり))してからコマンド入力します。とりあえずデタッチは「Ctrl+a → D(大文字)」
 

[caption id="attachment_1076" align="alignnone" width="500" caption="画像:screenで画面分割、コマンド実行"]画像:screenで画面分割、コマンド実行[/caption]
とりあえずscreenの画面分割機能を使って、ping, vmstat, top と実行してみた。
0番のping シーケンス番号が目安になるかな、
 
そしておもむろに デタッチ「Ctrl+a → D(大文字)」
 

[caption id="attachment_1077" align="alignnone" width="500" caption="画像:「^a + D」でscreenをデタッチ"]画像:「^a + D」でscreenをデタッチ[/caption]
screen実行前の仮想端末に帰ってきた、一回ログアウトする。
 
 


デタッチしたscrennに後日アタッチして、続きをやる


とりあえず「screen -ls」で今動いているscreenのリストがとれる。目的のものに「screen -r {プロセスID(1つしかなければ省略可)}」 でアタッチすればいい。
 

[caption id="attachment_1078" align="alignnone" width="500" caption="画像:接続しなおして、screenのリスト"]画像:接続しなおして、screenのリスト[/caption]
リストがとれたのでアタッチする。
 

[caption id="attachment_1079" align="alignnone" width="500" caption="画像:アタッチした"]画像:アタッチした[/caption]
screen 0番につながったのがわかる、ping健在。
他のコマンドはどうだろうか。
 

[caption id="attachment_1080" align="alignnone" width="500" caption="画像:screen上の分割リスト"]画像:screen上の分割リスト[/caption]
screen内の画面リストを出してみる、名前は任意に変えることができるのでここではわかりやすい名前を付けている。
それぞれに切り替えてみるとコマンド実行が継続されていることがわかる。
 


[caption id="attachment_1081" align="alignnone" width="500" caption="画像:デタッチ前の状況が保たれている"]画像:デタッチ前の状況が保たれている[/caption]
切断前の状況再現(継続中)もOK。ヒストリなどもちゃんと継続している。
いやあこれは便利だ。
 
 

次は分割?


screen は正直機能が多くてまったく紹介しきれないが、まずはこのデタッチ・アタッチを知っておくと便利なので各サーバに導入しておきたい。
 

余談として、プロンプトに($TERM) を表示するようにすると区別がついていいかも。
「PS1='[\u($TERM)@\h \W]\$ '」 というようにしておくと、
[sawano(xterm)@myserver ~]$
[sawano(screen)@myserver ~]$
こんな感じになってscreen使用中かどうかわかる。
 

今度は分割も記事にしたい、打鍵で混乱するからそのへん消化したいんだよね。

「一般的なペーストビン」とかのペーストビン(pastebin)

今まで特に気にしていなかったが ペーストビン を調べてみた。検索でしばしば見るやつ。
 

突然調べた理由は、これまでずっと ベースピストン(ピストンベース) だと思っていた のが間違いだったと気づいたから。
「(・ー・)..。oO( 油圧的ななんたらで使う部品かなー…)」という認識、気づいてみればそんなわけ無いがずっとスルーしていた。第一印象は大事だ。
 
 

調べたら丁寧に解説してくれているサイトがあった。
>> ペーストビン(pastebin)について - Life, don’t talk to me about life.
 

よく分かった、引用した情報などを複数人で共有する為のWEBサービスなのね。
確かにリンク先にもあるような、オープンソース開発的な利用法には良さそう。
 
 

ペーストビン は エンジン関連の部品的なものではなかったんだ!

2008年11月21日金曜日

NTBackupで強引にP2Vマイグレーション@WindowsServer2003[自己責任注意]

物理サーバで動いている WindowsServer2003 でシステムの NTBackupを取りました、でそれを、VirtualServer で動いている WindowsServer2003 上でシステム状態ごとフルリストアしました。
 

さて、これ動かないですよね。でも NTBackup を取るときに物理サーバの設定を工夫すれば動くことがあります。
 
 

注意:この記事どおりにやったからと言って確実にうまくいくとは限りません、自己責任でお願いします

ちょっと参考リンクを。

Windows XP または Windows Server 2003 セットアップ後の HAL オプション
http://support.microsoft.com/kb/309283/ja


 

キモはこのHAL、物理→仮想のマイグレーションってこの辺いじってるらしいのでこれが通れば何とかなる。
 
あまり検証してないので仮説ですが、仮想PCのマザーボードは互換性のためアーキテクチャがとっても古い(VS2005なら440BXくらい)ものをエミュレートしてるらしいんですよね、ってことで新しめハードのHALをそのまま仮想に突っ込んだら動作しない、って事だと思う。
 
 

なので、NTBackup を取得する前に、物理サーバ上で デバイス マネージャのHAL オプションを仮想化後を想定したものに変更する必要がある。リストア先の仮想PCでHALオプションを見てみよう、多分違うはず。
 

ここで物理サーバのHALを仮想にあわせると絶対ダメ、物理側がおじゃんになる。
手順があるのでそれを踏もう。要は互換性重視で一番しょぼいHALを使おうと言うこと。

  1. まず物理サーバでHALオプションを「"標準 PC"、非 ACPI PIC HAL (Hal.dll) 」にする

  2. NTBackupで移行する

  3. ちゃんとOSが立ち上がってくるのでHALオプションを仮想PCでの元々の設定に戻す


 

晴れてPtoV、仮想化完了という運びになります。これはすごく楽、VHDの容量とか元のサーバを気にしないで良いし。
 
 

この強引な手段はマイグレーションとは言わないかもしれない。
最後にも言うけど、やってみるなら自己責任で、業務用のはやめておこうね。

2008年11月20日木曜日

VBScriptからSQLSERVERに接続する(ADO)

WindowsServer の運用管理で、ちょっと SQLServer から情報もってきたい時に VBScript(やWSH) でDBに接続できたら都合がいい。
 
 

ADO(ActiveX Data Object) とかいうやつを使ってちょっとクエリを流そうという時のメモ。
 
 

サンプル:SQLServer上に設定されている、サーバのホスト名を取ってくる


大体が [Master] の [sysservers] に1行あるレコードがローカルサーバ情報。サンプルでは一応複数あった場合の処理をさせてる。
 

下記を拡張子VBSで保存して実行する。
[sourcecode language='vb']
Private cn ,rs

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

'// ADODBでSQLOLEDBに接続、この場合ユーザはログイン中のものを使う
cn.Open "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=msdb;Integrated Security=SSPI;"
'// SQLのクエリを書いてレコードセットを取得する
rs.Open "SELECT [SrvName] FROM [Master].[dbo].[sysservers] WHERE [srvid] = '1'", cn


'// レコードセットを1行づつ処理する
Do While Not rs.EOF
Wscript.echo rs("SrvName")
rs.MoveNext
Loop
'// レコードが一行ならこれでもOK
'// Wscript.echo rs("SrvName")

rs.Close
cn.Close

Set cn = Nothing : Set rs = Nothing

Wscript.Quit
[/sourcecode]
 

sysdatabaseからデータベースの一覧とかを持ってくるのも簡単。
SELECT以外の文は結果がどうなるのかは試してないけど、多分単純に結果コードが帰って来るんだと思う。
 

まぁ更新系を使う場合はVBScriptとかじゃないよね、と思う。