linux如何自动化部署脚本实现免密登录并访问资源
任务把weijie主机jdk文件安装到weijie1中。
首先再各台主机中安装必要的命令:
expect、wget、httpd、ssh
执行命令 如:expect提示命令不存在,则分别安装命令
yum install expect
yum install wget
yum install httpd
yum install ssh
开启httpd,方便通过http请求来访问虚拟机linux系统中的文件
service httpd start
第一步:
分别在两台主机关闭防火墙:
service iptables stop
把要部署的文件拷贝到www的目录下
cp 拷贝的文件路径 cd /var/www/html/目录下
[root@weijie ~]# cp jdk-8u161-linux-x64.tar.gz /var/www/html/soft/
再确认y即可。如果拷贝成功后,可以通过本机访问虚拟机www中的资源
会出现
第二步:
再配置自动化部署脚本
习惯在根目录下创建script文件夹,里面分别创建boot.sh(实现免密登录)和install.sh()两个脚本文件
mkdir script
touch boot.sh
touch install.sh
第三步:
写入脚本代码操作
打开boot.sh
vi boot.sh/boot.sh
写入代码:
注解:
spawn是进入expect环境后才可以执行的expect内部命令。
expect是一种脚本语言,它能够代替我们实现与终端的交互,我们不必再守候在电脑旁边输入密码,或是根据系统的输出再运行相应的命令。
ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。
send()是一个计算机函数,功能是向一个已经连接的socket发送数据
#!/bin/bash
SERVERS="192.168.1.113" #weijie1中的ip地址
PASSWORD=123456 #weijie1登录密码
BASE_SERVER=192.168.1.112 #weijieip地址auto_ssh_copy_id(){expect -c "set timeout -1;spawn ssh-copy-id $1; expect {*(yes/no)* {send -- yes\r;exp_continue;} #* *通配含有"*"内的字符串*assword:* {send -- $2\r;exp_continue;} #$2表示下面代码中的PASSWORD,引用密码eof {exit 0;}}";
}ssh_copy_id_to_all(){for SERVER in $SERVERS #遍历要发送到各个主机的ipdoauto_ssh_copy_id $SERVER $PASSWORDdone
}
ssh_copy_id_to_allfor SERVER in $SERVERS
doscp install.sh root@$SERVER:/rootssh root@$SERVER /root/install.shdone
配置install.sh脚本文件
打开文件
[root@weijie ~]# vi script/install.sh
写入下面代码
#!/bin/bash
BASE_SERVER=weijie
wget $BASE_SERVER/soft/jdk-8u161-linux-x64.tar.gz #待发送的文件
tar -zxcf jdk-8u161-linux-x64.tar.gz -C /usr/local #解压到对应的local文件夹目录下
cat >> /etc/profile << EOF #将EOF中的内容追加到profile内容中
export JAVA_HOME=/usr/local/jdk1.8.0_161 #配置环境变量
export PATH=\$PATH:\$JAVA_HOME/bin
~
第四步:
执行脚本文件
sh boot.sh
如果出现如下,说明部署成功
然后在wiejie1 root目录中可以看见jdk文件。
linux如何自动化部署脚本实现免密登录并访问资源相关推荐
- linux搭建sftp服务器并设置免密登录
参考资料:linux环境快速搭建sftp服务以及设置免密 - 渐逝的星光 - 博客园 (cnblogs.com) 网上很多搭建sftp的文章,最后免密登录设置都有点问题,研究了一下终于通了,做个记录 ...
- Linux操作之多台服务器配置免密登录
在进行多台服务器的使用时,如果每个都去进行输密码的话很麻烦,为了简单一点,我们可以配置多台服务器之间的免密登录,这个免密登录是多台服务器之间相互登录是免密的. 概述 我这里配置的是三态服务器(虚拟服务 ...
- 通过ssh远程登录linux的原理过程和配置免密登录
1.总结通过ssh远程登录linux的原理过程 基于口令的认证 客户端和服务端建立TCP连接 协商阶段 双方进行ssh版本协商 密钥协商阶段 在服务器端生成一对密钥,将公钥传递给客户端,客户端将密钥C ...
- linux使用同一密钥对实现互相免密登录
准备两台主机 192.168.191.133 192.168.191.121 先在133主机上生成密钥信息 [root@zabbix ~]# ssh-keygen -t rsa -P '' -f ...
- [linux] redhat 7 ssh 安装配置免密登录
安装ssh yum install openssh 查看端口 netstat -ntpl netstat -ntpl | grep :22 启动和关闭 service sshd restart/sta ...
- gitlab ci 自动化部署_前端gitLab加jenkins自动化构建和部署,以及服务器常用的linux命令行操作,免密登录...
常用的linux命令行操作 将项目部署到服务器后,需要查看文件是否已经部署成功,已经对文件进行增删改查操作,就需要用到命令行操作,常用操作如下: ll 罗列出当前文件或目录的详细信息,含有时间.读写权 ...
- Linux运维:Shell脚本实现ssh免密登录远程服务器
LInux系统日常运维过程中,经常需要在本地运行脚本执行对远程主机的命令,正常情况下,ssh登录远程服务器时会提示输入密码,这会影响到脚本的自动执行(因为shell脚本中没有自动填充密码的命令).有三 ...
- linux100台服务器免密,多台Linux服务器之间互相免密登陆,脚本同步免密
多台Linux服务器之间互相免密登陆,脚本同步免密 环境: 三台Linux 服务器 IP Release ...
- shell脚本部署免密登录
shell脚本部署免密登录 创建一个目录,用来存放脚本 [root@localhost scripts]# tree . ├── host └── ssh.sh0 directories, 2 fil ...
最新文章
- 阿里云风险识别决策引擎发布
- Python 3.5.2建立与DB2的连接
- Angular和SAP C4C的事件处理队列 1
- spring+struts2+mybatis
- Multimodal —— 看图说话(Image Caption)任务的论文笔记(二)引入attention机制
- 调整Word中英文与汉字之间的空隙
- C++结构体字节对齐
- Android UI设计中一些不错的示例及第三方控件
- 自动化运维脚本模块-stmplib,emai模块
- 前沿 | 社区问答系统及相关技术
- ibm3400服务器改win7系统,dell3578win10改win7系统bios如何设置_戴尔win10改win7系统bios设置步骤...
- 国内外IoT系统介绍
- 在VC中用GDI+绘制角度可变的颜色渐变效果-.NET教程,VB.Net语言[转]
- Factorization Machines 因式分解机 论文学习笔记
- MATLAB能进行拉氏变换吗,matlab拉氏反变换
- 【美图 - 计算机视觉岗】2018 年在线笔试考点:选择 + 编程(顺时针旋转数组90°)
- 科研快报 | 三代测序技术-海水微生物态,助力海水微生态及微生物基因组研究
- 表格标签初学者,制作一个个人简历
- 计算机应用程序没声音,详细教您win7没有声音怎么办
- 易语言开发免费版的快手去视频水印软件!超简单
热门文章
- XMPP扩展协议详解
- JAVA进阶教学之(泛型)
- java jmeter_使用Jmeter中的Java Request进行性能测试
- python deepcopy报错_python 字典对象赋值之deepcopy遭遇的问题及解决过程(lxml惹的祸)...
- curl shell 失败_linux – curl命令不在bash中通过shell脚本执行
- 电脑机器人_【头条】厚积薄发!卡达电脑智能机器人之纸箱码垛机赋能智能工厂...
- java mongodb gridfs_查询MongoDB GridFS元数据(Java)
- mysql集群fuzhi_MySQL集群 和MySQL主从复制的不同
- python 类方法 函数_Python OOP类中的几种函数或方法总结
- 计算机主机接线视频教程,电脑主板跳线怎么接?电脑机箱与主板跳线接法图解教程...