Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: b2l в Sep 07, 2010, 18:30



Титла: bash script за превръщане на adr в ldif
Публикувано от: b2l в Sep 07, 2010, 18:30
Имаме файл със следните записи:
Код
GeSHi (Bash):
  1. #CONTACT
  2. ID=256
  3. NAME=backtolife
  4. CREATED=1282574788
  5. MAIL=backtolife@somemail.com
  6. ICON=Contact0
  7.  
  8. #CONTACT
  9. ID=257
  10. NAME=backtolife2
  11. CREATED=1282804638
  12. MAIL=backtolife@backtolife.com
  13. ICON=Contact0
  14. ...
  15.  

Трябва ми скрипт който да прави това:
Код
GeSHi (Bash):
  1. dn: cn=backtolife,mail=backtolife@somemail.com
  2. objectclass: top
  3. objectclass: person
  4. objectclass: organizationalPerson
  5. objectclass: inetOrgPerson
  6. objectclass: mozillaAbPersonAlpha
  7. givenName: backtolife
  8. cn: backtolife
  9. mail: backtolife@somemail.com
  10. modifytimestamp: 0
  11.  
  12. dn: cn=backtolife2,mail=backtolife@backtolife.com
  13. objectclass: top
  14. objectclass: person
  15. objectclass: organizationalPerson
  16. objectclass: inetOrgPerson
  17. objectclass: mozillaAbPersonAlpha
  18. givenName: backtolife2
  19. cn: backtolife2
  20. mail: backtolife@backtolife.com
  21. modifytimestamp: 0
  22.  

С други думи: да взима NAME и MAIL от файла с име <name>.adr и да ги слага на на мястото cn=, givenName, mail и това е във файл <name>.ldif. останалите неща във файла ldif са постоянни: objectclass. modifytimestamp-a също е 0 във всички записи.
А иначе файла <name>adr е export на адрес книгата от Operamail, а файла <name>.ldif искам да го импортирам в mozilla thunderbird.


Титла: Re: bash script за превръщане на adr в ldif
Публикувано от: neter в Sep 07, 2010, 19:42
Код
GeSHi (Bash):
  1. #!/bin/bash
  2.  
  3. source_file=''
  4. output_file=''
  5.  
  6. ### НЕ Е НУЖНО ПОВЕЧЕ РЕДАКТИРАНЕ ###
  7.  
  8. names=(`cat $source_file | grep 'NAME' | cut -d'=' -f2`)
  9. mails=(`cat $source_file | grep 'MAIL' | cut -d'=' -f2`)
  10.  
  11. y=0
  12. for i in ${names[@]}; do
  13.    echo "dn: cn=$i,mail=${mails[$y]}
  14. objectclass: top
  15. objectclass: person
  16. objectclass: organizationalPerson
  17. objectclass: inetOrgPerson
  18. objectclass: mozillaAbPersonAlpha
  19. givenName: $i
  20. cn: $i
  21. mail: ${mails[$y]}
  22. modifytimestamp: 0
  23. " >> $output_file
  24.    y=$(($y+1))
  25. done


Титла: Re: bash script за превръщане на adr в ldif
Публикувано от: b2l в Sep 07, 2010, 19:51
Благодаря много за помоща.
Код
GeSHi (Bash):
  1. | cut -d'=' -f2
- тази част ми липсваше.

Еми това е, ако на някой му се налага да обръща адреси от адресна книга на Operamail за да ги импортира в thunderbird, може да ползва този скрипт.

@neter  [_]3