Ä¿ÇǴнº, ½Ã½ºÅÛ ¿£Áö´Ï¾îÀÇ ½°ÅÍ
  ½ºÀ§Ä¡Àåºñ Á¢¼Ó/¸í·É¿ë expect ½ºÅ©¸³Æ® ÀÛ¼ºÀÏ : 2006/02/04 15:33
 
  • ±Û¾´ÀÌ : ÁÁÀºÁøÈ£ ( http://coffeenix.net/ )
  • Á¶È¸¼ö : 18383
     
    Á¦  ¸ñ : ½ºÀ§Ä¡Àåºñ Á¢¼Ó/¸í·É¿ë expect ½ºÅ©¸³Æ®
    ÀÛ¼ºÀÚ : ÁÁÀºÁøÈ£(truefeel, http://coffeenix.net/ )
    ÀÛ¼ºÀÏ : 2006.1.24(È­)
    Á¤¸®ÀÏ : 2006.2.3(±Ý)
    ¼öÁ¤ÀÏ : 2006.2.9(¸ñ) Cajun ½ºÀ§Ä¡ Ãß°¡

    expect´Â telnetÀ̳ª ftp¿Í °°ÀÌ ÀÎÅÍ·¢Æ¼ºêÇÑ È¯°æÀÌ ÇÊ¿äÇÑ °÷¿¡¼­ ƯÁ¤ ¹®ÀÚ¿­À» ±â´Ù¸®°í(expect),
    Á¤ÇØÁø ¹®ÀÚ¿­À» ÀÚµ¿À¸·Î º¸³»´Â(send) µîÀÇ Ã³¸®¸¦ ÇÏ´Â ½ºÅ©¸³Æ® ¾ð¾îÀÌ´Ù.
    À̸¦ ÅëÇØ telnet °úÁ¤°ú ÀÌÈÄÀÇ ¸í·ÉÀ» ÀÚµ¿À¸·Î ó¸®ÇÒ ¼ö ÀÖ´Ù.
    ½ºÀ§Ä¡ ÀåºñÀÇ ¸Þ¸ð¸®»ç¿ë·®À» º¸°Å³ª ·Î±×¸¦ º¼ ¶§ µü ÇÑÁÙÀÇ ¸í·É¸¸À¸·Î Á¢¼Ó°ú °á°ú¸¦ È®ÀÎÇÒ ¼ö
    ÀÖ´Ù¸é ÆíÇÏÁö ¾Ê´Â°¡?

    ¼Ò°³ÇÒ ½ºÅ©¸³Æ®´Â Foundry°ú Summit, Cajun ½ºÀ§Ä¡¿ëÀ¸·Î ¸¸µç °ÍÀ¸·Î,
    Foundry BigIron, ServerIron°ú Summit L2, Cajun L3 Àåºñ¿¡¼­ »ç¿ëÇÏ°í ÀÖ´Ù.

    1. Á¢¼Ó/¸í·É¿ë ½ºÅ©¸³Æ®

    * ´Ù¿î·Îµå
      http://coffeenix.net/truefeel/files/expect/show_foundry.exp.txt (Foundry ¿ë)
      http://coffeenix.net/truefeel/files/expect/show_summit.exp.txt (Summit ¿ë)
      http://coffeenix.net/truefeel/files/expect/show_cajun.exp.txt (Cajun ¿ë)

    ¾Æ·¡´Â Foundry¿ë ½ºÅ©¸³Æ®À̸ç, Summit, Cajun ¿ëµµ ÀÌ¿Í ºñ½ÁÇϹǷΠ½ºÅ©¸³Æ®´Â ÆÄÀÏÀ» ´Ù¿î·Îµå ¹Þ¾Æ
    Á÷Á¢ È®ÀÎÇϱ⠹ٶõ´Ù.

     
    #!/usr/bin/expect --
    #
    # Foundry BigIron, ServerIron S/W 'show' command scripts
    #
    # Usage : ./show_foundry.exp <Password> <Enable Password> [Switch IP]
    #
    # 2006.1.24
    # Made by ÁÁÀºÁøÈ£(truefeel, http://coffeenix.net/ )

    set timeout     1

    set login       [lindex $argv 0]
    set enpass      [lindex $argv 1]
    set ip          [lindex $argv 2]

    set sleeptime   0.5
    set prompt      "½ºÀ§Ä¡ÀÇ ÇÁ·ÒÇÁÆ®¸¦ ÀûÀ¸¼¼¿ä."
    set ipdefault   "½ºÀ§Ä¡IP¸¦ ÀûÀ¸¼¼¿ä."

    # login  password¿Í enable password Ʋ¸± ¶§ SwitchÀÇ ¸Þ½ÃÁö
    set login_errmsg "failure"
    set en_errmsg   "incorrect password"

    # ------------------------------------------
    # option È®ÀÎ

    if { $enpass == "" } {
            send "Usage : ./show_foundry.exp <Password> <Enable Password> \[Switch IP\] \n\n"
            exit
    }

    #
    if { $ip == "" } {
            set ip  $ipdefault
    }

    # ------------------------------------------
    # login
    #

    spawn telnet $ip

    expect "Password:"
    sleep $sleeptime
    send "$login\r"

    expect {
        $prompt {
            sleep $sleeptime
            send "en\r"
       } $login_errmsg {
            sleep $sleeptime
            send_user "\n\n\[Error\] invalid password \n"
            exit
       }
    }

    # enable password
    expect "Password:"
    sleep $sleeptime
    send "$enpass\r"

    expect $en_errmsg {
            sleep $sleeptime
            send_user "\n\n\[Error\] invalid enable_password \n"
            exit
    }

    # ------------------------------------------
    # command

    set count       1

    set cmd(1)      "show clock"
    set cmd(2)      "show ip"
    set cmd(3)      "show cha"
    set cmd(4)      "show memory"
    set cmd(5)      "show version"
    set cmd(6)      "show who"
    set cmd(7)      "show stat"
    set cmd(8)      "show log"
    set cmd(9)      "show arp"
    set cmd(10)     "show int brief"
    set cmd(11)     "show server"
    set cmd_cnt     [array size cmd]

    #
    while { $count <= $cmd_cnt } {
            expect $prompt
            sleep $sleeptime
            send "$cmd($count)\r"

            set pause 1
            while { $pause == 1 } {
                    expect "Control-c" {
                            sleep 0.2
                            send "   "
                    } timeout {
                            set pause 0
                    }
            }

            incr count
    }

    # ------------------------------------------
    # logout

    expect $prompt
    sleep  $sleeptime
    send   "exit\r"

    expect $prompt
    sleep  $sleeptime
    send   "exit\r"

    interact
     


    »ç¿ë¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.

     
    # ./show_foundry.exp <Á¢¼Ó¿ë Password> <Enable Password> [Switch IP]
     


    3¹ø° IP´Â ÀÔ·ÂÇÏÁö ¾ÊÀ¸¸é ½ºÅ©¸³Æ®ÀÇ $ipdefault º¯¼ö¿¡ Á¤ÀÇµÈ IP·Î Á¢¼ÓÀ» ÇÑ´Ù.

    ½ºÅ©¸³Æ®´Â °£´ÜÇϹǷÎ, ÁÖ¿äºÎºÐÀÎ commmand 󸮿¡ ´ëÇؼ­¸¸ ¼³¸íÀ» ÇÏ°Ú´Ù.
    °¢¸í·ÉÀ» cmd() ¹è¿­¿¡ ÀúÀåÀ» ÇÏ°í, ¹è¿­°³¼ö¸¦ cmd_cnt º¯¼ö¿¡ ÀúÀåÇصдÙ.
    while ¹®À¸·Î cmd_cnt °³¼ö¸¸Å­ Çϳª¾¿ ¸í·ÉÀ» ½ÇÇà½ÃŲ´Ù.
    ÀÌ ¶§ Áß¿äÇÑ °ÍÀº °á°ú°¡ ¸¹À¸¸é pause»óÅ°¡ µÇ°í ÀÓÀÇÀÇ Å°¸¦ ´©¸£¸é ´ÙÀ½ °á°ú¸¦ º¸¿©Áִµ¥,
    À̸¦ ó¸®ÇÏ´Â°Ô ´ÙÀ½ ºÎºÐÀÌ´Ù.

     
    93  :         set pause 1
    94  :         while { $pause == 1 } {
    95  :                 expect "Control-c" {
    96  :                         sleep 0.2
    97  :                         send "   "
    98  :                 } timeout {
    99  :                         set pause 0
    100 :                 }
    101 :         }
     


    92¹ø°ÁÙ ÀÌÀü¿¡¼­ ÁöÁ¤ÇÑ ¸í·ÉÀÌ ½ÇÇàÀÌ µÇ°í,
    93¹ø°ÁÙ¿¡¼­ ÀϽÃÁ¤Áö ¸Þ½ÃÁö("Control-c")¸¦ ±â´Ù¸®µµ·Ï 1·Î ¼ÂÆÃÀ» Çß´Ù.
    94¹ø°ÁÙ ºÎÅÍ´Â °ªÀÌ 1ÀÎ µ¿¾È¿¡´Â expect ¸í·ÉÀ¸·Î ÀϽÃÁ¤Áö ¸Þ½ÃÁö°¡ ³ª¿À´ÂÁö ±â´Ù¸®°Ô µÈ´Ù.
    ¸¸¾à ³ª¿À¸é 0.2ÃÊ ÈÄ¿¡ space¸¦ 2°³ º¸³½´Ù(spaceÅ°¸¦ 2¹ø ´­·¶´Ù°í ÀÌÇØÇÏ¸é µÊ).
    ±×·¯³ª ¸¸¾à "Control-c" °¡ ½ºÅ©¸³Æ®ÀÇ ¸Ç óÀ½¿¡ ¼³Á¤ÇÑ 1Ãʵ¿¾È(set timeout 1) ³ª¿ÀÁö ¾Ê´Â´Ù¸é
    timeout {} ¾ÈÀÇ set pause 0 ÀÌ ¼³Á¤µÇ¾î while {} ¹®À» ºüÁ® ³ª¿À°Ô µÈ´Ù.
    ÀÌ·¸°Ô ó¸®ÇϹǷΠÀϽÃÁ¤Áö ¸Þ½ÃÁö°¡ 1¹ø ³ª¿Ã ¶§³ª, ¿©·¯¹ø ³ª¿À¿Ã ¶§³ª ¾È³ª¿Ã ¶§³ª ´Éµ¿ÀûÀ¸·Î
    ¹ÝÀÀÀ» ÇÏ°Ô µÈ´Ù.

    ÀÌ ½ºÅ©¸³Æ®¸¦ ./show_foundry.exp .... > ÆÄÀϸí ó·³ È°¿ëÇؼ­ °á°ú¸¦ ÆÄÀÏ·Î ÀúÀåÇÒ ¼öµµ ÀÖÀ¸¸ç,
    cron¿¡ µî·ÏÇÏ¿© ÁÖ±âÀûÀ¸·Î °á°ú¸¦ ¹Þ¾Æ¼­ º¯È­ ÃßÀ̸¦ ÆľÇÇغ¼ ¼öµµ ÀÖ´Ù.

    2. Âü°í ÀÚ·á

       * expect ÇÁ·Î±×·¡¹Ö ¿¹ µÎ¹ø° (±Û ÁÁÀºÁøÈ£)
       http://coffeenix.net/board_view.php?bd_code=115

       * expect ÇÁ·Î±×·¡¹Ö ¿¹ (±Û ÁÁÀºÁøÈ£)
       http://coffeenix.net/board_view.php?bd_code=112


    Ä¿ÇǴнº, ½Ã½ºÅÛ ¿£Áö´Ï¾îÀÇ ½°ÅÍ / URL : http://coffeenix.net/board_view.php?bd_code=1327