这两个脚本的背景是当时有个需求,需要往一台服务器的100多个用户上传文件,然后就想取一次巧,通过ssh信任,然后通过sftp(scp)来传。
可供参考。
(1)
#!/bin/bash
FILE=/root/ansible/gaven/autossh
LINE=`cat $FILE|wc -l`
for((i=1;i<=$LINE;i++))
{
line=`cat $FILE |awk "NR==$i"`
USER=`echo $line |awk -F " " '{print $1}'`
PASS=`echo $line |awk -F " " '{print $2}'`
expect <<EOF
spawn ssh-copy-id $USER@10.10.10.10
expect {
"assword:" { send "$PASS\n"; exp_continue; }
"yes/no*" { send "yes\n"; exp_continue; }
eof { exit; }
}
EOF
}
(2)
#!/bin/sh
for p in $(cat $1)
do
ip=$(echo "$p"|cut -f1 -d":")
passwd=$2
expect <<EOF
spawn ssh-copy-id $ip
expect {
"assword:" { send "$passwd\n"; exp_continue; }
"yes/no*" { send "yes\n"; exp_continue; }
eof { exit; }
}
EOF
done
exit 0
(3)(更喜欢用此脚本实现自动登录)
#!/usr/bin/expect -f
spawn ssh {user}@{host}
expect "assword"
send "{password}\r"
interact