|
~ To be, or not to be, or to run away far away! ~ null-i.net |
| Windows/TeraTermマクロでログイン、画面色とサイズ変更 | |
|
TeraTermマクロって便利ですよね(2017-03-03、追記:2020-01-04) 特に今回の課題だった ログインして、背景色変えて、画面サイズも変えるマクロ†以下をテキストにコピペして、変数は書き換えて、 username2 への切り替えは要らなければ、後半は削除すればOK。 ;
; username1 でログインして、username2 へ切り替える(su -)までのマクロ
; 背景色だけ、デフォルト設定を上書きする
;
;--- ホスト名、ID、パス、ファイルの場所を設定する -------------------
; 各変数を自環境に合わせて変更してください。
; username2, prompt_user2 はログイン後に su で切り替わる場合です。
; tempfile は一時作業用ファイルなので適当な名前で良いです。
hostname = '127.0.0.1'
username1 = 'loginuser'
username2 = 'root'
prompt_user1 = '$ '
prompt_user2 = '# '
default_ini = 'C:\Program Files (x86)\teraterm\TERATERM.INI'
tempfile = 'my_teraterm_tmp_file.ini'
; 文字の RGB、背景の RGB の順。
; 以下だと文字白(255,255,255)、背景青(0,0,55)
VTColor='255,255,255,0,0,55'
; 画面のサイズ。Yが縦軸、Xが横軸(文字数)です。
screen_y=30
screen_x=100
;--- デフォルト設定を複製、自分用設定で上書きする -------------------
getdir temp_ini
strconcat temp_ini tempfile
fileopen fdef default_ini 0 1
if result != 0 then
messagebox "can not open default init" "open error"
exit
endif
;filedelete temp_ini
fileopen ftmp temp_ini 0
if result != 0 then
messagebox "can not open temp file" "open error"
exit
endif
while 1
hit=0
filereadln fdef line
if result=1 break
strsplit line '=' 9
; 画面の背景色を変える。ほんとは Bold/Blink/URL も変えると良い。
strcompare groupmatchstr1 "VTColor"
if result=0 then
string = 'VTColor='
strconcat string VTColor
filewriteln ftmp string
hit = 1
endif
; ほかにも変える場合は、こんな感じ
strcompare groupmatchstr1 "MouseCursor"
if result=0 then
filewriteln ftmp "MouseCursor=hand"
endif
if hit=0 then
filewriteln ftmp line
endif
endwhile
fileclose fdef
fileclose ftmp
;---サーバへ接続---------------------
string = hostname
strconcat string ' /ssh /2 /auth=password /user='
strconcat string username1
strconcat string ' /ask4passwd'
strconcat string ' /F='
strconcat string temp_ini
connect string
filedelete temp_ini
;---ログイン成功後、画面サイズを変える-----------------------
wait prompt_user1
sprintf #$1b"[8;%d;%dt" screen_y screen_x
dispstr inputstr
;---ここからはおまけ。 su で username2 へ-----------------------
string = "export LANG=C && su - "
strconcat string username2
sendln string
wait "Password: "
passwordbox username2 'Enter:'
sendln inputstr
;---ユーザ変更成功後、任意のコマンド実行------------
wait prompt_user2
;以上です。
;あとは、好きなコマンドがあれば実行してください。
sendln 'yes | while read Iam; do echo yes; done | head -5'
wait prompt_user2
sendln '# ... here we go!'
;おわり
やっぱり案の定、長いマクロになっちゃいましたが、 以下、余談です。 マクロの作成例†TeraTermのヘルプファイルで、 dispstrとか今回初めて使ったのですが、 このマクロの概要†今回のマクロをふわっと説明すると、 ウィンドウサイズを変える話(制御シーケンス)†ウィンドウサイズを変える例の補足をすると、
...その辺を追記しようと思ったのですが、TeraTermのヘルプにあったのでそちらをどうぞ パスワード保存は避けましょう†どういった作業環境であるか、条件によるのですが、 TeraTermに限らず、パスワードは手入力で我慢することも一考しましょう。 |
|