¡¾ÇóÖú¡¿ÇëÎÊÈçºÎ°ÑÒªÊäÈëµÄÃÜÂë±£´æÔÚbash½Å±¾À
ÎҵĽű¾Éæ¼°sshÔ¶³Ì²Ù×÷ÿдһ¸össhÃüÁîÔÚÖ´ÐÐʱ¶¼ÒªÊäÈëÃÜÂ룬ºÜÂé·³¡£
ÎÒÏ£ÍûÄܰÑÃÜÂë±£´æÔڽű¾Àï±ÜÃâÿ´ÎÊäÈ루ÃÜÂëÊÇ¿ÉÒÔ¹«¿ªµÄ£©
ÇëÎÊÓ¦¸ÃÔõô×ö£¿ÒÖ»òsshÃüÁîÀïÓÐûÓб£´æÃÜÂëµÄijÖÖ·½·¨ÄØ£¿
лл Ò²Ðí¿ÉÓÃssh-agent? ·½·¨ 1. ÀûÓà expect£¬±¾°æ¾«»ªÌùÀïÃæÓÐÒ»¸öÀý×Ó¿ÉÒԲο¼Ò»ÏÂ
·½·¨ 2. ÀûÓà ssh µÄ public-key ÈÏÖ¤·½Ê½ 1¡£expectÊDz»ÊÇÒªÁíÍâ°²×°£¿
2¡£public±ØÐë»ñȡԶ³ÌµÄ¹«Ô¿£¬±È½ÏÂé·³Ò²¡£ Ò»°ãµÄ Linux distribution ¶¼°üº¬ expect£»Ò²¿ÉÒÔÏÂÔØ source code ×Ô¼º±àÒë¡¢°²×° ÕÒµ½ÁË£¬Ð»Ð»¸÷λ ÇëÎÊÄܲ»ÄܰÑexpect½Å±¾Ç¶Ì×ÔÚbash½Å±¾À¾ÍÊÇдÔÚÒ»¸öÎļþÀï [code][color=blue]-(user@host:tty)-(tmp)-
[3903 0] $ [/color]cat exp.sh
#!/bin/bash
expect << END
send_user "Hello, world\\n"
END
[color=blue]-(user@host:tty)-(tmp)-
[3903 0] $ [/color]./exp.sh
Hello, world
[color=blue]-(user@host:tty)-(tmp)-
[3903 0] $ [/color][/code] [font=Arial]»¹ÊDz»Ì«Ã÷°×¡£
±ÈÈçÕâ¸öÀý×ÓÓ¦µ±Ôõô¸ÄÔ죿[/font]
[font=Arial][/font]
[CODE]
#!/bin/bash
ip="xxx.xxx.xxx.xxx"
password="xxxxxx"
ssh $ip
#ÔÚÕâÀïÈçºÎÓÃexpect°ÑpasswordµÄÄÚÈÝÊäÈë
#ÏÂÃæÊÇÆäËûµÄ´úÂë
.....
.....
[/CODE] ²»Ã÷°×ÄúµÄÒâ˼, ÄÜ·ñ¸øÎÒÍêÕûµÄ example? [code]
#!/bin/sh
menu()
{
echo " Choose your operation:"
echo " 1.transfer a file to remote"
echo " 2.Remove a remote file"
echo " 3.Other operation"
echo " 4.Exit"
}
login()
{
read -p "Enter remote IP:" ip
read -p "Enter remote password:" password
}
while :;
do
menu
read -p "Enter choice: " choice
case $choice in
1)
echo "transfer a file to remote"
login
#ÀûÓÃssh´«ÊäÒ»¸öÎļþ
;;
2)
echo "Remove a remote file"
login
#ÀûÓÃsshɾ³ýÔ¶³ÌµÄij¸öÎļþ
;;
3)
login
#ÀûÓÃsshÔ¶³ÌÖ´ÐÐÃüÁî
;;
4)
exit 0
;;
*)
echo " Ivalid choice!!!"
esac
done
[/code] ÔÙ²»Ã÷°×¾Íû°ì·¨ÁË£º[code][color=blue]-(user@host:tty)-(tmp)-
[1066 0] $ [/color]cat ssh.sh
#!/bin/bash
# vi:set ts=8 sw=4 et sta:
#
# Author: Wang Jian (dearvoid AT 263 DOT net)
#
# $Date: 2006-03-31 23:05:23 +0800 (Fri, 31 Mar 2006) $
# $HeadURL: svn://apple/clark/void/trunk/bash/template.sh $
# $Revision: 445 $
#
expect << END
set timeout 15
spawn ssh apple date
set bTimeout 0
expect {
"yes/no" {
send "yes\r"
exp_continue
}
-nocase "password:" {
send "MyPassword\r"
expect {
eof {
}
timeout {
set bTimeout 1
}
}
}
timeout {
set bTimeout 1
}
}
if \$bTimeout {
send_user "\\n>>> Error: timeout\\n"
exit 1
} else {
exit 0
}
END
[color=blue]-(user@host:tty)-(tmp)-
[1066 0] $ [/color]./ssh.sh
spawn ssh apple date
Password:
Mon Apr 10 21:57:49 CST 2006
[color=blue]-(user@host:tty)-(tmp)-
[1066 0] $ [/color]> ~/.ssh/known_hosts
[color=blue]-(user@host:tty)-(tmp)-
[1066 0] $ [/color]./ssh.sh
spawn ssh apple date
The authenticity of host 'apple (192.168.2.1)' can't be established.
RSA key fingerprint is 14:93:87:f5:e8:95:7e:65:c3:d2:a6:2d:c6:61:2d:9c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'apple,192.168.2.1' (RSA) to the list of known hosts.
Password:
Mon Apr 10 21:58:08 CST 2006
[color=blue]-(user@host:tty)-(tmp)-
[1066 0] $ [/color][/code] Á˽âÁË£¬expect×îºó±ØÐëµÃexit¡£
лл³¬°æ [QUOTE=pink_tulip]Á˽âÁË£¬expect×îºó±ØÐëµÃexit¡£
лл³¬°æ[/QUOTE]
exit ²»ÊDZØÐëµÄ :( ¸ú Shell¡¢C/C++¡¢Perl¡¢Python µÈÓïÑÔÒ»Ñù£¬³ÌÐòĩβ¿ÉÒÔûÓÐ explicit µÄ exit [QUOTE=dearvoid]exit ²»ÊDZØÐëµÄ :( ¸ú Shell¡¢C/C++¡¢Perl¡¢Python µÈÓïÑÔÒ»Ñù£¬³ÌÐòĩβ¿ÉÒÔûÓÐ explicit µÄ exit[/QUOTE]
sorry£¬·¢ÏÖÊÇÁíÒ»¸öÎÊÌâ¡£
expect { #ÕýÈ·
expect{ #´íÎó
expect
{ #´íÎó ºÜ²»Ï°¹ß¡£¡£ END»¹±ØÐë¶¥¸ñд£¬²»ÄÜËõ½ø£¬°æÊ½ºÃÄÑ¿´ [QUOTE=pink_tulip]ºÜ²»Ï°¹ß...
END»¹±ØÐë¶¥¸ñд£¬²»ÄÜËõ½ø£¬°æÊ½ºÃÄÑ¿´[/QUOTE]½¨Òéµ÷ÕûÒ»ÏÂÐÄ̬ :) d°æÄܽâÊÍÏÂ<< END.......ENDµÄº¬Òåô£¿
»¹ÓÐ
[code]
expect << END
......
END
[/code]
Õâ¶Î´úÂëΪɶ²»ÄÜ·ÅÔÚÒ»¸öÑ»·ÀïÄØ£¿Like this
[code]
while :;
do
expect << END
..............
END
done
[/code]
syntax error: unexpected end of file ´«ËµÖеÄHERE_DOCUMENT ?
Ò³:
[1]
2