telnet経由でpearlのlib-telnetを使ってシェルと対話していたが、やはりtelnetポートを開放するのは怖いので、ssh経由としたかった。lib-ssh2というモジュールもあるのだが、ちょっと使いにくい。
色々とgoogle先生に訊ねていたところ、#!/bin/sh経由、もしくは#!/usr/bin/expectでスクリプトを書くと所望の動作ができることが判った。
接続先:example.jp
SSHのポート:65534
ユーザ名:user
アクションは、手元ホストのファイルを、example.jpにscpで転送する。
#!/bin/sh
HOST="example.jp"
PORT="65534"
HOSTUSER="user"PSWD="password"
PREVIPFILE = "/tmp/CurrentGlobalIP"
TOFILE="/tmp/CurrentHomeIP"expect -c "
spawn scp -P ${PORT} ${PREVIPFILE} \
${HOSTUSER}@${HOST}:${TOFILE}
expect \"${HOSTUSER}@${HOST}'s password: \" {
send \"$PSWD\"
}
expect eof
exit
"
IPアドレスが変化したら、VPSのサーバに連絡する仕組みを実験中。
コメント