0

スクリプトで sed コマンドを使用して、HOST で始まる行を検索し、一致するホスト名のパターンをチェックして、欠落しているホスト名を LDAP 構成ファイルに追加しようとしています。

LDAP.CONF のサンプル エントリ

HOST nzlsfn55.zeus.ghsewn.com nzlsfn60.zeus.ghsewn.com  nznsfn60.zeus.ghsewn.com

sed を使用してパターンを検索し、不足しているエントリを追加する方法を教えてください。

4

3 に答える 3

1

ホストのリストがあり、不足しているホストを追加したい場合:

#!/bin/bash

for arg; do
    grep &>/dev/null "^HOST \+.*\<$arg\>" ||
        sed -i "s/$/ $arg/" /etc/ldap/ldap.conf
done

次のようなスクリプトを使用します。

./script host1 host2 host3

/etc/ldap/ldap.confテストする前にバックアップしてください。(そこではテストされていません)

編集

新しい要件に合わせて、次のコードを参照してください。

#!/bin/bash

hosts="host1 host2 host3"

for arg in $hosts; do
    grep &>/dev/null "^HOST \+.*\<$arg\>" ||
        sed -i "s/$/ $arg/" /etc/ldap/ldap.conf
done
于 2012-10-01T22:32:30.607 に答える
0

私は自分のタスクを達成するために以下のコードを使用しました。私のコードにはもっと簡単な方法や改善が必要だと確信しています-皆さんの入力に感謝します

if [-e /etc/openldap/ldap.conf]; それから

        entries=`grep -i host /etc/openldap/ldap.conf`

        count=`grep -i host /etc/openldap/ldap.conf | wc -w`


else

        echo " no ldap.conf file available "
        exit

fi

#if condition checking for no host entry

if [ $count -eq 0 ];
then


        echo " no host entry available in config file "
        exit

fi


#if condition checking for less than 3 ldap entries

if [ $count -eq 4 ];
then

        echo " `hostname` has the following ldap entries : $entries "
else

        #less then than 3 entries will get updated here
        if [ $count -lt 4 ];
        then

        sed -i.bak 's/^host.*\|^HOST.*/host nzlsfn55.zeus.ghsewn.com nzlsfn60.zeus.ghsewn.com  nznsfn60.zeus.ghsewn.com/' /etc/openldap/ldap.conf

        echo " Sucessfully added LDAP hosts"

        fi
于 2012-10-02T01:52:38.043 に答える
0

私はこれに使用GNU awkします。という名前のファイルにホストのリスト (行区切り) があると仮定するとhosts.txt、次のように実行できます。

awk -f script.awk hosts.txt /etc/ldap/ldap.conf > new_ldap.conf

の内容script.awk:

FNR==NR {
    hosts[$0]++
    next
}

/^HOST/ {
    for (j=2; j<=NF; j++) {
        array[$j]++
    }
    for (i in hosts) {
        if (!(i in array)) {
            $0 = $0 OFS i
        }
    }
    delete array
}1
于 2012-10-01T23:35:42.857 に答える