機能 ショートカットキー
リファレンス(参考URL)一覧へ移動 R
記事URLをMarkDownとしてコピー Ctrl+M
前のコードタグへ移動 Ctrl+←
次のコードタグへ移動 Ctrl+→
ヘルプを表示・非表示 H
Tips
- ショートカットキーは記事上で有効です。ヘッダー/フッター付近では機能しないことがあります。
- コードタグ移動機能がうまく動かないときは、Shift+F5でページを更新してみてください。
- このウィンドウを閉じるには、Hキーをもう一度押してください

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

これで完了です。

この記事で欲しい情報が見つからなかった方へ

この記事の更新情報がある場合があります。
この記事は以下の記事とも関連性があると思われます。

SSHで起動したsinatraが終了していない場合やうまく動かない場合の対処
外部(WAN)からSSH接続出来ない原因は意外なところに
WP-CLIでサイトアドレスとWordPress アドレスのURLをSSH経由で変更
Ubuntu(or 以外)からWindowsへSSH
Linux/ubuntu SSH経由でリモートリーにGUIソフトウェアを開く
virtualboxのkali linuxでSSHフォワーディング及びファイル共有ができなかった件
virtualboxで共有フォルダ/ポートフォワーディング/SSHフォワーディングを設定してホスト完結のRails開発環境を構築しよう


管理人の方針で、既存の記事の編集はせず、新しい情報や大きな既存情報の更新があった場合には、新しい記事として公開することになっています。
当記事で欲しい情報が見つからなかった・解決に至らなかった場合、これらのリンクがお役に立てるかも知れません。

どうやってこの関連記事を生成しているの?
この機能のPHPソースコード(2500行)

コメントを残す

Close Menu