原理如上图所示!
ssh基于秘钥登陆:需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并与服务器中的公钥进行比较;
产生密钥对:ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
scp(secure copy)命令上传文件:scp file-name username@host:/path
expect脚本:
send 向进程发送字符串
expect 接收进程中返回的信息, 如果匹配成功(有大小写区分), 就执行expect后的动作
spawn 启动新的进程,执行命令或者指定程序
expect eof 不允许用户交互,直接退出(这个用的会比interact多)
exp_continue 执行完expect后的动作后,使expect不退出,继续往下匹配
涉及知识点:1.ssh服务基于秘钥登陆 2.shell脚本(for循环)3.expect处理脚本交互问题
脚本如下:
#!/bin/bash
##判断主机是否产生秘钥对,避免再次执行命令产生交互导致脚本无法向前进行
if [ ! -f ~/.ssh/id_rsa ];then
ssh-keyge