SSH / SFTPを使用してMikrotikをSubversionにバックアップする

エントリー:





SubversionでRouterOS構成をバックアップする実装をSSH / SFTP経由で共有しようとします。



私の元の投稿はMikrotikフォーラムで見つけることができます: Mikrotikの設定をSubversion / SVNリポジトリにSSHでバックアップする



ローカルスペースで、私はこのアプローチを思いつきました。Pythonツールを使用したMikroTiksによる構成の集中コレクションですが、ftpのアイデアは私には合いません。



ROSバックアップについて:



ROS設定の完全なコピーが必要な場合は、次のコピーを作成することをお勧めします。

1. ROSにインストールされた証明書(優れたプラットフォームでの回復の可能性のため)

2. ROS設定のバックアップ

3. ROS設定のエクスポート(設定内容と設定をいつでも確認できます)



アイデアの本質:



Linuxサーバーとの類推でアプローチします。 私たち/などはSubversionに行きます。そこでは、設定の変更に関するアラートを常に受信します。さらに、役立つ実際の準備金が常にあります。

Mikrotik Wikiのアイデアに触発されました: システムバックアップにSSHを使用する



ロジック:



1. Linuxのローカルフォルダーにエクスポートする

2.前のエクスポートとの比較を実行します

3.違いがある場合は、バックアップを実行します(デバイスファイルシステムにもエクスポートします)

4.変更をSVNに送信する



要件:



1. SSHが有効なROS 5.15

2. Subversion

3. ssh、sftp、sshpass、svnクライアントがインストールされたLinux



セットアップ:



1. Linuxサーバーで、cronバックアップタスクを実行するアカウントの下からROS公開キーをknown_hostsファイルにインポートします。



ssh-keyscan -v -p 22 -t dsa 192.168.0.1 >> ~/.ssh/known_hosts
      
      







2. ROSで、必要なアクションを実行するために必要な権限を持つユーザーを作成し、バックアップタスクを実行するサーバーのアドレスにバインドします。



export = ssh, ftp,read, sniff

backup = ssh, test, policy

get export via sftp = ssh, ftp

get backup via sftp = ssh, ftp, sensitive








 /user group add name=backup policy=ssh,ftp,read,sniff,test,policy,sensitive /user add name=backuper password="password" group=backup address=192.168.0.2 disabled=no
      
      







3. SVNでは、デバイスのディレクトリを作成し、デバイスの名前に従って作成します。

 svn mkdir --parents https://svn.domain.com/svn/admin/trunk/usingw01 --no-auth-cache --username user --password '*****' --message "Created empty directory for usingw01 - `date +"%Y-%m-%d %H:%M:%S"`"
      
      







4. Linuxでは、SVNの作業コピー用のディレクトリを作成し、デバイス名に従って作成します。

 mkdir -p /root/backup/trunk/usingw01/
      
      







5. Linuxでは、ROSファイルを保存するフォルダーからSVNの作業コピーを作成します。

 cd /root/backup/trunk/usingw01 svn checkout https://svn.domain.com/svn/admin/trunk/usingw01 . --trust-server-cert --non-interactive --no-auth-cache --username usingw01 --password 'svnpassword'
      
      







6. Linuxでは、バックアップ自動化スクリプト用のフォルダーを作成します。

 mkdir /root/backup_scripts
      
      







7. Linuxで、スクリプトを作成します。

 vi /root/backup_scripts/backup_usingw01_to_svn.sh
      
      







 #!/bin/sh # routername="usingw01" sshhost="192.168.0.1" sshport="22" sshuser="backuper" sshpassword="password" svnlocalpath="/root/backup/trunk/$routername" svnusername="usingw01" svnpassword="svnpassword" current_export_name="$routername-config-export-current.rsc" precedent_export_name="$routername-config-export-precedent.rsc" current_backup_name="$routername-config-backup-current.backup" # # sshpass -p $sshpassword ssh $sshuser@$sshhost -p $sshport export >$current_export_name diff -I "by Router" $current_export_name $svnlocalpath/$precedent_export_name # if [ "$?" -ne "0" ]; then sshpass -p $sshpassword ssh $sshuser@$sshhost -p $sshport export file=$current_export_name sshpass -p $sshpassword ssh $sshuser@$sshhost -p $sshport system backup save name=$current_backup_name sshpass -p $sshpassword sftp -oPort=$sshport $sshuser@$sshhost:$current_backup_name # mv -f $current_export_name $svnlocalpath/ mv -f $current_backup_name $svnlocalpath/ rm -f $svnlocalpath/$precedent_export_name svn add --force $svnlocalpath/$current_export_name svn add --force $svnlocalpath/$current_backup_name svn commit $svnlocalpath --trust-server-cert --non-interactive --no-auth-cache --username $svnusername --password $svnpassword --message "Automated commit of $routername at `date +"%Y-%m-%d %H:%M:%S"`" # mv -f $svnlocalpath/$current_export_name $svnlocalpath/$precedent_export_name exit 1 # # fi mv -f $current_export_name $svnlocalpath/$precedent_export_name exit 0 #
      
      







8. Linuxでは、バックアップを実行するcronタスクを作成します。

 crontab -e
      
      





 00 04 * * * sh /root/backup_scripts/backup_usingw01_to_svn.sh
      
      







結果:



明日の朝、SVNでROS構成のエクスポートと完全バックアップのコピーを受け取ります。さらに、それらは迅速な回復のためにデバイス上にあります。

また、SVN-notifyを構成して、行われた変更に関する通知と差分を受信することもできます。

SVNでは、いつでも最新バージョンのバックアップとエクスポートをダウンロードできます。 過去の設定の違いを確認し、変更を確認することもできます。 複数の人がデバイスで作業する場合に便利です-誰もがメールの変更を確認し、何がどのように変更されたかを知ることができます。

画像



安全性:



エクスポートのPPPなどのパスワードはクリアテキストで保存されることに注意してください。 セキュリティを強化するために、キーを使用できます

 hide-sensitive
      
      



エクスポートする場合、ただしこれはバックアップの実行に制限を課します。 つまり たとえば、PPPにユーザーを追加するとき、バックアップを受け取りません。

さて、SVNのセキュリティを忘れないでください。



制限事項:



システムユーザーを追加すると、スクリプトはバックアップされません。 これは、エクスポートがROSアカウントをエクスポートしないという事実によるものです(セキュリティ上の理由から)。

この機会に、私は開発者に手紙を書き、構成が最後に変更されたときにエクスポートに情報を追加するよう依頼しました。 彼らは、同様のことがバージョン5.12にあるだろうと答えました-コンパクトにエクスポートしますが、これはそうではなく、今のところこれらの制限は残っています。



使用済みの資料と便利なリンク:



1. マニュアル:構成管理

2. バックアップとエクスポートの違い-変更を監視する方法

3. 証明書のバックアップと復元

4. バックアップファイルのリモート作成



このようなアプローチのアイデアが誰かに役立つことを願っています。



All Articles