設定ファイルを更新するシェルスクリプトを作成したいと思います。
サーバー上のファイルには、さまざまな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スクリプトに直接エンコードできます。それでも、これは良いスタートベースを提供します。