| 
                         ip=$1 
user=$2 
password=$3 
expect <<EOF 
set timeout 10 
spawn ssh -l $user $ip 
expect { 
"yes/no" { send "yesn";exp_continue } 
"password" { send "$passwordn" } 
} 
expect "]#" { send "useradd jjn" } 
expect "]#" { send "echo jiajie|passwd --stdin jjn" } 
expect "]#" { send "exitn" } 
expect eof 
EOF 
执行后的输出结果: 
[root@localhost shell.sh]# ./test.sh 192.168.1.106 root jiajie
spawn ssh -l root 192.168.1.106
root@192.168.1.106's password: 
Last login: Sat Sep  9 04:10:46 2017 from web
[root@localhost ~]# useradd jj
[root@localhost ~]# echo jiajie|passwd --stdin jj
Changing password for user jj.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# exit
logout
Connection to 192.168.1.106 closed.
[root@localhost shell.sh]#  
通过shell脚本通过调用expect脚本实现批量认证: 
expect脚本: 
[root@localhost shell.sh]# vim scp.exp
!/usr/bin/expect
if {$argc!=3} { 
send_user "Usage:expect need three arguments lisk thks:file host dirn" 
exit 1 
} 
set srcname [lindex $argv 0] 
set hostname [lindex $argv 1] 
set destname [lindex $argv 2] 
set password "jiajie" 
spawn scp $srcname root@$hostname:$destname 
set timeout 30 
expect { 
-timeout 2
    "yes/no" {send "yesr";exp_continue}
    "*password:" {send "$passwordr"} 
timeout {puts "expect connect failure,please contact admin.";return}
} 
expect eof 
exit -onexit { 
send_user "Jobs has finished,Goodbye.n" 
}  
shell脚本: 
[root@localhost shell.sh]# vim scp.sh 
!/bin/bash
if [[ "$#" != "2" ]];then 
echo "Usage:$0 src_filename des_filename" 
exit 0 
fi 
IP_LIST=( 
192.168.1.106 
192.168.1.170 
192.168.1.10 
) 
. /etc/init.d/functions 
for ip in ${IP_LIST[*]} 
do 
expect scp.exp $1 $ip $2 &> /dev/null 
if [ $? -eq 0 ];then 
action "$ip" /bin/true 
else 
action "$ip" /bin/false 
fi 
done  
scp.sh脚本通过调用expect脚本来实现分发功能。执行结果如下: 
[root@localhost shell.sh]# sh  scp.sh  /etc/fstab /tmp/
192.168.1.106                                              [  OK  ]
192.168.1.170                                              [  OK  ]
192.168.1.10                                               [FAILED] 
因为并没有192.168.1.10所有报错。                         (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |