expect ÇÁ·Î±×·¡¹Ö ¿¹ | ÀÛ¼ºÀÏ : 2003/10/30 02:10 |
![]() |
Á¶È¸¼ö : 20121 |
![]() | |||||||||
97³â¿¡ ³ª¿ì´©¸® ¸®´ª½ºµ¿È£È¸¿¡ ¼ÒÀÎÀÌ ¾´ ±ÛÀÔ´Ï´Ù. Áö±ÝÀº Àǹ̾ø´Â expect ½ºÅ©¸³Æ®Áö¸¸, expectÀÇ È°¿ëÀ» Àß º¸¿©ÁÖ°í ÀÖ½À´Ï´Ù. Àú¸¸ÀÇ »ý°¢Àϱî¿ä? ^^ ¼öÁ¤¾øÀÌ ±×´ë·Î ¿Ã¸³´Ï´Ù. ------------------------------------------------------------------- [1643] Á¦¸ñ : [ÆÁ] äÆÃÁ·(?)À» À§ÇÑ expect Ȱ¿ë ¿Ã¸°ÀÌ : bluefine(..ÁøÈ£) 97/05/20 00:25 ÀÐÀ½ : 243 °ü·ÃÀÚ·á ¾øÀ½ ------------------------------------------------------------------------------ äÆÃÇϽô ºÐÀ» À§ÇØ expect ¸¦ ÀÌ¿ëÇÑ script ¸¦ Â¥ ºÃ½À´Ï´Ù. ´ëºÎºÐÀÇ »ç¶÷µé(äÆÃÀ» ¾ÈÇϽô ºÐµé)¿¡°Ô´Â ¾Æ·¡ÀÇ script °¡ Çʿ䰡 ¾øÀ» µí ½Í³×¿ä. ±×·¡µµ expect ¾²½Ã´Â, ȤÀº ¾²°í ½ÍÀº ºÐÀº ÇÑ ¹ø ºÁ º¸¼¼¿ä. ¸®´ª½ºµ¿¿¡´Â äÆÃÁ·(?) µéÀÌ ¸¹´Ù´Â °ÍÀ» ´À²¼½À´Ï´Ù. ¹ãºÎÅÍ »õº®, ȤÀº ¾ÆÄ§±îÁö ÇϽô ºÐµéµµ °è½Ã´õ±º¿ä. Àúµµ ¸î ¹øÀº Çß½À´Ï´Ù. ¿ø·¡ Àú´Â äÆÃÀ» °ÅÀÇ ÇÏÁö ¾Ê½À´Ï´Ù. ¾î¼´Ù »ç¶÷ ¸¸³ª°í, Áú¹®¿¡ ´ëÇÑ ´äº¯À» ÇØÁÖ±â À§ÇÑ °æ¿ì(´ëȹæÀ¸·Î ÃÊûÀ» ÇÑ °æ¿ì)¿¡³ª ÇÕ´Ï´Ù. Ç×»ó ÇÏ´Â ºÐµéÀÌ °è¼Ó äÆÃÀ» ÇϽôõ±º¿ä. ±×¸®°í Á¦ ´«Ä¡(? ¿Ø ´«Ä¡±îÁö) ·Î´Â ´©°¡ Á¢¼ÓÀ» Çß´ÂÁö Á¶»ç¸¦ ÇÏ¿© äÆÃÀ» ÇÏ´Â »ç¶÷µéµµ ÀÖ´Â °Í °°¾Æ¿ä. ±×·¡¼ expect ·Î °£´ÜÇÑ script ¸¦ ¸¸µé¾î ºÃ½À´Ï´Ù. expect °øºÎµµ ÇÒ°â. ¿ì¼± script ³»¿ëÀÔ´Ï´Ù. >-----------------------ÀÚ¸£¼¼¿ä. -----------------------------< #!/usr/bin/expect -- # # ------------------------------------------------------------- # »ç¿ëÀÚ Á¢¼Ó Á¶»ç, °³¼³µÈ ´ëȹæ Á¶»ç script # ------------------------------------------------------------- # -n : »ç¿ëÀÚ Á¢¼ÓÀº Á¶»ç ¾ÈÇÔ # Á¢¼ÓÇÑ ³»¿ëÀÌ ~/nowlog ¿¡ ÀúÀåµË´Ï´Ù. # ÇÊ¿ä¾øÀ» ¶§´Â comment(¾Õ¿¡ #) ÇØÁÖ¼¼¿ä. log_file ~/nowlog set BELL \007 set nopfchk 0 proc pfchk {} { send "pf °Ë»çÇÒ ID\r" expect -re "ÃÖ±Ù" { expect_user "zz" { send_user " Á¤»ó»óÅÂ(interact)·Î ¿Ô½À´Ï´Ù.\n" break } } -re "ÇöÀç" { send_user \007 } } # ------------------------------------------- # ¿É¼Ç °Ë»ç # -n : pf üũ¸¦ ÇÏÁö ¾Ê½À´Ï´Ù. # ------------------------------------------- while { $argc } { set option [lindex $argv 0] switch -- $option \ "-n" { set nopfchk 1 incr argc -1 } default { break } } # ------------------------------------------- # ³ª¿ì´©¸®¿¡ Á¢¼ÓÀ» ÇÕ´Ï´Ù. # ------------------------------------------- spawn telnet -8 now expect "Enter" sleep 1 send "\r" expect -re "³ª ¿ì ID :" sleep 1 send "´ç½ÅÀÇID\r" expect -re "ºñ¹Ð¹øÈ£ :" sleep 1 send "´ç½ÅÀÇ passwd\r" expect -re "¼±ÅÃ>" send "go linux\r" expect -re "Enter" sleep 1 send "\r" # ------------------------------------------- # »ç¿ëÀÚ Á¢¼Ó Á¶»ç, °³¼³µÈ ´ëȹæ Á¶»ç # # - 15 ÃÊ °£°ÝÀ¸·Î 30ºÐ µ¿¾È °Ë»çÇÕ´Ï´Ù. # - ã´Â »ç¶÷ÀÌ Á¢¼ÓÀ» ÇßÀ¸¸é "»ß" ¼Ò¸®¸¦ # ³»¸ç °è¼Ó °³¼³µÈ ´ëȹæÀ» ã´Â´Ù. # - °³¼³µÈ ´ëȹæÀÌ ÀÖÀ¸¸é ºüÁ®³ª°£´Ù. # - interact ¸ðµå·Î °¡·Á¸é zz ¸¦ ´©¸¥´Ù. # ------------------------------------------- expect -re "¼±ÅÃ>" sleep 1 for {set num 0} {$num < (40*3)} {incr num} { # pf ¸í·É¾î·Î Á¢¼Ó »óȲ Á¶»ç # if { $nopfchk != 1 } { pfchk } # °³¼³µÈ ´ëÈ½Ç Á¶»ç # sleep 5 send "4\r" expect -re "¾ø½À´Ï´Ù" { expect_user "zz" { send_user " Á¤»ó»óÅÂ(interact)·Î ¿Ô½À´Ï´Ù.\n" send "p\r" break } send "p\r" } -re "°ø°³ " { send_user $BELL send_user $BELL break } sleep 10 } interact >-----------------------ÀÚ¸£¼¼¿ä. -----------------------------< '´ç½ÅÀÇID' ¿Í '´ç½ÅÀÇ passwd' ¿¡ °¢°¢ Á¢¼ÓÀÚÀÇ ID, passwd ¸¦ ³ÖÀ¸¼¼¿ä. ±×¸®°í '°Ë»çÇÒ ID' ¿¡´Â Á¢¼ÓÀ» Çß´ÂÁö ã°í ½ÍÀº ºÐÀÇ ID¸¦ ÀÔ·ÂÇÏ¸é µË´Ï´Ù. À§ÀÇ script ´Â 30ºÐ µ¿¾È 15ÃÊ °£°ÝÀ¸·Î °è¼Ó ã°íÀÚ ÇÏ´Â ºÐÀÌ Á¢¼ÓÀ» Çß´ÂÁö ´ëȹæÀÌ °³¼³ÀÌ µÇ¾î ÀÖ´ÂÁö üũ¸¦ ÇÕ´Ï´Ù. ã´Â »ç¶÷ÀÌ Á¢¼ÓÀ» ÇßÀ¸¸é '»ß' ¼Ò¸®¸¦ ÇÑ ¹ø, ´ëȹæÀÌ °³¼³µÇ¾úÀ¸¸é '»ß' ¼Ò¸®¸¦ µÎ ¹ø ³À´Ï´Ù. ±×¸®°í Áß°£¿¡ °Ë»ç¸¦ ¸¶Ä¡°í ½ÍÀ¸¸é 'zz' ¸¦ ´©¸¥ ÈÄ ¿£Å͸¦ Ä¡¸éµË´Ï´Ù. ¾à°£ÀÇ ¹®Á¦°¡ ÀÖ±äÇϳª interact ¸ðµå·Î µé¾î°©´Ï´Ù. -n ¿É¼ÇÀº Á¢¼ÓÇÑ »ç¶÷À» ã´Â °ÍÀ» ÇÏÁö ¾ÊÀ» ¶§ ¾²´Â ¿É¼ÇÀÔ´Ï´Ù. script¸¦ ¼³¸íÇϰڽÀ´Ï´Ù. proc pfchk {} { send "pf °Ë»çÇÒ ID\r" expect -re "ÃÖ±Ù" { expect_user "zz" { send_user " Á¤»ó»óÅÂ(interact)·Î ¿Ô½À´Ï´Ù.\n" break } } -re "ÇöÀç" { send_user \007 } } proc pfchk {} ´Â Á¢¼ÓÀÚ¸¦ ã´Â ÇÁ·Î½ÃÀúÀÔ´Ï´Ù. È£ÃâÀº pfchk ¶ó°í ÇÏ¸é µË´Ï´Ù. send : Åë½Å¸ÁÀ¸·Î ³»¿ëÀ» º¸³½´Ù. send_user : Åë½Å¸ÁÀ¸·Î º¸³»Áö ¾Ê°í ȸéÀ¸·Î¸¸ º¸³½´Ù. expect : Åë½Å¸ÁÀ¸·Î ºÎÅÍ µé¾î¿Â ¹®ÀÚ¸¦ ±â´Ù¸°´Ù. expect_user : »ç¿ëÀÚ·Î ºÎÅÍ µé¾î¿Â ¹®ÀÚ¸¦ ±â´Ù¸°´Ù. À§ÀÇ °æ¿ì pf ¸í·É¸¦ ÇÑ ÈÄ 'ÃÖ±Ù' À̶ó´Â ±ÛÀÚ°¡ µé¾î¿À¸é 'zz' ¶ó´Â ±ÛÀÚ°¡ ÀÔ·ÂÀÌ µÇ¾úÀ¸¸é ºüÁ®³ª°¡´Â °ÍÀÔ´Ï´Ù. 'ÇöÀç'¶ó´Â ±ÛÀÚ°¡ µé¾î¿À¸é '»ß'¼Ò¸®¸¦ ÇÑ ¹ø ³»°Ô µË´Ï´Ù. pf ¸í·É¸¦ ¾²½Ã¸é ¹«½¼ ¸»ÀÎÁö ¾Æ½Ç °Ì´Ï´Ù. while { $argc } { set option [lindex $argv 0] switch -- $option \ "-n" { set nopfchk 1 incr argc -1 } default { break } } ÀÔ·ÂµÈ ¿É¼ÇÀ» ã´Â °ÍÀÔ´Ï´Ù. switch ´Â sh script ÀÇ case ¿Í °°Àº °ÍÀÔ´Ï´Ù. -n ¿É¼ÇÀÌ ÀԷµǸé nopfchk=1 À» ÀÔ·ÂÇϰí ÀÌ °ÍÀÌ ³ªÁß¿¡ if ¹®¿¡ ÀÇÇØ pf ¸í·É¾î¸¦ ¾²Áö ¾Êµµ·ÏÇÏ´Â °ÍÀÌÁÒ. incr argc -1 Àº ÀÔ·ÂµÈ ´ÙÀ½ ¸Å°³º¯¼ö¸¦ Àеµ·Ï ÇÕ´Ï´Ù. ¾øÀ¸¸é while {} À» ºüÁ® ³ª°¡ÁÒ. ³ª¿ì´©¸® Á¢¼Ó°ü·Ã script ºÎºÐÀº ¼³¸íÇÏÁö ¾Ê°Ú½À´Ï´Ù. ¿©±â °Ô½ÃÆÇ¿¡ lt expect ÇÏ¿© ã¾Æº¸½Ã¸é ¸¸¿ë´ÔÀÇ ±ÛÀÌ ÀÖÀ¸´Ï ²À Àо½Ã±â ¹Ù¶ø´Ï´Ù. for {set num 0} {$num < (40*3)} {incr num} { # pf ¸í·É¾î·Î Á¢¼Ó »óȲ Á¶»ç # if { $nopfchk != 1 } { pfchk } # °³¼³µÈ ´ëÈ½Ç Á¶»ç # sleep 5 send "4\r" expect -re "¾ø½À´Ï´Ù" { ~~~~~ »ý·«ÇÕ´Ï´Ù. ~~~~~ } -re "°ø°³ " { send_user $BELL send_user $BELL break } sleep 10 } interact for {set num 0} {$num < (40*3)} {incr num} Àº num=0 ºÎÅÍ num < (40*3) ±îÁö 1 ¾¿ Áõ°¡ÇÏ´Â for ¹®ÀÔ´Ï´Ù. 40*5Çϸé 50ºÐµ¿¾È °Ë»ç¸¦ ÇÕ´Ï´Ù. if ¹®¿¡ ÀÇÇØ nopfchk=1 À̸é pf °Ë»ç¸¦ ÇÏÁö ¾Ê½À´Ï´Ù. pf üũ 5Ãʰ¡ Áö³ µÚ¿¡ °³¼³µÈ ´ëȹæÀ» ã½À´Ï´Ù. ÀÌ ºÎºÐÀº pf üũ¿Í °ÅÀÇ °°½À´Ï´Ù. ±×·¡¼ »ý·«ÇÕ´Ï´Ù. ´ÜÁö send_user $BELL À» µÎ ¹øÇÏ¿© '»ß' ¼Ò¸®¸¦ µÎ ¹ø ³» »ÓÀÔ´Ï´Ù. ´ëÈ¹æ °Ë»ç ÈÄ 10ÃÊ ÈÄ¿¡ ´Ù½Ã pf üũ¸¦ ÇÕ´Ï´Ù. ÀÌ»óÀÔ´Ï´Ù. expect ÇÁ·Î±×·¥ÀÌ ¾øÀ¸½Å ºÐÀº ¿ì¼± ÀÚ·á½Ç¿¡¼ expect 1.2 ¿Í tk/tcl lib ¸¦ ¹ÞÀ¸½Ã°í ¼³Ä¡ÇϽñ⠹ٶø´Ï´Ù. ¿©±â ÀÖ´Â script ´Â /usr/doc/examples/expect ¿¡ ÆÄÀÏÀ» Âü°í ÇßÀ¸¸ç, man expect µµ Âü°íÇß½À´Ï´Ù. O'reilly »ç¿¡¼ Ã¥µµ ³ª¿ÍÀִµ¥ expect °øºÎÇÏ½Ç ºÐÀº ÇÑ ¹ø »ç¼ º¸¼¼¿ä. ¹®Á¦°¡ ÀÖÀ¸¸é ½º½º·Î °íÄ¡¼¼¿ä. expect ¿¡ ´ëÇØ Àß ¸ð¸£¼Å¼ ¸ø °íÄ¡½Ã¸é ¸ÞÀÏ·Î ¾Ë·ÁÁÖ¼¼¿ä. ÀÌ script°¡ À¯¿ëÇÒ »ç¶÷ÀÌ ÀÖÀ»±î? |
![]() |