`
macken
  • 浏览: 346000 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

shell脚本-自动打通服务器ssh

 
阅读更多

使用了expect来处理交互内容,代码如下

#!/bin/sh
function usage() {
        cat << EOF
        Usage ssh_connect ip [username] [password]
EOF
}

auto_login_ssh() {
        expect -c "set timeout -1;
        spawn ssh $user@$ip
        expect {
        yes/no {
                send \"yes\n\"
                expect password
                send \"$pass\n\"
        }
        password {send \"$pass\n\"}
        }
        interact;
        "
}


scp_file(){
        expect -c "
        spawn scp $pub $user@$ip:~
        expect {
        yes/no {
                send \"yes\n\"
                expect \"password\"
                send \"$pass\n\"
                }
        password {send \"$pass\n\"}
        }
        send \" cat ~/id_dsa.put >> ~/.ssh/authorized_keys\"
        interact;
        "
}
ssh_cmd() {
        echo $1
        expect -c "
        spawn ssh $user@$ip 
        expect {
        yes/no {
                send \"yes\n\"
                expect password
                send \"$pass\n\"
        }
        password {send \"$pass\n\"}
        }
        expect ]
        send \"$1\n\"
        expect ]
        send \"exit\n\"
        expect eof

        "
}

ip=$1
user=root
pass=pwd
if [ ! -z $2 ];then
        user=$2
fi

if [ ! -z $3 ];then
        pass=$3
fi


cd ~

sshpath=$PWD"/.ssh"
if [ ! -d $sshpath ];then
        mkdir $sshpath
fi

pub=$sshpath"/id_dsa.pub"
echo $pub

if [ ! -f $pub ]; then
        ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
fi
#auto_login_ssh

scp_file
ssh_cmd "cat ~/id_dsa.pub >> ~/.ssh/authorized_keys"

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics