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"

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值