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 [email protected]:~/.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

检查语法
[[email protected] ~]# visudo -c
/etc/sudoers: parsed OK
这样子的话bichen这个用户在这个机器上就有root权限可以执行rsync这个命令,前提得用sudo提权。
或者也不用去客户端,因为通过ssh可以连上客户机,所以直接执行命令也可以。

在分发机上编辑下面面脚本,$0表示此脚本名称,$1表示要发送的文件,$2表示要发送到远端的路径,先将它拷贝到远端用户的家目录,在使用sudo提权rsync将其拷贝到对应的路径下。Scp命令后面加&&\表示此命令执行成功后在执行下一条命令。102.虚拟机未开机所以显示失败。

5、如何快速查看所有机器的负载load,cpu,内存信息(借助问题1)的部署结果。
(思考如果服务器数量多,如何并发查看和分发数据)
[[email protected] ~]$ 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 [email protected]$n $1
Done
查内存,查负载
[[email protected] ~]$ 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
[[email protected] ~]$ 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服务
[[email protected] ~]# /etc/init.d/postfix restart
Shutting down postfix: [ OK ]
Starting postfix: [ OK ]
[[email protected] ~]# 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”[email protected] </etc/hosts
echo “正文”|mail -s “bichen” [email protected]
发送邮件,结果没收到免费的邮件会经常收不到会耽搁事,所以要用收费的,或者自己的。
[[email protected] ~]# mail -s "bichen" [email protected] </etc/hosts
[[email protected] ~]# 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 [email protected]$n:~ &>/dev/null&&\
ssh -t [email protected]$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" [email protected]</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
            [[email protected] ~]# yum install expect
            [[email protected] ~]# which expect
            /usr/bin/expect
            (2创建expect脚本 定义file变量,是我们的公钥。Host为主机ip。两个参数
            ,发送yes发送密码)
            [[email protected] ~]$ 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 [email protected]:/etc/hosts
#spawn scp -P222 $file [email protected]$host:$dir
#spawn ssh-copy-id -i $file "-p 222 [email protected]$host"
spawn ssh-copy-id -i $file "-p 22 [email protected]$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

原文地址:http://blog.51cto.com/10980975/2069988

时间: 2024-08-14 06:17:46

linux批量分发必会面试题,通过邮件反馈结果。的相关文章

Linux运维MySQL必会面试题100道

老男孩教育Linux运维班MySQL必会面试题100道 (1)基础笔试命令考察 (要求:每两个同学一组,一个口头考,一个上机实战作答,每5个题为一组,完成后换位) 1.开启MySQL服务 2.检测端口是否运行 3.为MySQL设置密码或者修改密码. 4.登陆MySQL数据库. 5.查看当前数据库的字符集 6.查看当前数据库版本 7.查看当前登录的用户. 8.创建GBK字符集的数据库oldboy,并查看已建库完整语句 9.创建用户oldboy,使之可以管理数据库oldboy 10.查看创建的用户o

(转)Linux运维MySQL必会面试题100道

老男孩教育Linux运维班MySQL必会面试题100道 (1)基础笔试命令考察 (要求:每两个同学一组,一个口头考,一个上机实战作答,每5个题为一组,完成后换位) 1.开启MySQL服务 2.检测端口是否运行 3.为MySQL设置密码或者修改密码. 4.登陆MySQL数据库. 5.查看当前数据库的字符集 6.查看当前数据库版本 7.查看当前登录的用户. 8.创建GBK字符集的数据库oldboy,并查看已建库完整语句 9.创建用户oldboy,使之可以管理数据库oldboy 10.查看创建的用户o

C语言必会面试题(3、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,...)

3.耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3....凡是报到"3"就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒.请找出它原来的序号. int a[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13}; int number = 13;//记录当前人数 int count = 0;//1,2,3报数 int i = 0; while (number > 1) { if

Linux必会面试题--1

1.列出你所知道的所有vi,vim编辑器的编辑模式,普通模式,命令模式.这三种模式下的操作指令 编辑模式:无 普通模式:G gg yy p d dd D u r x $ ^ dG i a o A I O 命令模式: : / :wq :x shift+zz :set nu :set ic :set list 2.在当前系统能ping通百度的情况下,使用命令(curl cip.cc)查看(公网IP)当前网络出口地址,取出关键字"数据二"所在的行,以空格为分隔符,取出第三列的内容 [[ema

C语言必会面试题(3、耶稣有13个门徒,当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个開始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,...)

3.耶稣有13个门徒.当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个開始报号:1.2,3.1,2,3.... 凡是报到"3"就退出圈子.最后留在圈子内的人就是出卖耶稣的叛徒.请找出它原来的序号. int a[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13}; int number = 13;//记录当前人数 int count = 0;//1,2,3报数 int i = 0; while (number > 1) { if

Django 必会面试题总结

https://www.cnblogs.com/wenyule/articles/699aa722eb4f9b16acf554df2337ec6f.html#_labelTop 原文地址:https://www.cnblogs.com/sunxiuwen/p/10230380.html

Linux运维必会的MySQL企业面试题大全 推荐

Linux运维必会的MySQL企业面试题大全 推荐 (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld startservice mysqld startsystemctl  start mysqld 2.检测端口是否运行 lsof -i :3306netstat -lntup |grep 3306 3.为MySQL设置密码或者修改密码 设置密码 mysql -uroot -ppassword -e "set passowrd for root = passow

Linux服务器集群架构部署搭建(三)NFS文件系统、SSH通道建立、批量分发管理(1)

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想.  作者:燁未央_Estelle声明:测试学习,不足之处,欢迎指正. 第一章 NFS共享服务器的企业应用 1.1 NFS服务--静态数据存储 NFS是(Network File System)主要功能是通过网络让不同的设备端之间可以彼此共享文件或目录.NFS客户端(一般为应用服务器,如WEB)可以通过挂载(mount)方式,将NFS客户端本地系统中(就是一个挂载点)从NFS服务器端共享的数据文件目

linux运维必会MySQL企业面试题近百个

众所周知,MySQL是所有IT企业中的重中之重,linux运维人员如果能掌握MySQL数据库技术,对未来的高薪职业发展非常有帮助! linux运维必会MySQL企业面试题近百个 http://user.qzone.qq.com/49000448/blog/1427333863