shell 脚本交互模式expect批量上传ssh密钥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 脚本交互模式expect批量上传ssh密钥相关的知识,希望对你有一定的参考价值。

#!/usr/bin/bash
###批量上传密钥

V.1.0 by chenght 2019-03-29

password=12345qwert
for i in {2..254} ######批量获取ip地址
do
{
ip=192.28.1.$i
ping -c1 -W1 $ip &>/dev/null ####记录成功的ip
if [ $? = 0 ];then
echo "$ip">>ip.txt

EOF 交互内容容易出错,请注意
   /usr/bin/expect <<-EOF
   set timeout 10
   spawn ssh-copy-id -i /root/.ssh/id_rsa.pub -p 10022 [email protected]$ip   ##上传的密钥写全路径#
   expect {
           "yes/no" { send "yes\r";exp_continue }
            "password:" { send "$password\r" }
          }
   expect eof

EOF
fi
}&
done
wait
echo "fininsh.."

以上是关于shell 脚本交互模式expect批量上传ssh密钥的主要内容,如果未能解决你的问题,请参考以下文章

[shell脚本]-在shell中定义expect function

Linux系统shell脚本之Expect实现SSH免交互执行命令

Shell脚本------Expect(实现ssh服务免交互)

(转)SSH批量分发管理&非交互式expect

linux下expect命令实现批量ssh免密

shell之expect应答语句(用shell脚本实现获取批量主机存活信息)