一方の違いを作成して適用(パッチ)する方法は?

一方の違いを作成して適用(パッチ)する方法は?

設定ファイルを更新するシェルスクリプトを作成したいと思います。

サーバー上のファイルには、さまざまなIPアドレスなどの情報が含まれています。

新しいファイルには、システムに追加された新しい構成のより多くのコードが含まれており、すでに構成されている内容を変更せずに、これらの新しい構成をサーバーファイルに追加できるようにしたいです。

例:

サーバーファイル

[config]
ip=127.0.0.1
port=22

新しいファイル

[config]
ip=XXX.XXX.XXX.XXX
port=XX
user=root

私が生成したいファイルは

[config]
ip=127.0.0.1
port=22
user=root

良い方法とは何ですか?実際の構成ファイルはかなり大きく、サーバーファイルにさらに多くの行を追加できるため、行の場所などに依存したくありません。

ファイルを比較してパッチを適用してみましたが、成功しませんでした。

助けてくれてありがとう。

ベストアンサー1

Gilesが述べたように、設定ファイルの種類を理解するツールを使用する必要があります。特定の例では、組み込みのPythonスクリプトを使用する短いPythonスクリプトを使用できます。パーサーの構成基準寸法。

  • まず、サーバーの元の構成ファイルが次のようになるとしますoriginal.cfg

    [config]
    ip=127.0.0.1
    port=22
    
  • 次に、変更を次の新しいファイルに入れますupdate.cfg

    [config]
    user=root
    

    ファイルには、目的のセクションタイトルの下に新しい項目または変更された項目をリストする必要があります。

  • 次に、次のスクリプトを実行します。

    #!/usr/bin/env python
    
    import ConfigParser
    
    config = ConfigParser.ConfigParser()
    
    # Read the original config file
    with open('original.cfg', 'r') as f:
        config.readfp(f)
    
    # Also read in all the changes we'd like to make
    with open('update.cfg', 'r') as f:
        config.readfp(f)
    
    # Write the full new config file out
    with open('output.cfg', 'w') as f:
        config.write(f)
    

もちろん、これを行う方法にはいくつかのバリエーションがあります。たとえば、設定の変更をupdate.cfg別のファイルから読み込むのではなく、Pythonスクリプトに直接エンコードできます。それでも、これは良いスタートベースを提供します。

おすすめ記事