Bash "HERE documents " help

Discussion in 'Programming/Scripts' started by woodson2, Mar 2, 2012.

  1. woodson2

    woodson2 New Member

    I'm trying to enter a block of text into an existing configuration file for OpenLDAP so the setup can be fully scripted.

    The text below is what I want to enter into slapd.conf and this all works well and good, however as you probably know this will place the text at the end of the file. What I'd like to know is how can I choose where in an existing file I want to place the text or is this beyond the scope of HERE documents?

    Code:
    cat >> slapd.conf << "EOF"
    access to attrs=userPassword
            by self write
            by anonymous auth
            by dn.base="cn=root,dc=abclott,dc=lott" write
            by group.base="cn=infrastructure,ou=GTECH,ou=groups,dc=abclott,dc=lott" write
            by dn.base="uid=ldapmgr,ou=people,dc=abclott,dc=lott" write
            by * none
    
    access to dn.children="ou=people,dc=abclott,dc=lott"
            by dn.base="cn=root,dc=abclott,dc=lott" write
            by dn.base="cn=bind,dc=abclott,dc=lott" read
            by users read
            by * none
    
    access to dn.children="ou=groups,dc=abclott,dc=lott"
            by dn.base="cn=root,dc=abclott,dc=lott" write
            by dn.base="cn=bind,dc=abclott,dc=lott" read
            by users read
            by * none
    
    access to dn.children="ou=servers,dc=abclott,dc=lott"
            by dn.base="cn=root,dc=abclott,dc=lott" write
            by group.base="cn=infrastructure,ou=GTECH,ou=groups,dc=abclott,dc=lott" write
            by dn.base="cn=bind,dc=abclott,dc=lott" read
            by users read
            by * none
    
    access to dn.subtree="ou=SUDOers,dc=abclott,dc=lott"
            by dn.base="cn=root,dc=abclott,dc=lott" write
            by dn.base="cn=bind,dc=abclott,dc=lott" read
            by users read
            by * none
    
    access to *
            by dn.base="cn=root,dc=abclott,dc=lott" write
            by dn.base="cn=bind,dc=abclott,dc=lott" search
            by * none
    EOF
     
  2. nbhadauria

    nbhadauria New Member

    You can use sed command to append the config into file:

    sed -i '/^SEARCHPATTERN/ a\
    access to attrs=userPassword\
    by self write\
    by anonymous auth\
    by dn.base="cn=root,dc=abclott,dc=lott" write\
    by group.base="cn=infrastructure,ou=GTECH,ou=groups,dc=abclott,dc=lott" write\
    by dn.base="uid=ldapmgr,ou=people,dc=abclott,dc=lott" write\
    by * none' /etc/ldap/slapd.conf

    Or even you can insert config.txt file in the config:

    sed -i '/^SEARCHPATTERN/r config.txt' /etc/ldap/slapd.conf
     

Share This Page