|
|
|
Á¦ ¸ñ :
¼Ö¶ó¸®½º¿¡¼ »ç¿ëÀÚ ÆÐ½º¿öµå º¯°æ ÀÚµ¿È(expect ÀÌ¿ë) |
|
ÀÛ¼ºÀÚ : ±è¼®
|
³¯Â¥ : 2008-07-23 |
|
ºÐ·ù : °øÅë |
Á¶È¸¼ö : 5252 |
|
|
º» ³»¿ëÀº ½ãÀÇ ¼Ö¶ó¸®½º ¿¡¹ÝÁ©¸®½ºÆ®ÀÎ ±èºÀȯ ºÎÀå´ÔÀǺí·Î±×¿¡¼ ÆÛ¿Â °ÍÀÔ´Ï´Ù.
=======================================================================
¼Ö¶ó¸®½º¿¡¼ »ç¿ëÀÚ ÆÐ½º¿öµå º¯°æ ÀÚµ¿È(expect ÀÌ¿ë)
¿¹Àü¿¡´Â CGI¸¦ ÀÌ¿ëÇÏ¿© À¥ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¶§¿¡´Â »ç¿ëÀÚ ¾ÏÈ£¸¦ À¥ ÀÎÅÍÆäÀ̽º·Î ¹Þ¾Æ¼ º¯°æÇØ¾ß ÇÏ´Â °æ¿ì°¡ ÀÖ¾ú½À´Ï´Ù.
Áö±ÝÀÇ À¥ ÀÎÅÍÆäÀ̽º¿¡¼´Â JavaScript³ª pythonµî °í¼öÁØ ½ºÅ©¸³ÆÃÀ¸·Î ¹é¿£µå ÀÎÁõ ¼ºñ½º¿Í ¿¬°áÇÏ´Â ¹æ¹ýÀ» ´ëºÎºÐ »ç¿ëÇÕ´Ï´Ù¸¸ ¿¹Àü¿¡´Â /usr/bin/passwd¶ó´Â À¯Æ¿¸®Æ¼¸¦ ÀÌ¿ëÇÏ¿© /etc/passwd ÈÀÏÀ» ±â¹ÝÀ¸·Î ÆÐ½º¿öµå¸¦ º¯°æÇØ¾ß Çß½À´Ï´Ù.
¿À´Ã³¯¿¡´Â ÇÊ¿äÇÏÁö ¾ÊÀ» µí Çϰí, ½ÇÁ¦·Î º¸¾È»óÀÇ ÀÌÀ¯·Î ±Ç°íµÇÁö ¾Ê½À´Ï´Ù¸¸, °£È¤ ½Ã½ºÅÛ ¸¶À̱׷¹À̼ÇÀ̳ª ÀÚµ¿ ¾÷µ¥ÀÌÆ®¸¦ ¹èÄ¡·Î ó¸®Çϱâ À§Çؼ ´ë·®ÀÇ »ç¿ëÀÚÀÇ ¾ÏÈ£¸¦ ÀÓÀÇ·Î º¯°æÇϱâ À§Çؼ´Â ¿©ÀüÈ÷ ÀÌ·¯ÇÑ ½ºÅ©¸³Æ®¸¦ ÅëÇÑ passwd º¯°æÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù.
ÀÌ·¯ÇÑ ¸ñÀûÀ¸·Î ÆÐ½º¿öµå¸¦ º¯°æÇϱâ À§Çؼ ¿¹Àü¿¡´Â ½©½ºÅ©¸³Æ®ÀÇ Ç¥ÁØ ÀÔÃâ·ÂÀ» Á¶Á¤ÇÏ¿© ½ºÅ©¸³Æ®Çß½À´Ï´Ù¸¸, ¼Ö¶ó¸®½º10¿¡¼´Â ÀÌ·¸°Ô´Â ¾ÈµÇ´Â °Í °°½À´Ï´Ù(¹æ¹ýÀÌ ÀÖ´Â Áö´Â Á»´õ È®ÀÎÇØºÁ¾ß°Ú½À´Ï´Ù)
¾î·µç ¿ÀǼֶ󸮽º¿¡´Â (¼Ö¶ó¸®½º Community Edition 03/2008. Opensolaris 05/08°ú´Â ´Ù¸§)¿¡´Â expect¶ó´Â ½ºÅÄ´Ùµå ÀÔÃâ·ÂÀ» ÀüȯÇÏ´Â À¯¸íÇÑ ¿ÀÇ ¼Ò½º°¡ µé¾îÀÖ½À´Ï´Ù. ÀÌ ÅøÀ» ÀÌ¿ëÇÏ¿© ÆÐ½º¿öµå º¯°æÀ» ½ºÅ©¸³ÆÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½Àº mkpasswd¶ó´Â °£´ÜÇÑ expect ½ºÅ©¸³Æ® ÀÔ´Ï´Ù. »ç¿ë¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.
#mkpasswd user1 oldpasswd newpasswd
#!/usr/bin/expect
#
# mkpasswd by Bonghwan Kim
#
spawn passwd [lindex $argv 0]
set new [lindex $argv 1]
expect "New Password:"
send "$new\r"
expect "Re-enter new Password:"
send "$new\r"
expect eof
mkpasswd¸¦ ½ÇÇàÇÒ¶§ ½ÇÇà ¾ÆÅ¥¸ÕÆ®·Î ±¸ ÆÐ½º¿öµå¿Í »õ ÆÐ½º¿öµå¸¦ ÁÖ°í ½ÇÇàÇϸé, Çѹø¿¡ º¯°æÀÌ °¡´ÉÇÕ´Ï´Ù.
¿©±â¼ µÎ°¡Áö Áß¿äÇÑ °ÍÀº ÀÌ ½ºÅ©¸³Æ®´Â root ±ÇÇÑÀ» °¡Áö°í ½ÇÇàÀÌ µÇ¾î¾ß Çϸç, ÀÌ ½ºÅ©¸³Æ®°¡ ½ÇÇàµÉ¶§ÀÇ localeÀÌ ¹Ýµå½Ã POSIX 'C' À̾ ÇÕ´Ï´Ù. Áï, Å͹̳ο¡¼ ½ÇÇàÇÒ¶§¿¡´Â LC_ALL=C;export LC_ALL ȤÀº ±×¿¡ ÁØÇÏ´Â ¸í·É¾î·Î ½©ÀÇ ·ÎÄÉÀÏÀ» C·Î ÀüȯÇÕ´Ï´Ù. ±× ÀÌÀ¯´Â ·ÎÄÉÀÏÀÌ ´Þ¶óÁö¸é expect°¡ ±â´ëÇÏ´Â ¹®ÀÚ¿ÀÇ °ªÀÌ ·ÎÄöóÀÌÁîÈ µÇ¾î ½ºÆ®¸µÀÌ ´Þ¶óÁý´Ï´Ù. ¿¹¸¦ µé¾î, ko ȤÀº kr_KR.UTF-8À¸·Î µÇ¾î ÀÖÀ¸¸é "New Password:"¶ó°í ³ª¿ÀÁö ¾Ê°í "»õ ¾ÏÈ£:" ¿Í °°ÀÌ ¹°¾îº¸±â ¶§¹®ÀÔ´Ï´Ù.
ÀÏ¹Ý »ç¿ëÀÚ°¡ À§¿Í °°Àº ÆÐ½º¿öµå¸¦ »ç¿ëÇØ¾ß ÇÏ´Â °æ¿ì¿¡´Â À§ÀÇ ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÏ¹Ý »ç¿ëÀÚ Æ¯È÷ ÀÌ¹Ì ÆÐ½º¿öµå°¡ ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì¿¡´Â ±âÁ¸ÀÇ ÆÐ½º¿öµå¸¦ ¹°¾îº¸´Â °úÁ¤ÀÌ Ãß°¡µÇ±â ¶§¹®ÀÔ´Ï´Ù. ÀÏ¹Ý »ç¿ëÀÚ°¡ ÀÚ±âÀÇ ÆÐ½º¿öµå¸¦ ÀÚµ¿À¸·Î º¯°æÇϰíÀÚ ÇÏ´Â °æ¿ì¿¡´Â À§ÀÇ ½ºÅ©¸³Æ®¸¦ ¾à°£ º¯°æÇÏ¿© ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇϸé ÀÛµ¿ÇÕ´Ï´Ù.
»ç¿ë¹ýÀº LC_ALL=C mkpasswd jac0001 abc123 qwer123 ¿Í °°ÀÌ ½ÇÇàÇÏ¸é µË´Ï´Ù.
#!/usr/bin/expect
spawn passwd [lindex $argv 0]
set old [lindex $argv 1]
set new [lindex $argv 2]
expect "Enter existing login password:"
send "$old\r"
expect "New Password:"
send "$new\r"
expect "Re-enter new Password:"
send "$new\r"
expect eof
Âü°í·Î ½ÇÇàÇϰí Å×½ºÆ®µÈ Ç÷§ÆûÀº ´ÙÀ½°ú °°½À´Ï´Ù.
solaris:~ 522
$cat /etc/release
Solaris Express Community Edition snv_86 X86
Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
Use is subject to license terms.
Assembled 27 March 2008
solaris:~ 523
$expect -v
expect version 5.43.0
|
|
 |