linux批量分发必会面试题,通过邮件反馈结果。
请准备三台linux机器为别为A,B,C,要求实现以下内容
1、用自己的名字用户完成一把钥匙开多把锁(A,钥匙,B,C锁)的免密码登录部署场景
该题在生产环境中的用途为;批量分发数据,批量发布程序代码,批量控制管理等。
大型批量管理软件pupet/saltstack
2、在1题的前提下同样用自己的名字用户完成多把钥匙开一把锁(B,C钥匙,A锁)的免密码登录
B--A
C--A
一题中我们在A创建了锁和钥匙,所以B和C要控制A就先把钥匙发给B和C,因为A本地的锁还不正常,就像A给B和C发公钥一样给自己再发一份,锁的名字为authorrized_keys.这样B和C就能无密码登录A.
在A上把钥匙发给B和C
$scp -p .ssh/id_dsa bichen@192.168.0.102:~/.ssh
3、如何实现从A指定目录批量分发文件到B,C,用户的家目录(借助1题部署结果)考察scp用法
$sh fenfa.sh
4、实现A指定的目录文件分发到B,C任意目录下(不用root用户你会么)
在客户端执行命令
#visduo 输入98gg跳转到98行
root ALL=(ALL) ALL
bichen ALL=(ALL) NOPASSWD:/usr/bin/rsync
加入bichen用户
echo “bichen ALL=(ALL) NOPASSWD:/usr/bin/rsync
”
检查语法
[root@lamp01 ~]# visudo -c
/etc/sudoers: parsed OK
这样子的话bichen这个用户在这个机器上就有root权限可以执行rsync这个命令,前提得用sudo提权。
或者也不用去客户端,因为通过ssh可以连上客户机,所以直接执行命令也可以。
在分发机上编辑下面面脚本,$0表示此脚本名称,$1表示要发送的文件,$2表示要发送到远端的路径,先将它拷贝到远端用户的家目录,在使用sudo提权rsync将其拷贝到对应的路径下。Scp命令后面加&&\表示此命令执行成功后在执行下一条命令。102.虚拟机未开机所以显示失败。
5、如何快速查看所有机器的负载load,cpu,内存信息(借助问题1)的部署结果。
(思考如果服务器数量多,如何并发查看和分发数据)
[bichen@nfsserver ~]$ vim view_upload.sh
#!/bin/sh
if [ $# -ne 1 ]
then
echo "USAGE:$0 COMMAND"
exit 1
fi
for n in 102 104
do
echo ==========192.168.0.$n====
ssh -p22 bichen@192.168.0.$n $1
Done
查内存,查负载
[bichen@nfsserver ~]$ sh view_upload.sh uptime
==========192.168.0.102====
Nasty PTR record "192.168.0.102" is set up for 192.168.0.102, ignoring
10:18:50 up 5 min, 1 user, load average: 0.00, 0.07, 0.04
==========192.168.0.104====
10:18:50 up 1:27, 1 user, load average: 0.00, 0.00, 0.00
[bichen@nfsserver ~]$ sh view_upload.sh "free -m"
==========192.168.0.102====
Nasty PTR record "192.168.0.102" is set up for 192.168.0.102, ignoring
total used free shared buffers cached
Mem: 980 331 649 1 39 110
-/+ buffers/cache: 181 799
Swap: 1983 0 1983
==========192.168.0.104====
total used free shared buffers cached
Mem: 980 320 659 1 50 103
-/+ buffers/cache: 166 814
Swap: 1983 0 1983
6、附加题:实现每分钟定时分发hosts文件到所有机器上,并把分发失败,没有分发成功的机器信息以邮件的形式发给运维人员。
第一种方案:客户端使用mail,服务端使用posfix
启动posfix服务
[root@nfsserver ~]# /etc/init.d/postfix restart
Shutting down postfix: [ OK ]
Starting postfix: [ OK ]
[root@nfsserver ~]# lsof -i :25
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
master 3601 root 12u IPv4 17870 0t0 TCP localhost:smtp (LISTEN)
master 3601 root 13u IPv6 17872 0t0 TCP localhost:smtp (LISTEN)
客户端mail命令,发邮件格式
mail -s “标题” 邮件地址 <文件
mail -s “bichen”695410305@qq.com </etc/hosts
echo “正文”|mail -s “bichen” 695410305@qq.com
发送邮件,结果没收到免费的邮件会经常收不到会耽搁事,所以要用收费的,或者自己的。
[root@nfsserver ~]# mail -s "bichen" 695410305@qq.com </etc/hosts
[root@nfsserver ~]# mailq
Mail queue is empty
我们分发hosts的脚本,将分发结果追加重定向到/tmp/true.log、/tmp/fail.log,如果fail.log
的内容不为空,说明有失败的,就将fail.log发送到邮箱,最后清空日志。
#!/bin/sh
. /etc/init.d/functions
if [ $# -ne 2 ]
then
echo "USAGE:$0 FileName RemoteDir"
exit 1
fi
for n in 102 104
do
scp -rp $1 bichen@192.168.0.$n:~ &>/dev/null&&\
ssh -t bichen@192.168.0.$n sudo rsync $1 $2 &>/dev/null
if [ $? -eq 0 ]
then
echo "fenfa $1 to $2 192.168.0.$n is ok" >>/tmp/true.log
else
echo "fenfa $1 to $2 192.168.0.$n is false" >>/tmp/fail.log
fi
done
if [ -s "/tmp/fail.log" ]
then
mail -s "$(date +%F\ %T)fenfa host" 18689197973@163.com</tmp/fail.log
/tmp/true.log
/tmp/fail.log
fi
然后做定时任务,所有的脚本都放在/server/scripts
#Crontab -u bichen -e 表示在bichen用户下做定时任务
#fenfa hosts by yankefei at 20170807
- /bin/sh /server/scripts/fenfa_hosts.sh &>/dev/null
配置mail使用外部smtp发邮件
通过修改配置文件可以使用外部smtp服务器,可以到达不使用sendmail等内部邮件服务而用外部的smtp服务器发送邮件目的
修改/etc/mail.rc最后一行加入
Set from=
Smtp=
Username smtp-auth-password=
Smtp-auth=login
7、实现每天晚上00点定时把B,C上的数据备份到A上,并把备份结果信息以邮件的形式发给运维人员。提示备份的目录要包含ip或主机名
使用scp写成脚本做成定时任务
8、用expect无交互式的批量分发密钥到B,C即在第一步建立免密码认证之前分发密钥就实现非交互批量发布。(如果一千太机器在第一做无密码认证时,得输入1000次yes和1000次password)。
(1)安装expect
[root@nfsserver ~]# yum install expect
[root@nfsserver ~]# which expect
/usr/bin/expect
(2创建expect脚本 定义file变量,是我们的公钥。Host为主机ip。两个参数
,发送yes发送密码)
[bichen@nfsserver ~]$ vim fenfa_sshkey.exp
#!/usr/bin/expect
if { $argc !=2 } {
send_user "usage: expect fenfa_sshkey.exp file host\n"
exit
}
#define var
set file [lindex $argv 0]
set host [lindex $argv 1]
set password "yankefei"
#spawn scp /etc/hosts root@192.168.0.102:/etc/hosts
#spawn scp -P222 $file bichen@$host:$dir
#spawn ssh-copy-id -i $file "-p 222 bichen@$host"
spawn ssh-copy-id -i $file "-p 22 bichen@$host"
expect {
"yes/no" {send "yes\r";exp_continue}
"*password" {send "$password\r"}
}
expect eof
#expect fenfa_sshkey.exp ~/.ssh id_dsa.pub 192.168.0.104
上面脚本fenfa_sshkey.exp实现了一台的免人工交互,所以还要在写个脚本调用此脚本实现多台非人工交互。
#vi fenfa_key
#!/bin/sh
. /etc/init.d/functions
for ip in 102 103 104
do
#expect fenfa_sshkey.exp ~/.ssh/id_dsa.pub $ip >/dev/null 2>&1
expect fenfa_sshkey.exp ~/.ssh/id_dsa.pub 192.168.0$ip
if [ $? -eq 0 ];then
antion "$ip" /bin/true
antion "$ip" /bin/false
fi
done
转载于:https://blog.51cto.com/10980975/2069988
linux批量分发必会面试题,通过邮件反馈结果。相关推荐
- Django 必会面试题总结
文章转自 https://blog.csdn.net/weixin_43063753/article/details/85559540 目录 欢迎关注 1 列举Http请求中常见的请求方式 2 谈谈你 ...
- 美团前端二面必会面试题(附答案)
判断数组的方式有哪些 通过Object.prototype.toString.call()做判断 Object.prototype.toString.call(obj).slice(8,-1) === ...
- 滴滴前端一面必会面试题汇总
实现 LazyMan 题目描述: 实现一个LazyMan,可以按照以下方式调用: LazyMan("Hank")输出: Hi! This is Hank!LazyMan(" ...
- 前端二面必会面试题(附答案)
typeof NaN 的结果是什么? NaN 指"不是一个数字"(not a number),NaN 是一个"警戒值"(sentinel value,有特殊用途 ...
- 2022初级前端必会面试题持续更新
01-html&css H5的新特性有哪些,C3的新特性有哪些 H5 新增语义化标签,header,nav,aside,article,section,footer 新增input表单元素类型 ...
- 校招前端必会面试题及答案
代码输出结果 async function async1() {console.log("async1 start");await async2();console.log(&qu ...
- java第一阶段面面试题_java基础阶段几个必会面试题
1.说出你对面向对象的理解 在我理解,面向对象是向现实世界模型的自然延伸,这是一种"万物皆对象"的编程思想.在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例 ...
- 前端必会面试题,往死里背吧
说一说cookie sessionStorage localStorage 区别? 得分点 : 数据存储位置.生命周期.存储大小.写入方式.数据共享.发送请求时是否携带.应用场景 标准回答 Cooki ...
- 美团前端必会面试题(附答案)
常见的CSS布局单位 常用的布局单位包括像素(px),百分比(%),em,rem,vw/vh. (1)像素(px)是页面布局的基础,一个像素表示终端(电脑.手机.平板等)屏幕所能显示的最小的区域,像素 ...
最新文章
- 死锁产生的原因和解锁的方法
- mysql5.7.23权限问题_部署MySQL5.7时的权限问题
- Rpgmakermv(31)MOG插件与YEP的结合
- 【新产品发布】《EVC8021 RS-232RS-485/422 隔离接口转换器》
- .难忘的大学时光·~~~~~
- Jupyter 工具的安装与使用方法,jupyter运行python代码演示,好用的python编辑器推荐!
- 任意电脑登录MySQL_使用批处理命令注册运行mysql数据库,无需注册mysql服务,可以在任意电脑登录使用...
- Mysql集群拆分_MySQL 5.7跨集群拆分迁移
- [转载] Java中的关键字含义以及介绍
- 国内maven镜像,快的飞起
- Pytorch——循环神经网络层、损失函数、优化器
- 靠播放业务吃不饱?音乐流媒体纷纷“加电商”卖周边
- PMP培训班内部资料,免费分享
- C#获取注册表指定键值操作
- js 获取字符长度(英文1,中文2)
- python是哪一类型编程语言_什么是编程语言呢?编程语言有哪些种类呢?
- 微积分-数列极限概念的理解
- win10登录选项没有PIN,设置了PIN仍然在系统的登录选项中显示[添加],PIN无法使用
- 17网里多个商品里全部图片复制并分类保存的技巧
- google,百度,yahoo搜索比较
热门文章
- ui设计师常用的设计工具_2020年应该使用哪个UI设计工具?
- 平面设计师和ui设计师_平面设计师为什么要享受所有乐趣?
- 你不知道的 Node.js 工具函数
- 【mybatis】mybatis多表联查,存在一对多关系的,实体中使用List作为字段接收查询结果的写法...
- Bootstrap开发框架视频整理
- activemq 安全连接
- 循环、格式化输出、数据统计
- 数字效率Evernote超效率数字笔记术
- Android 中文api (81)——InputMethod [输入法]
- 6月,回忆我失去的爱情