ESXiで公開/秘密鍵認証で接続を受ける設定は、公開/秘密鍵認証でESXiに接続を参考に設定する。
- 秘密鍵保存ディレクトリを指定する記述を追加する。
;秘密鍵保存ディレクトリを指定 key_dir = 'key\'
- 秘密鍵ファイルのフルパスを取得する処理を追加する。
tmp_key_dir = key_dir strmatch tmp_key_dir '\\$' if result = 0 then strconcat key_dir "\" endif key_file = main_dir strconcat key_file key_dir strconcat key_file hostname strconcat key_file '_' strconcat key_file username
- 接続文字列を変更する。
- 変更前
strconcat myconnect ' /ssh /auth=password '
- 変更後
strconcat myconnect ' /ssh /auth=publickey /keyfile=' strconcat myconnect key_file
変更後のマクロファイル
;マクロファイル名で指定された接続を行う。 ; ;マクロファイル名で「_」区切りで指定した、以下オプションで接続する。 ; 接続先ホスト名(IPアドレス)_接続ユーザ名_ポート番号.ttl ; ※後続のオプションを指定しない場合、それ以降の「_」は不要。 ; ;パスワードは暗号化しpasswd_pathで指定されるファイルに保存される。 ;ファイル中にパスワードが保存されていれば、パスワード入力は不要。 ;保存されていなければパスワード入力ウィンドウが表示され、入力を促される。 ;パスワードに「"」、「 (スペース)」の両方を含む場合は、接続できない。 ; ;ファイル名で「接続ユーザ名」「ポート番号」を指定しない場合、 ;以下で指定する「ユーザ名」「ポート番号」を使用して接続する。 ;ログインデフォルトのユーザ名を指定 username_default = 'root' ;ログインするデフォルトのポート番号を指定 port_default = '22' ;メインのディレクトリを指定 main_dir = 'D:\ソフト\TeraTerm\' ;パスワードファイルを指定 passwd_file = 'pass.dat' passwd_path = main_dir strconcat passwd_path passwd_file ;設定ファイルを指定 conf_file = 'conf\TERATERM.INI' conf_path = main_dir strconcat conf_path conf_file ;ログディレクトリを指定 log_dir = 'log\';秘密鍵保存ディレクトリを指定 key_dir = 'key\' ;マクロファイル名から拡張子(.ttl)除去 tmp_param1 = param1 strmatch tmp_param1 '\.ttl$' if result != 0 then strlen param1 needless = result - 3 strremove param1 needless 4 endif strsplit param1 '_' ;strmatchで「groupmatchstr?」にグループマッチしたパターンが格納されるので退避 arg1 = groupmatchstr1 arg2 = groupmatchstr2 arg3 = groupmatchstr3 arg4 = groupmatchstr4 arg5 = groupmatchstr5 arg6 = groupmatchstr6 arg7 = groupmatchstr7 arg8 = groupmatchstr8 arg9 = groupmatchstr9 ;main_dirの最後が「\」でない場合は、追加 tmp_main_dir = main_dir strmatch tmp_main_dir '\\$' if result = 0 then strconcat main_dir "\" endif ;ホスト名設定 hostname = arg1 strcompare "" hostname if result = 0 then msg = 'ホスト名が読み取れませんでした。' messagebox msg "Error" end endif sprintf2 connect_msg '接続先ホスト名\t:%s' hostname ;ユーザ名設定 username = arg2 strcompare "" username if result = 0 then call use_default_username sprintf2 tmp_connect_msg "\n接続先ユーザ名\t:%s(デフォルト)" username else sprintf2 tmp_connect_msg "\n接続先ユーザ名\t:%s" username endif strconcat connect_msg tmp_connect_msg ;ポート番号設定 port = arg3 strcompare "" port if result = 0 then call use_default_port sprintf2 tmp_connect_msg "\n接続先ポート番号:%s(デフォルト)" port else sprintf2 tmp_connect_msg "\n接続先ポート番号:%s" port endif tmpport = port strmatch tmpport '[[:digit:]]' if result = 0 then msg = 'ポート番号が数値ではありません。:' strconcat msg port messagebox msg "Error" end endif strconcat connect_msg tmp_connect_msg ;ファイル名中で無視される範囲を表示 strcompare "" arg4 if result != 0 then msg = "オプション " strconcat msg arg4 strcompare "" arg5 if result != 0 then strconcat msg ' ' strconcat msg arg5 strcompare "" arg6 if result != 0 then strconcat msg ' ' strconcat msg arg6 strcompare "" arg7 if result != 0 then strconcat msg ' ' strconcat msg arg7 strcompare "" arg8 if result != 0 then strconcat msg ' ' strconcat msg arg8 strcompare "" arg9 if result != 0 then strconcat msg ' ' strconcat msg arg9 endif endif endif endif endif strconcat msg ' は無視されます。' messagebox msg "check" endif goto my_connect :use_default_username username = username_default msg = 'ユーザ名が読み取れませんでした。デフォルトのユーザ=' strconcat msg username_default strconcat msg 'で接続します。' return :use_default_port port = port_default msg = 'ポート番号が読み取れませんでした。デフォルトのポート番号=' strconcat msg port_default strconcat msg 'で接続します。' return :my_connect strspecial connect_msg messagebox connect_msg "接続先確認" ;パスワードを取得 passwdkey = username strconcat passwdkey '@' strconcat passwdkey hostname getpassword passwd_path passwdkey password ;TeraTermマクロconnectの仕様対応 ;https://ttssh2.osdn.jp/manual/ja/macro/command/connect.htmlの注意2に以下の記述あり ;パスワードにはスペースを含むことが可能です。パスワードの中でスペースを表すには、パスワード全体を `"' で囲んでください。パスワードに " を含めるためには、連続した `"`("") を使用してください。 tmppassword = password strreplace tmppassword 1 '"' '"""' if result != 0 then password = tmppassword endif tmppassword = password strmatch tmppassword '.*\ .*' if result != 0 then password = '"' strconcat password tmppassword strconcat password '"' endiftmp_key_dir = key_dir strmatch tmp_key_dir '\\$' if result = 0 then strconcat key_dir "\" endif key_file = main_dir strconcat key_file key_dir strconcat key_file hostname strconcat key_file '_' strconcat key_file username ;接続文字列生成、および接続 myconnect = passwdkey strconcat myconnect ':' strconcat myconnect port strconcat myconnect ' /ssh /auth=publickey /keyfile=' strconcat myconnect key_file strconcat myconnect ' /passwd=' strconcat myconnect password connect myconnect ; ログを記録する tmp_log_dir = log_dir strmatch tmp_log_dir '\\$' if result = 0 then strconcat log_dir "\" endif log_file = main_dir strconcat log_file log_dir strconcat log_file username strconcat log_file '@' strconcat log_file hostname getdate datetime '_%Y_%m%d_%H%M_%S' strconcat log_file datetime strconcat log_file '.log' logopen log_file 0 1 ;設定ファイル読み込み restoresetup conf_path
0 件のコメント :
コメントを投稿