KTerm 召喚プログラム


はじめに

こちらに書いているように, 最近はすっかり Windows マシンから X-Deep/32 で Linux を使うように なってきました. とは言え

  1. Windows マシンから X-Deep/32 サーバを起動 (こちらを参照).
  2. 適当なターミナルプログラムで Linux マシンにログイン
  3. kterm を -display オプションを使って Windows マシンに出力
  4. ターミナルプログラムを終了
という手順は毎回となるとちょっと面倒です.

ターミナルプログラムのマクロを書けばいい気もしますが, ちょっと美しくありません. と言うわけで, そういうプログラムを作ってみました.

プログラム

プログラム本体はこちらです(V1.1).

原理は簡単で 23 番ポートに telnet し, あらかじめ GUI で入力したユーザ名とパスワードでログインし,

$ kterm -geometry 80x25+0+0 -display hostname:0 &
$ exit
というコマンドを実行しているだけです (hostname は起動した Windows マシンの IP アドレスが入ります). ですので, SSH でしかログインできないよう設定された Linux マシンには使えません.

また, 23 番ポートでログインすると, 最初にプロトコルネゴシエーションをするん ですが, RFC のどこに書いているのか分からず (RFC854 のようだ), とにかく WEB で適当に概要を調べ, よく理解しないまま適当に作りました. 筆者の環境 (Plamo 4.2 及び 4.3) ではログインできるのでほっといてますが, もしかして他の端末では動かないかもしれません. その節はあきらめてください.

さらにプログラムの都合上, Linux マシンは以下の条件を満たす必要があります.

  1. "telnet [hostname]" でログインできること (SSH ではない)
  2. ユーザ名を入力する際 "[hostname] login:" と表示されること
  3. パスワードを入力する際 "Password:" と表示されること
  4. "kterm" ("xterm") と打つとそれが起動すること
  5. "exit" と打つとログアウトされること

プログラムですが, 第一引数に Linux マシンを指定して起動します. プログラムは指定された Linux マシンに対して接続を試みます. また, 第二引数以降, 1〜9, x という文字も指定できます. 1〜9 はディスプレイ番号で, 指定しなければ上の例のように 0 が入ります. 複数指定した場合は最後に指定したものが有効になります. 一方 x は kterm の代わりに xterm を呼び出すものです.

プログラムを起動すると, 以下のようなダイアログが現れ, ユーザ名とパスワードを たずねます. ini ファイルか何かで覚えさせておくこともできたんですが, 作るのが面倒くさいのでセキュリティ上の観点ということにして, 毎回入れるようにしています.

ユーザ名やパスワードを間違えて入力した場合, Linux マシンが時間切れで切断するまで, ダイアログは閉じません. 間違えたと思ったら手動で閉じて再起動してください. 同様にエラーメッセージは一切見てないので, Linux マシンに x/kterm が入ってないとかパスが通ってないとか, ディスプレイ番号を間違えた場合, ダイアログは閉じますが X サーバ上に x/kterm が現れません. その辺は適当に判断してください.

使い方ですが こちらに書いたように

d:
cd \utils\xdeep32_40\usr\X11R6\bin
D:\utils\xdeep32_40\usr\utils\xcl.exe 'D:\utils\xdeep32_40\usr\X11R6\bin\twm.exe' -n -d 127.0.0.1:0
d:\tools\nopathtool\fetchxterm my.linux.machine
とでも書いたバッチファイルを作って呼び出せばいいと思います.


2009.4: Linux ブート後, 一回でも適当なターミナルプログラムで telnet を受け付けるまでは, 本プログラムが動かないバグの修正. (Ver1.1)
2012.6: ssh に対応する手法は こちら
[戻る]