~ To be, or not to be, or to let it be. ~ 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に限らず、パスワードは手入力で我慢することも一考しましょう。 |
|