- Published on
SSHでのrsyncをcronとexpectを使って完全に自動化する
SSHでのrsyncをcronとexpectを使って完全に自動化したいと思います。
rsync expect
こんな感じでスクリプトを作ります。
#!/usr/bin/expect
# log_file /var/log/expect.log
set PW "password"
set Prompt "\[#$%>\]"
# set RemoteHost [lindex $argv 0]
set timeout 5
spawn rsync -av -e "ssh" -r "/mnt/c/ContaCam/Logicool HD Pro Webcam C920/2018/" root@150.0.0.0/root/lib/contacam
# spawn env LANG=C /usr/bin/ssh ${RemoteHost}
expect {
-glob "(yes/no)?" {
send "yes\n"
exp_continue
}
-glob "password:" {
send -- "${PW}\n"
}
}
expect {
-glob "${Prompt}" {
interact
exit 0
}
}
set PW "password"
のところとspawn rsync -av -e "ssh" -r "/mnt/c/ContaCam/Logicool HD Pro Webcam C920/2018/" root@150.0.0.0/root/lib/contacam
は変更してください。
作ったスクリプトを実行してみます。
yuis@DESKTOP-UHU8FSH:/mnt/c/pg$ /mnt/c/pg/expect/rsync_ssh
spawn rsync -av -e ssh -r /mnt/c/ContaCam/Logicool HD Pro Webcam C920/2018/ root@0.0.0.0:/root/lib/contacam
root@0.0.0.0's password:
sending incremental file list
created directory /root/lib/contacam
./
01/
01/31/
01/31/確認済み/
01/31/確認済み/det_2018_01_31_08_23_53.gif
01/31/確認済み/det_2018_01_31_08_23_53.mp4
01/31/確認済み/det_2018_01_31_08_24_12.gif
01/31/確認済み/det_2018_01_31_08_24_12.mp4
01/31/確認済み/det_2018_01_31_08_26_38.gif
01/31/確認済み/det_2018_01_31_08_26_38.mp4
01/31/確認済み/det_2018_01_31_08_28_57.gif
01/31/確認済み/det_2018_01_31_08_28_57.mp4
01/31/確認済み/rec_2018_01_31_16_17_52.mp4
sent 1,986,489 bytes received 247 bytes 1,324,490.67 bytes/sec
total size is 1,985,304 speedup is 1.00
はい、ちゃんとパスワード入力も自動化してくれましたね。
次はこれをcronに登録します。
rsync cron
これをcronに登録すればたぶんできます。
*/10 * * * * /mnt/c/pg/expect/rsync_ssh
しかし、bash on windowsではcronがバグが多すぎて使えません。
なので、シェルスクリプトでループ回して実行、というやり方をしたいと思います。 そのうちマイクロソフトがcronのバグ直してくれるでしょうから、それまでの辛抱です。
まず、テスト用。
#!/bin/bash
while [ 1=0 ]
do
sleep 3
echo "===================================================================="
df -h
done
では、こっちも。
#!/bin/bash
while [ 1=0 ]
do
sleep 3
echo "===================================================================="
/mnt/c/pg/expect/rsync_ssh
done
こんな出力がされましたでしょうか。
$ . /mnt/c/pg/dev.sh
====================================================================
spawn rsync -av -e ssh -r /mnt/c/ContaCam/Logicool HD Pro Webcam C920/2018/ root@1.1.1.1:/root/lib/contacam
root@1.1.1.1's password:
sending incremental file list
sent 334 bytes received 15 bytes 698.00 bytes/sec
total size is 1,985,304 speedup is 5,688.55
====================================================================
spawn rsync -av -e ssh -r /mnt/c/ContaCam/Logicool HD Pro Webcam C920/2018/ root@1.1.1.1:/root/lib/contacam
root@1.1.1.1's password:
sending incremental file list
sent 334 bytes received 15 bytes 698.00 bytes/sec
total size is 1,985,304 speedup is 5,688.55
====================================================================
spawn rsync -av -e ssh -r /mnt/c/ContaCam/Logicool HD Pro Webcam C920/2018/ root@1.1.1.1:/root/lib/contacam
root@1.1.1.1's password:
sending incremental file list
sent 334 bytes received 15 bytes 698.00 bytes/sec
total size is 1,985,304 speedup is 5,688.55
では、5分毎に実行してくれるようにしましょう。
#!/bin/bash
while [ 1=0 ]
do
sleep 300
echo "===================================================================="
/mnt/c/pg/expect/rsync_ssh
done
これで完了です。
- Authors
- Name
- Shou Arisaka / 有坂 翔
- 情報技術者 / Z世代プログラマー / 米大学院にてデータサイエンスを学ぶ
- ITプロフェッショナルとして活動しています。React.js等のモダンなウェブ制作・アプリ開発を得意としており、Java・Python・Rust等のプログラミング言語を用いたソフトウェア開発全般を行っています。
- Github 🐙StackOverflow 🔥Qiita 📝
- TechFreeTools 🔧About.me 👤