bashを使用して/ etc / exportを変更する実際の例は何ですか?
例:
次のルールが存在し、有効であることを確認したいと思います。
/export/home 2400:123::/32(rw,no_root_squash)
それは次のようになります。
- まだ存在しない場合にのみ追加します(どのような形式でも)。
- セクションが存在する場合は、既存の項目を更新する必要があります(オプションの更新など)。
既存のファイルで考えられる構文:
さまざまなスペースとさまざまなオプション
/export/home 2400:123::/32(rw,no_root_squash,no_subtree_check)
同じ行に複数を許可
/export/home 2400:123::/32(rw,no_root_squash,no_subtree_check) 2400:321::/32(rw,no_root_squash,no_subtree_check)
上記の組み合わせに加えて。
最初はこれを達成するためにaugeasを使用したかったのですが、/ etc / exportsファイルのIPv6アドレスにエラーがありました。
/ etc / exportsファイルはスクリプトを中断することなく独立した修正を許可する必要があります(これを行うと、問題の規則だけが正しく有効であることを確認し、残りはそのまま残す必要があります)。
ベストアンサー1
AugeasとPuppetが利用できない場合は、次のようにします。
if grep -qF '^/export/home' /etc/exports;then
sed -i \
's@^/export/home.*$@/export/home 2400:123::/32(rw,no_root_squash)@'\
/etc/exports
else
echo '/export/home 2400:123::/32(rw,no_root_squash)' >> /etc/exports
fi
しかし注意してください。これは、すべてのエクスポートルールが/export/home
ユーザーが提供した定義に置き換えることができると仮定します。