python Fabricを使ってリモートマシンhostsを動的に修正する方法
一、fabricについて
fabricは強力なカバンで、多機操作、配置の命令をシナリオに固化させます。
詳細はドキュメントhttp://fabric-chs.readthedocs.io/zh_CN/chs/を参照することができます。
二、遠隔hostsを修正する方法
リモートサーバーのhostsをどうやって修正しますか?二つの方法を思い付きました。
最初に思いついた方法はコマンドでサーバーに接続し、エディタvimまたは他のhostsファイルを開いて編集します。この方法には明らかな欠点があります。シナリオの操作が複雑で、シナリオの中でエディタを使って操作する必要があります。また、既存のhostsを動的に解析して、hostsを統合する必要があります。
第二の方法はファイルの交換方式を採用して、現地でホームスティスを編集し、編集した後、サーバーにアップロードし、既存のhostsファイルを置き換えることです。この方法は操作が簡単で、シナリオの実行も複雑ではなく、実現可能性が高いです。もちろん欠点もあります。ホームを追加する時、操作者自身がホームスティスに対して非常にはっきりしている必要があります。
三、ソースコード
fabricは強力なカバンで、多機操作、配置の命令をシナリオに固化させます。
詳細はドキュメントhttp://fabric-chs.readthedocs.io/zh_CN/chs/を参照することができます。
二、遠隔hostsを修正する方法
リモートサーバーのhostsをどうやって修正しますか?二つの方法を思い付きました。
最初に思いついた方法はコマンドでサーバーに接続し、エディタvimまたは他のhostsファイルを開いて編集します。この方法には明らかな欠点があります。シナリオの操作が複雑で、シナリオの中でエディタを使って操作する必要があります。また、既存のhostsを動的に解析して、hostsを統合する必要があります。
第二の方法はファイルの交換方式を採用して、現地でホームスティスを編集し、編集した後、サーバーにアップロードし、既存のhostsファイルを置き換えることです。この方法は操作が簡単で、シナリオの実行も複雑ではなく、実現可能性が高いです。もちろん欠点もあります。ホームを追加する時、操作者自身がホームスティスに対して非常にはっきりしている必要があります。
三、ソースコード
# encoding=utf-8
from fabric.api import *
# hosts
env.hosts = ['10.13.131.46', '10.13.135.121', '10.13.133.232']
env.password = "xxxxxxxxxxxxx"
env.user = "xiuzhu"
env.port = 10022
@task
def flush():
sudo('cp /etc/hosts /home/xiuzhu/hosts.bak')
put("host1", "/home/xiuzhu/hosts.new")
sudo("mv /etc/hosts /etc/hosts.bak")
sudo("mv /home/xiuzhu/hosts.new /etc/hosts")
以上のpython Fabricを使って、リモートマシンhostsを動的に修正する方法は、小編集が皆さんに提供した内容を全部共有することです。参考にしてもらいたいです。どうぞよろしくお願いします。