Ä¿ÇǴнº, ½Ã½ºÅÛ ¿£Áö´Ï¾îÀÇ ½°ÅÍ
  ¿©·¯ ¼­¹ö¿¡ ÀÏ°ý ¸í·ÉÀ» À§ÇÑ expect ½ºÅ©¸³Æ® ÀÛ¼ºÀÏ : 2007/08/06 22:58
 
  • ±Û¾´ÀÌ : ÁÁÀºÁøÈ£ ( http://coffeenix.net/ )
  • Á¶È¸¼ö : 20640
     
    Á¦  ¸ñ : ¿©·¯ ¼­¹ö¿¡ ÀÏ°ý ¸í·ÉÀ» À§ÇÑ expect ½ºÅ©¸³Æ®
    ÀÛ¼ºÀÚ : ÁÁÀºÁøÈ£(truefeel, http://coffeenix.net/ )
    ÀÛ¼ºÀÏ : 2007.5
    Á¤¸®ÀÏ : 2007.8.6(¿ù)

    ¿©·¯´ëÀÇ ¼­¹ö°¡ ÀÖ°í, ÀÌ ¼­¹ö¿¡ ÀÏ°ýÀûÀ¸·Î µ¿ÀÏÇÑ ¸í·ÉÀ» Áà¾ßÇÒ »óȲÀÌ ÀÖ´Ù°í ÇÏÀÚ. ÀÌ·± »óȲ¿¡¼­ °¢ ¼­¹ö¿¡ ÀÏÀÏÈ÷ Á¢¼ÓÇÑ ´ÙÀ½¿¡, ¸í·ÉÀ» ³»¸®°í, ·Î±× ¾Æ¿ôÇÑ´Ù´Â °ÍÀº ¼Õ¹ßÀÌ °í»ýÇÏ´Â ÀÛ¾÷ÀÌ ¾Æ´Ñ°¡. ÀÌ·¯ÇÑ ¹«¸ðÇÑ(?) ÀÛ¾÷Àº ´ÙÀ½°ú °°Àº ¹®Á¦°¡ ÀÖ´Ù.

    - ³Ê¹«³ªµµ Áö·çÇÑ ÀÛ¾÷ÀÌ´Ù.
    - ½Ã°£ÀÌ ³Ê¹« ¿À·¡ °É¸°´Ù. (ªÀº ½Ã°£¿¡ ¹Ýµå½Ã ¸ðµç ¼­¹ö¿¡ Àû¿ëÇØÇÏ´Â »óȲÀÌ¸é ´õ´õ¿í ¹®Á¦´Ù.)
    - ±ôºýÇÏ°í ÀÛ¾÷ÇÏÁö ¾ÊÀº ¼­¹ö°¡ »ý±æ ¼ö ÀÖ´Ù.
    - ½ÇÇàÇؾßÇÒ ¸í·ÉÀÌ ¸¹À» ¶§, ¸í·ÉÁß Çϳª¸¦ »©¸ÔÀº ¼­¹ö°¡ »ý±æ ¼ö ÀÖ´Ù.

    1. ÀÚµ¿ Á¢¼Ó ÈÄ ¸í·ÉÀ» ½ÇÇàÇÏ´Â expect ½ºÅ©¸³Æ®

    ÀÌ·¯ÇÑ ¹®Á¦¸¦ expect ½ºÅ©¸³Æ®·Î ÇØ°áÇغ¸ÀÚ. ´ÙÀ½Àº ÁöÁ¤ÇÑ ¼­¹ö¿¡ ÀÚµ¿À¸·Î Á¢¼ÓÇؼ­ ¸í·ÉÀ» ½ÇÇàÇÏ´Â expect ½ºÅ©¸³Æ®ÀÌ´Ù.

     
    #!/usr/bin/expect --
    #
    # ¼­¹öÁ¢¼Ó -> root·Î ¸í·É ½ÇÇàÈÄ Á¾·á
    #
    # 2006.11.22
    # Made by ÁÁÀºÁøÈ£(truefeel, http://coffeenix.net/ )

    set timeout¡¡¡¡¡¡7

    set server      [lindex $argv 0]
    set cmd         [lindex $argv 1]
    set logout_flg  [lindex $argv 2]

    set sleeptime¡¡¡¡¡¡0.3
    set sleeptime2¡¡¡¡¡¡1

    # default
    set pass        "ÀϹÝÀ¯Àú_PW_ÀÔ·ÂÇϼ¼¿ä"
    set pass_root¡¡¡¡¡¡"root_PW_ÀÔ·ÂÇϼ¼¿ä"

    # server 1 (±âº» root PW°¡ ´Ù¸¥ ¼­¹öµé)
    if { $server == "truefeel1" || $server == "truefeel2" || $server == "truefeel3"  } {
    ¡¡¡¡¡¡set pass_root   "root_PW_ÀÔ·ÂÇϼ¼¿ä"
    }

    # server 2 (±âº» root PW°¡ ´Ù¸¥ ¼­¹öµé)
    if { $server == "w1" || $server == "w2" } {
    ¡¡¡¡¡¡set pass_root   "root_PW_ÀÔ·ÂÇϼ¼¿ä"
    }

    # server 3 (±âº» »ç¿ëÀÚ PW°¡ ´Ù¸¥ ¼­¹öµé)
    if { $server == "coffeenix1" || $server == "coffeenix2" } {
    ¡¡¡¡¡¡set pass        "ÀϹÝÀ¯Àú_PW_ÀÔ·ÂÇϼ¼¿ä"
    }


    # Mesg
    set login_msg  "assword:"
    set prompt_msg "truefeel"

    # ------------------------------------------
    # option È®ÀÎ
    if { $cmd == "" } {
    ¡¡¡¡¡¡send "Usage : ./cmd.exp <Server> <Command> \[logout flag\] \n\n"
    ¡¡¡¡¡¡send "        logout flag = 1    : ¸í·É ½ÇÇà ÈÄ¿¡ ÀÚµ¿À¸·Î ·Î±×¾Æ¿ô\n"
    ¡¡¡¡¡¡send "        logout flag ¹ÌÁöÁ¤ : ¸í·É¸¸ ½ÇÇàÇÏ°í, ·Î±×¾Æ¿ôÀº ÇÏÁö ¾ÊÀ½\n"
    ¡¡¡¡¡¡exit
    }

    # ------------------------------------------
    spawn ssh $server

    # login
    expect $login_msg
    sleep $sleeptime
    send "$pass\r"

    sleep $sleeptime
    send "\r"

    # su
    expect $prompt_msg
    sleep $sleeptime
    send "su -\r"

    expect $login_msg
    send "$pass_root\r"

    #
    sleep $sleeptime
    send "$cmd\r"
    sleep $sleeptime2

    # logout
    if { $logout_flg == "1" } {
    ¡¡¡¡¡¡send "exit\r"
    ¡¡¡¡¡¡sleep $sleeptime
    ¡¡¡¡¡¡send "exit\r"
    ¡¡¡¡¡¡sleep $sleeptime
    }

    interact
     

    * Download : http://coffeenix.net/truefeel/files/expect/cmd.exp.txt

    À§ ½ºÅ©¸³Æ®´Â Linux, FreeBSD¿¡¼­ ¸ðµÎ »ç¿ëÀÌ °¡´ÉÇϸç, »ç¿ë ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.

     # ./cmd.exp <Á¢¼ÓÇÒ ¼­¹ö> <¸í·É¾î ³ª¿­> [ÀÚµ¿_·Î±×¾Æ¿ô_¿©ºÎ=1]
     


    ½ºÅ©¸³Æ®´Â ³Ê¹«³ª °£´ÜÇÏ´Ù. ½ºÅ©¸³Æ®¸¦ Å©°Ô ³ª´²º¸¸é, ù¹ø° º¯¼ö¼³Á¤ ºÎºÐ, 2¹ø° ¿É¼Ç üũ ºÎºÐ, 3¹ø° ¼­¹ö¿¡ Á¢¼ÓÇؼ­ ¸í·ÉÀ» ³»¸®´Â ºÎºÐÀ¸·Î ³ª´¶´Ù.

    2±ºµ¥ Á¤µµ¸¸ »ìÆ캸ÀÚ.

     
         17 # default
         18 set pass        "ÀϹÝÀ¯Àú_PW_ÀÔ·ÂÇϼ¼¿ä"
         19 set pass_root   "root_PW_ÀÔ·ÂÇϼ¼¿ä"
         20
         21 # server 1 (±âº» root PW°¡ ´Ù¸¥ ¼­¹öµé)
         22 if { $server == "truefeel1" || $server == "truefeel2" || $server == "truefeel3"  } {
         23         set pass_root   "root_PW_ÀÔ·ÂÇϼ¼¿ä"
         24 }
     


    17¶óÀκÎÅÍ´Â Á¢¼ÓÇÒ »ç¿ëÀÚÀÇ PW¿Í root PW¸¦ Àû´Â´Ù. ¼­¹ö¿¡ µû¶ó PW°¡ ´Ù¸£¸é if ¹®À» ÅëÇؼ­ º°µµ·Î ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù. ±× ¾Æ·¡¿¡ expect, sleep, send °¡ ¹Ýº¹ÀûÀ¸·Î ¾²ÀÎ ºÎºÐÀº ¼­¹ö¿¡ Á¢¼ÓÇؼ­ su ¸í·ÉÀ¸·Î root·Î º¯°æÇÏ°í, ÁöÁ¤ÇÑ ¸í·ÉÀ» ½ÇÇàÇÏ´Â °úÁ¤ÀÌ´Ù.

     
         74 # logout
         75 if { $logout_flg == "1" } {
         76         send "exit\r"
         77         sleep $sleeptime
         78         send "exit\r"
         79         sleep $sleeptime
         80 }
     


    ÀÌ ºÎºÐÀº ¸í·É ½ÇÇà ÈÄ¿¡ »ç¿ëÀÚ°¡ ¿øÇϸé, ÀÚµ¿À¸·Î ·Î±×¾Æ¿ôÀ» ÇÑ´Ù. exit°¡ 2¹ø ¾²ÀÎ °ÍÀº ÇѹøÀº root -> ÀϹݻç¿ëÀÚ·Î ÀüȯÀ», ±× ´ÙÀ½Àº logoutÀ» À§ÇÑ °ÍÀÌ´Ù.

    °£´ÜÇÑ »ç¿ë ¿¹Á¦´Ù. ù¹ø°ÁÙÀº t1.coffeenix.net ¼­¹ö¿¡ Á¢¼ÓÇÑ ÈÄ ¸®ºÎÆÃÀ» ÇÏ°í, µÎ¹ø°ÁÙÀº ls¿Í 'cat /etc/fstab' ¸í·ÉÀ» ³»¸° ÈÄ ÀÚµ¿À¸·Î ·Î±× ¾Æ¿ô(3¹ø° ¿É¼ÇÀ¸·Î  '1'À» ÁöÁ¤ÇßÀ½)À» ÇÑ´Ù.

     
    »ç¿ë¿¹)
    ./cmd.exp t1.coffeenix.net "ls;pwd;shutdown -r now"
    ./cmd.exp t1.coffeenix.net "ls;cat /etc/fstab" 1
     


    2. ¿©·¯ ¼­¹ö¿¡ Á¢¼ÓÇϱâ À§ÇÑ shell script

    ¾Õ¿¡ ¼Ò°³ÇÑ expect ½ºÅ©¸³Æ®´Â ÁöÁ¤ÇÑ 1´ëÀÇ ¼­¹ö¿¡ Á¢¼ÓÇÏ¿© ¸í·ÉÀ» ½ÇÇàÇÑ´Ù. óÀ½¿¡ ¿ì¸®°¡ ¿øÇÏ´ø °ÍÀº ¿©·¯ ´ëÀÇ ¼­¹ö¿¡ Á¢¼ÓÇÏ´Â °ÍÀ̾ú´Ù. ¿©·¯ ´ëÀÇ Á¢¼ÓÀº shell script·Î ó¸®Çß´Ù.

     #!/bin/sh
    #

    # Á¢¼ÓÇÒ server¸¦ °ø¹éÀ¸·Î ±¸ºÐÇÏ¿© ³ª¿­
    SERVER="$SERVER server1 server2 server3 server4 server5 server6"
    SERVER="$SERVER www1 www2 www3 www4 www5"

    # cmd.exp °æ·Î
    EXP="$HOME/bin/cmd.exp"
    # ½ÇÇàÇÒ ¸í·É¾î¸¦ ; ·Î ±¸ºÐÇÏ¿© ³ª¿­ (¿¹. ls;cd /etc )
    CMD=""
    # ¸í·É ½ÇÇà ÈÄ ÀÚµ¿ ·Î±×¾Æ¿ôÇÏ·Á¸é 1À» ÀÔ·Â
    OPT=""

    # -------------------------------
    for s in $SERVER
    do
            case "$s" in
            *)
                    $EXP ${s} "$CMD" $OPT
                    ;;
            esac

            sleep 0.5
    done
     


    ÀÌ ¶§ /etc/resolv.conf ÀÇ search ¿É¼Ç¿¡´Â ¼­¹öÀÇ µµ¸ÞÀθíÀ» Àû¾îÁÖ´Â°Ô ÆíÇÏ´Ù. À̸¦ Å׸é search coffeenix.net ·Î ¼³Á¤Çصθé,  ssh server1.coffeenix.net À¸·Î ÇÏÁö ¾Ê°í ssh server1 ¸í·ÉÀ¸·Î¸¸À¸·Îµµ Á¢¼ÓÇÒ ¼ö ÀÖ°Ô µÈ´Ù.

    3. °ü·Ã expect ½ºÅ©¸³Æ®

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

    * ½ºÀ§Ä¡Àåºñ Á¢¼Ó/¸í·É¿ë expect ½ºÅ©¸³Æ® (2006.1, ±Û ÁÁÀºÁøÈ£)
      http://coffeenix.net/board_view.php?bd_code=1327



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