FTP自動実行(cron&expect)

基本的な流れ
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 文字化け

mysqldumpはデフォルトでUTF-8で出力するらしい。
違う文字コードで格納していたので?文字化けする。
my.cnfのmysqldumpの項
[mysqldump]
default-character-set=binary
とすることで、格納された文字コードで出力される。

UTF-8 TeraTerm Pro with TTSSH2 自動ログイン

■マクロファイル作成
(マクロ言語補足)
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 マクロファイル作成ムービー