home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / dnsos2.zip / MAKEINC.CMD next >
OS/2 REXX Batch file  |  1995-12-19  |  6KB  |  222 lines

  1. /* ************************************************** */
  2. /* MAKEINC.CMD                                        */
  3. /*                                                    */
  4. /* Créer NAMED.BT, NAMEDHOS.INC,  NAMED???.REV et     */
  5. /* NAMED???.INC à partir d'une table (flat file)      */
  6. /* TCPFILE.TAB avec host_name=adresseIP               */
  7. /*                                                    */
  8. /* Des fichiers FRAME (*.FRM) sont utilisés pour la   */
  9. /* commande interpret de REXX                         */
  10. /*                                                    */
  11. /* Version 1.0     19 décembre 1995                   */
  12. /* Par : Robert Graveline                             */
  13. /* ************************************************** */
  14.  
  15. parse upper arg infile LeReste
  16.  
  17. if infile = "" then infile = "TCPFILE.TAB"
  18. rc = stream(infile,"C","Query Exist")
  19. if rc = "" then do
  20.     say "Fichier" infile "inexistant."
  21.     exit
  22. end
  23.  
  24. domain_name = "test.qc.ca"
  25.  
  26. La_Date = date(S)
  27. La_Date = substr(La_Date,3)
  28. L_Heure = time(H)
  29. Serial_Number = La_Date || L_Heure
  30.  
  31. outfile1 = "NAMEDHOS.INC"    /* Tous les HOSTS */
  32.  
  33. rc=stream(infile,'C','Open Read')
  34. if rc <> 'READY:' then
  35.    do
  36.    SAY 'Fichier "'infile'" introuvable'
  37.    exit(1)
  38.    end
  39.  
  40. "@echo off"
  41. "C:"
  42. "CD \TCPIP\ETC\NAMEDB"
  43. "if exist NAMED.DOM    DEL NAMED.DOM"
  44. "if exist NAMEDHOS.INC DEL NAMEDHOS.INC"
  45. "if exist NAMED???.IN  DEL NAMED???.IN"        /* Par SUBNET */
  46. "if exist NAMED???.REV DEL NAMED???.REV"        /* Par SUBNET */
  47. "if exist NAMED???.INC DEL NAMED???.INC"        /* Par SUBNET */
  48.  
  49. rc=stream(outfile1,'C','Open Write')
  50. if rc <> 'READY:' then
  51.    do
  52.    SAY 'Impossible de créer le fichier de config : "'outfile1'"'
  53.    signal abort_job
  54.    end
  55.  
  56. i_rec = lines(infile)
  57. do while i_rec <> 0
  58.         ligne=linein(infile)
  59.         if ligne = "" then iterate
  60.         i = lastpos('=',ligne)
  61.         if i > 0 then ligne1 = substr(ligne,1,i-1) || " " || substr(ligne,i+1)
  62.         else ligne1 = ligne
  63.         parse var ligne1 host_name IP_Address Le_Reste
  64.         parse value IP_Address with Root "." test "." Subnet "." Host
  65. /*      Host = right(Host,3,"0") */
  66.         host_name1 = host_name || "                                    "
  67.         host_name1 = substr(host_name1,1,8)
  68.  
  69.         ligne = host_name1 "86400 IN A" IP_Address
  70.         rc = lineout(outfile1,ligne)
  71.         if rc <> 0 then do
  72.        SAY 'Erreur d''écriture sur le fichier "'outfile1'"'
  73.                  signal abort_job
  74.        end
  75.  
  76.         ligne = Host "IN PTR" host_name"."domain_name"."
  77.         outfile2 = "NAMED" || Subnet || ".INC"
  78.         rc = lineout(outfile2,ligne)
  79.         if rc <> 0 then do
  80.        SAY 'Erreur d''écriture sur le fichier "'outfile2'"'
  81.                  signal abort_job
  82.        end
  83.         i_rec=lines(infile)
  84. end
  85.  
  86. /* Fermer les fichiers */
  87. rc=stream(infile,'C','Close')
  88. if rc <> 'READY:' then
  89.    do
  90.    SAY 'Erreur de fermeture du fichier ' infile
  91.    signal abort_job
  92.    end
  93. rc=stream(outfile1,'C','Close')
  94. if rc <> 'READY:' then
  95.    do
  96.    SAY 'Erreur de fermeture du fichier ' outfile1
  97.    signal abort_job
  98.    end
  99.  
  100. /* ******************************************************************** */
  101. /*        Recréer les fichier NAMED.DOM et REV à partir du *.FRM        */
  102. /*        pour mettre un SERIAL NUMBER différent et tenir compte        */
  103. /*        de tous les fichiers NAMEDsubnet.INC que l'on vient de        */
  104. /*        créer.                                                        */
  105. /* ******************************************************************** */
  106.  
  107. /* Fichier NAMED.DOM */
  108. infile  = "NAMEDHOS.FRM"
  109. outfile = "NAMED.DOM"
  110.  
  111. rc = stream(infile,'C','open read')
  112. if rc <> 'READY:' then
  113.    do
  114.    SAY 'Fichier "'infile'" introuvable'
  115.    signal abort_job
  116.    end
  117.  
  118. "if exist NAMED.DOM del NAMED.DOM"
  119. rc = stream(outfile,'C','open write')
  120. if rc <> 'READY:' then
  121.    do
  122.    SAY 'Impossible de créer le fichier "'outfile'"'
  123.    signal abort_job
  124.    end
  125.  
  126. /* Replace des variables */
  127. i_rec = lines(infile)
  128. do while i_rec <> 0
  129.         ligne=linein(infile)
  130.         interpret 'ligne="'ligne'"'
  131.         rc = lineout(outfile,ligne)
  132.         if rc <> 0 then do
  133.        SAY 'Erreur lors de la copie du fichier sur "'outfile'"'
  134.                  signal abort_job
  135.        end
  136.         i_rec=lines(infile)
  137. end
  138. /* Fermeture des fichiers */
  139.  
  140. rc = stream(infile,'C','close')
  141. if rc <> 'READY:' then
  142.    do
  143.    SAY 'Erreur de fermeture du fichier :' infile
  144.    signal abort_job
  145.    end
  146.  
  147. rc = stream(outfile,'C','close')
  148. if rc <> 'READY:' then
  149.    do
  150.    SAY 'Erreur de fermeture du fichier :' outfile
  151.    signal abort_job
  152.    end
  153.  
  154.  
  155. /* Créer les fichiers NAMED???.REV */
  156. /* Faire une boucle pour tous les SUBNETS, de 1 à 255 si ???.INC existe */
  157. "echo on"
  158. "copy named_bt.frm named.bt > nul:"
  159. i = 1
  160. do while i < 256
  161.    incfile = "NAMED"i".INC"
  162.    rc2 =  stream(incfile,'C','Query Exists')
  163.  if rc2 > "" then do
  164.    Subnet = i
  165.    infile  = "NAMEDREV.FRM"
  166.    outfile = "NAMED"i".REV"
  167.    say outfile
  168.    "if exist" outfile "del" outfile
  169.    ligne = "primary" i".100.142.in-addr.arpa c:\\tcpip\\etc\\namedb\\"outfile
  170.    say ligne
  171.    rc = lineout("NAMED.BT",ligne)
  172.  
  173.    rc = stream(infile,'C','open read')
  174.    if rc <> 'READY:' then do
  175.       SAY 'Fichier "'infile'" introuvable'
  176.       signal abort_job
  177.       end /* if do */
  178.  
  179.    rc = stream(outfile,'C','open write')
  180.    if rc <> 'READY:' then do
  181.       SAY 'Impossible de créer le fichier "'outfile'"'
  182.       signal abort_job
  183.       end /* if do */
  184.  
  185.    /* Replace des variables */
  186.    ii = lines(infile)
  187.    do while ii <> 0
  188.            ligne=linein(infile)
  189.            interpret 'ligne="'ligne'"'
  190.            rc = lineout(outfile,ligne)
  191.            if rc <> 0 then do
  192.           SAY 'Erreur lors de la copie sur fichier "'outfile'"'
  193.                    signal abort_job
  194.        end /* if do */
  195.            ii=lines(infile)
  196.    end /* do while */
  197.    /* Fermeture des fichiers */
  198.    
  199.    rc = stream(infile,'C','close')
  200.    if rc <> 'READY:' then do
  201.       SAY 'Erreur de fermeture du fichier :' infile
  202.       signal abort_job
  203.       end /* if do */
  204.  
  205.    rc = stream(outfile,'C','close')
  206.    if rc <> 'READY:' then do
  207.       SAY 'Erreur de fermeture du fichier :' outfile
  208.       signal abort_job
  209.       end /* if do */
  210.  end /* if do */
  211.    i = i + 1
  212. end /* do while */
  213.  
  214. /* Mettre à jour le DNS */
  215. "nssig -HUP"
  216.  
  217.  
  218. exit(0)
  219.  
  220. abort_job:
  221.    exit(1)
  222.