sedを使用してAIXで/etc/groupを更新する

sedを使用してAIXで/etc/groupを更新する

ローカルルートグループに Centrify/AD アカウントを追加する必要があります。 LinuxおよびAIXで構成されているすべてのサーバーでADアカウントを追加しても「正しい」方法では認識されないため、/ etc / groupを手動で編集する必要があります。 。私のLinux部分は動作しています。

LGRP=`grep wheel /etc/group`

ACCT="cycoprts"

sed -i "s/${LGRP}/&,${ACCT}/" /etc/group

sed -i "s/${LGRP}/&${ACCT}/" /etc/group

最初のコマンドは/ etc / groupに既存のエントリがある場合はコンマを追加し、2番目のコマンドはグループに他のユーザーが追加されていない場合はカンマをスキップします。

AIXで同じコマンドをテストする場合(AIXなので、-iなし)、次の結果が得られます(実際には/etc/groupを使用せずに/etc/testを「ダミー」テスト文書として使用します)。

AGRP=`grep w3b3root /etc/group`

ACCT1="cycorpad"

root@xxxxxxxxxxx:/etc$ sed "s/${AGRP}/&${ACCT1}/" /etc/group
sed: 0602-404 Function /w3b3root:!:16:/&cycorpad/ cannot be parsed**

どんなアイデアがありますか?

ベストアンサー1

まず、サポートされていない「-i」を削除すると、結果はファイルに書き戻されず、代わりに修正結果を標準出力に印刷できることを意味します。

この問題を解決するには:

AIX システムに「gsed」がインストールされていることを確認し、AIX で sed の代わりに gsed を使用していることを確認し、「-i」をリセットします。

または、sedの出力を一時ファイルに書き込み、一時ファイルを元のファイルに戻します。

注:stdoutを同じファイルに直接リダイレクトしないでください。それ以外の場合は、「sed」がその内容を表示する前にファイルが空になります。

おすすめ記事