커다란 필기

17352 단어 TeraTermMacro
의 목적
매번 다른 현장에 갈 때마다 플랫폼 매크로를 새로 만들고, 번거롭기 때문에 해설을 남긴다.
참고 자료
기본 요건
  • 파일 이름으로 연결 목적지 판별
  • 비밀번호는 Excel로 일람
  • 처리는common에 최대한 기재
  • 1 파일 = 1 서버
  • 기본 상대 PATH
  • 프로비저닝
    디렉토리 구조

    Code
  • server.ttl 서버당 ttl
  • common.ttl 일반 처리 ttl
  • Config
  • password.xls 비밀번호 일람
  • Code
    server.ttl 서버당 ttl
    서버 활용 #1server01_192.168.56.20.ttl
    ;=====================================================================
    ; 環境定義
    ;=====================================================================
    getdir DIR
    
    ; HOMEディレクトリ設定
    HOME_DIR = DIR
    strconcat HOME_DIR "\..\.."
    setdir HOME_DIR
    getdir HOME_DIR
    
    ;=====================================================================
    ; ログインマクロ開始
    ;=====================================================================
    ; COMMONマクロ起動
    COMMON_TTL = HOME_DIR
    strconcat COMMON_TTL '\bin\common\common.ttl'
    include COMMON_TTL
    
    end
    
    common.공동 처리ttl
    common.ttl
    ;=====================================================================
    ; 環境定義
    ;=====================================================================
    L_FILE       = 'conf\password.xls'                ; パスワードファイル
    TERATERM_INI = 'conf\TERATERM.INI'                ; teraterm.iniファイル
    TERATERM_INI_F = HOME_DIR                         ; teraterm.iniファイルのフルパス取得
    strconcat TERATERM_INI_F '\'                      ; teraterm.iniファイルのフルパス取得
    strconcat TERATERM_INI_F TERATERM_INI             ; teraterm.iniファイルのフルパス取得
    
    ;=====================================================================
    ; ファイル名から情報取得
    ; $1 WANAME
    ; $2 HOSTNAME
    ; $3 IPADDR
    ; Example)
    ; 運用サーバ#1_server01_192.168.56.20.ttl
    ;=====================================================================
    ; マクロファイル名から拡張子(.ttl)除去
    tmp_param1 = param1
    strmatch tmp_param1 '\.ttl$'
    if result != 0 then
        strlen param1
        needless = result - 3
        strremove param1 needless 4
    endif
    
    ; セパレータ毎に分割
    strsplit param1 '_'
    F_WANAME   = groupmatchstr1
    F_HOSTNAME = groupmatchstr2
    F_IPADDR   = groupmatchstr3
    
    ;=====================================================================
    ; リストファイルからパスワード取得
    ; $1 SID
    ; $2 WANAME
    ; $3 HOSTNAME
    ; $4 IPADDR
    ; $5 LOGIN USERNAME
    ; $6 LOGIN PASSWORD
    ; $7 SU USERNAME
    ; $8 SU PASSWORD
    ; Example)
    ; DBS   運用サーバ#1   server01    192.168.56.20   login00 +*+<C>'%$#"!Aa  root    rootroot
    ;=====================================================================
    SEPARATOR = #9                                    ; TAB区切り
    
    ; 読み取り専用でリストファイルを開く
    fileopen fh L_FILE 0 1
    
    while 1
        filereadln fh buf
        if result then
            break
        endif
    
        strsplit buf SEPARATOR
        L_SID            = groupmatchstr1
        L_WANAME         = groupmatchstr2
        L_HOSTNAME       = groupmatchstr3
        L_IPADDR         = groupmatchstr4
        L_LOGIN_USERNAME = groupmatchstr5
        L_LOGIN_PASSWORD = groupmatchstr6
        L_SU_USERNAME    = groupmatchstr7
        L_SU_PASSWORD    = groupmatchstr8
    
        ; messagebox F_HOSTNAME 'L_HOSTNAME'
    
        ; 文字列比較
        strcompare F_HOSTNAME L_HOSTNAME
        if result=0 then
            L_FOUNDFLG=0                              ; 一致あり
            break
        else
            L_FOUNDFLG=1                              ; 一致なし
            continue
        endif
    endwhile
    
    fileclose fh
    
    ; リストファイルに存在しなかった場合の処理
    if L_FOUNDFLG=1 then
        messagebox "リストファイルに存在しません" "Error"
        end
    endif
    
    ;=====================================================================
    ; SSH接続
    ;=====================================================================
    COMMAND = L_IPADDR
    strconcat COMMAND ':22 /ssh /2 /auth=password /user='
    strconcat COMMAND L_LOGIN_USERNAME
    strconcat COMMAND ' /passwd='
    strconcat COMMAND L_LOGIN_PASSWORD
    strconcat COMMAND ' /F='
    strconcat COMMAND TERATERM_INI_F
    
    connect COMMAND
    
    ;=====================================================================
    ; キーボード 入力抑止
    ;=====================================================================
    enablekeyb 0
    
    ;=====================================================================
    ; 端末設定
    ;=====================================================================
    TITLE = L_SID
    strconcat TITLE " "
    strconcat TITLE L_WANAME
    settitle TITLE
    
    ;=====================================================================
    ; SU処理
    ;=====================================================================
    wait '$ '
    sendln 'su - 'L_SU_USERNAME
    
    ; 先頭、末尾の"を除去
    strtrim L_SU_PASSWORD '"'
    wait ':'
    sendln L_SU_PASSWORD
    
    wait '# '
    sendln 'PS1="[\u@\h \t \W]\\$ "'
    
    wait '# '
    sendln 'date'
    
    wait '# '
    sendln ''
    wait '# '
    sendln ''
    wait '# '
    sendln ''
    
    ;=====================================================================
    ; キーボード 入力抑止 解除
    ;=====================================================================
    enablekeyb 1
    
    exit
    
    Config
    password.xls 암호 목록
  • 구분 기호는 TAB
  • 입니다.
  • 문자열로 저장
  • 파일을 열 때 오류 메시지 무시
  • password.xls
    ID  WANAME  HOSTNAME    IPADDR  LOGIN USERNAME  LOGIN PASSWORD  SU USERNAME SU PASSWORD
    AAA 運用サーバ#1   server01    192.168.56.20   login00 "+i%~b,k*"  root    "+i%~b,k*"
    AAA 運用サーバ#2   server02    192.168.56.21   login00 login00 root    rootroot
    DDD Proxyサーバ#1    proxy01 192.168.56.10   login01 ",vn#ij_t"  root    %w+z.vp*
    
    이상

    좋은 웹페이지 즐겨찾기