基本的な流れ
spawnでftp起動
expectで応答待ち
sendで入力文字列送信
※expectオプション「-re」は正規表現利用時
以下参考スクリプト
(cronなどで実行する)
#!/usr/bin/expect
set host “hostname”
set user “username”
set pass “password”
set file “filename”
set prompt “Name.*”
set lcd_cmd “lcd /local/to/dir”
spawn ftp $host;
expect -re “$prompt”
send “$user\r”
expect “Password:”
send “$pass\r”
expect “ftp>”
send “$lcd_cmd\r”
expect “ftp>”
send “get $file\r”
expect “ftp>”
send “bye\r”
interact
exit
====================================
ディフォルトのタイムアウトは10秒。
大きいファイルを転送する場合などは
expect -timeout -1 “ftp>”
などとしてタイムアウトしないようにする。
(任意の値(秒数)も設定可能)
mysqldumpはデフォルトでUTF-8で出力するらしい。
違う文字コードで格納していたので?文字化けする。
my.cnfのmysqldumpの項
[mysqldump]
default-character-set=binary
とすることで、格納された文字コードで出力される。
■マクロファイル作成
(マクロ言語補足)
connect: 接続
strconcat: 変数に文字列付けたし
wait: Hostからの受信待ち
sendln: Clientから送信
(以下記述例)
;各種値設定
Host = ‘host_name’
User1 = ‘user_name’
Password1 = ‘password’
Ini = ‘TERATERM.INI’
Prompt1 = ‘$’
PromptPW = ‘Password:’
Df = ‘df’
;接続コマンド作成
;Iniはなくてもよい。
;Hostごとにマクロを複数作るときなど
;マクロごとに背景の違うTERATERM.INIを指定するといいかも
;/1のところはssh2が使えれば/2とするべき
Cmd = ”
strconcat Cmd Host
strconcat Cmd ‘ /ssh /1 /auth=password’
strconcat Cmd ‘ /user=’
strconcat Cmd User1
strconcat Cmd ‘ /passwd=’
strconcat Cmd Password1
strconcat Cmd ‘ /f=’
strconcat Cmd Ini
;接続
connect Cmd
;対話的処理スタート(dfコマンド発行)
wait Prompt1
sendln Df
※このマクロファイルをttpmacro.exeと同じフォルダにfilename.ttlなどとして保存する。
■マクロショートカットへ関連付け
ttpmacro.exeのショートカットをどこかに作る
プロパティのリンク先に
引数としてマクロファイル名を記述
(記述例)
“C:\Program Files\teraterm\ttpmacro.exe” “filename.ttl”
公開鍵認証の場合はこちら
手順をムービーにしてみた。
UTF-8 TeraTerm Pro with TTSSH2 マクロファイル作成ムービー
Just another WordPress site