コンテンツへスキップ

teratermマクロ

・コマンド結果を変数にセット

;--------------------;
; SetHostName.ttl
; コマンド結果を変数に格納 ;
;--------------------;
sendln 'hostname'
recvln
recvln
HostName=inputstr
wait '$' '#'

messagebox HostName 'ホスト名を変数にセット'

・文字列比較

;--------------------------;
; 文字列比較                ;
; strcompare               ;
; <string1> < <string2>	-1 ;
; <string1> = <string2>	0  ;
; <string1> > <string2>	1  ;
;--------------------------;
; 変数(HostName)にサーバ名をセットする。
include '.\SetHostName.ttl'

; コマンド結果を変数に格納
sendln 'cat /etc/redhat-release'
recvln
recvln
OsVersion=inputstr
wait '$' '#'

; 文字列比較
strcompare OsVersion 'CentOS release 6.10 (Final)'
if result = 0 then
    Contents =  'centos 6.10' 
    Kekka = 'OK'
else
    Contents = 'not centos 6.10' 
    Kekka = 'NG'
endif

; メッセージボックスの作成
; messagebox <メッセージ> <タイトル> <1の場合は改行出来る>
MESSAGE = 'ホスト名:['
strconcat MESSAGE HostName
strconcat MESSAGE ']\nOSバージョン:['
strconcat MESSAGE Contents
strconcat MESSAGE ']'

TITLE = '結果:['
strconcat TITLE Kekka
strconcat TITLE ']'

messagebox MESSAGE TITLE 1

・配列

;------;
; 配列 ;
;------;
;配列の要素数をセット
CountCommand = 3
strdim com CountCommand

com[0] = 'uname -a'
com[1] = 'echo $(date)'
com[2] = 'pwd'

for i 0 CountCommand - 1
    ; コマンド実行
    sendln com[i]
    recvln
    recvln
    ; コマンド結果を変数に格納
    Ret=inputstr
    wait '$' '#'
    messagebox Ret 'コマンド結果'
next

・ファイル転送する

USERNAME = 'hogehoge'
PASSWORD = 'password'
ROOT_PASSWORD = 'password'

HOSTADDR = '192.168.133.2' 

COMMAND = HOSTADDR 
strconcat COMMAND ':22 /ssh /2 /auth=password /user=' 
strconcat COMMAND USERNAME 
strconcat COMMAND ' /passwd=' 
strconcat COMMAND PASSWORD
 
connect COMMAND

; ログイン後の処理
; 日時から保存ファイル名を組み立てる
;logfile = "E:\tmp\"
;getdate timestamp "teraterm_%Y%m%d-%H%M%S.log
;strconcat logfile timestamp
logfile = "E:\my-document\エクセル\自動化\teraterm.log"

logopen logfile 0 0  ; ログの記録を開始
wait "$"

sendln "uname -n"
wait '$'

; ファイル送信
scpsend 'E:\tmp\test.sh' '/tmp/'
do
   mpause 2000
    sendln 'ps -ef | grep -v grep | grep -c "scp"'
    recvln ;上のコマンドを受信
    recvln ;上のコマンドの実行結果である標準出力を受信
    strcompare inputstr '0' ;受信した標準出力が'0'と等しければresult=0
loop while result != 0;

sendln "chmod 777 /tmp/test.sh"
;wait '$'

sendln "/tmp/test.sh"
do
   mpause 1000
    sendln 'ps -ef | grep -v grep | grep "test.sh"'
    recvln ;上のコマンドを受信
    recvln ;上のコマンドの実行結果である標準出力を受信
    strcompare inputstr '0' ;受信した標準出力が'0'と等しければresult=0
loop while result = 0;
wait '$'

;sendln "cat /etc/sysconfig/network"
;wait '$'

;sendln "cat /etc/sysconfig/network-scripts/ifcfg-eth0"
;wait '$'

;sendln "grep 10.0.2.12 /etc/sysconfig/network-scripts/ifcfg-eth0"
;wait '$'

;sendln "sudo su"
;wait "[sudo] password for"
;sendln ROOT_PASSWORD
;wait '#'
;sendln "cat /etc/shadow"
;wait '#'	
;sendln "tail --line 5 /var/log/messages"
;wait '#'
;sendln "exit"
;wait '$'

logclose  ; ログ記録を終了
closett  ; 切断

exit

・その他

host1ip = ''
user1   = ''
passwd1 = ''
user2 = ''
passwd2 = ''
logfile = ''

targetServer = param2 ;;サーバ名とIPアドレスを引数
strsplit targetServer ',' 2 ;;
hostname = groupwatchstr1
ipaddress = groupwatchstr2
;;
countCommand = 4:
strdim cm countCommand
cm[0] = 'uname -a,-'
cm[1] = 'date,-'
cm[2] = '#,-'
cm[3] = '#,-'

for j 0 countCommand -1
    flushrecv
    strsplit cm[j] ',' 2
    command = groupwatchstr1
    param = groupwatchstr2
    ;;
    strcompare param '-'
    if result != 0;
        setsync 1 ;;同期モード
        timeout = 10
        sendln command
        pause 1
        recvln
        recvln
        ret=inputstr
        wait '$' '#'
        strcompare = 0 then
        if result = 0 then;
            com = '#[OK]'
        else
            ERR = '#'
            strcont ERR
            messagegox ERR 'NG' 1
        endif

・その他2

recvln
recvln

;
setsync 1
;改行
messages 'aaa' 'title' 1
fflushrecv ;;バッファの内容を消す
;;