shell基础之综合练习

Posted renyz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell基础之综合练习相关的知识,希望对你有一定的参考价值。

0.脚本一键完成下面所有操作
1.准备2台centos7系统的服务器,远程互相免密登录,以下所有题目过程中开启防火墙
2.给1号机和2号机使用光盘搭建本地yum源(永久生效)
3.给服务器1添加2块硬盘,1块1GB,1块2GB,使用这2块硬盘创建vg,包含pe100mb/块
4.使用上题vg创建2个1.2GB的lv,以xfs格式分别挂载到1号机/目录下的lvm1 lvm2上(永久生效)
5.将lvm2以nfs共享给2号机,挂载到2号机 /nfs 上(永久生效)
6.设置定时任务,每5分钟将/目录下所有文件名称写入到以"日期时间"命名的文件(时间精确到分钟),并保存到/lvm1中
7.在2号记上以/nfs为目录搭建ftp,用户名是 userftp2 密码 123 的非交互用户(1号机可以使用该用户登录)
8.搭建一个httpd网站,工作目录是ftp目录


  1 #!/bin/bash
  2 #1.准备2台centos7系统的服务器,远程互相免密登录,以下所有题目过程中开启防火墙
  3 #2.给1号机和2号机使用光盘搭建本地yum源(永久生效)
  4 IP1=192.168.11.135
  5 IP2=192.168.11.136
  6 echo "$IP1 test1
  7 $IP2 test2" >> /etc/hosts
  8 #检查环境
  9 setenforce 0
 10 sed -i s/=Enforcing/=Disabled/g /etc/selinux/config
 11 systemctl enable firewalld
 12 systemctl restart firewalld
 13 #配置yum源
 14 rm -rf /etc/yum.repos.d/*.repo
 15 echo "[base]
 16 name=base
 17 baseurl=http://172.16.105.251/base
 18 enabled=1
 19 gpgcheck=0
 20 [adv]
 21 name=adv
 22 baseurl=http://172.16.105.251/adv
 23 enabled=1
 24 gpgcheck=0" > /etc/yum.repos.d/local.repo
 25 yum clean all
 26 #下载秘钥(sshpassssh 登陆不能在命令行中指定密码,sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。)
 27 #-f指定的生成文件 -P输入密码
 28 yum -y install sshpass
 29 ssh-keygen -t rsa -f /root/.ssh/id_rsa -P ‘‘
 30 sed -i 35c"StrictHostKeyChecking no" /etc/ssh/ssh_config
 31 cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
 32 sshpass -p 0304 scp -r /root/.ssh test2:/root/
 33 #远程连接2号机
 34 ssh $IP2 "echo ‘$IP1 test1
 35 $IP2 test2‘ >> /etc/hosts"
 36 ssh test2 "setenforce 0 && sed -i ‘s/=Enforcing/=Disabled/g‘ /etc/selinux/config && systemctl enable firewalld && systemctl restart firewalld "
 37 ssh test2 "rm -rf /etc/yum.repos.d/*.repo" 
 38 scp /etc/yum.repos.d/*.repo test2:/etc/yum.repos.d/
 39 ssh test2 "yum clean all && sed -i 35c‘StrictHostKeyChecking no‘ /etc/ssh/ssh_config"
 40 #3.给服务器1添加2块硬盘,1块1GB,1块2GB,使用这2块硬盘创建vg,包含pe100mb/块
 41 echo "- - -" > /sys/class/scsi_host/host0/scan
 42 echo "- - -" > /sys/class/scsi_host/host1/scan
 43 echo "- - -" > /sys/class/scsi_host/host2/scan
 44 fdisk /dev/sdb <<EOF
 45 n
 46 p
 47 
 48 
 49 
 50 t
 51 8e
 52 w
 53 EOF
 54 fdisk /dev/sdc <<EOF
 55 n
 56 p
 57 
 58 
 59 
 60 t
 61 8e
 62 w
 63 EOF
 64 pvcreate /dev/sdb,c1
 65 vgcreate vg1 -s 100 /dev/sdb,c1
 66 #4.使用上题vg创建2个1.2GB的lv,以xfs格式分别挂载到1号机/目录下的lvm1 lvm2上(永久生效)
 67 lvcreate -l 12 -n lv1 /dev/vg1
 68 lvcreate -l 12 -n lv2 /dev/vg1
 69 mkdir /lvm1 /lvm2
 70 mkfs.xfs /dev/vg1/lv1
 71 mkfs -t xfs /dev/vg1/lv2
 72 echo "/dev/vg1/lv1 /lvm1 xfs defaults 0 0 " >> /etc/fstab
 73 echo "/dev/vg1/lv2 /lvm2 xfs defaults 0 0 " >> /etc/fstab
 74 mount -a
 75 #5.将lvm2以nfs共享给2号机,挂载到2号机 /nfs 上(永久生效)
 76 yum -y install nfs-*
 77 echo "/lvm2    $IP2/32(rw)" > /etc/exports
 78 systemctl enable nfs
 79 systemctl restart nfs
 80 systemctl enable rpcbind
 81 systemctl start rpcbind
 82 firewall-cmd --add-service=nfs
 83 firewall-cmd --add-service=nfs --permanent
 84 ssh test2 "yum -y install nfs-*"
 85 ssh test2 "systemctl enable rpcbind && systemctl start rpcbind && systemctl enable nfs && systemctl start nfs"
 86 ssh test2 "mkdir /nfs"
 87 ssh test2 "echo ‘test1:/lvm2 /nfs nfs defaults 0 0 ‘ >> /etc/fstab && mount -a"
 88 #6.设置定时任务,每5分钟将/目录下所有文件名称写入到以"日期时间"命名的文件(时间精确到分钟),并保存到/lvm1中
 89 echo "*/5 * * * * ls / > /lvm1/\`date +%m-%d-%H-%M\`" > /var/spool/cron/root
 90 #7.在2号记上以/nfs为目录搭建ftp,用户名是 userftp2 密码 123 的非交互用户(1号机可以使用该用户登录)
 91 ssh test2 "yum -y install vsftpd && sed -i ‘12s/YES/NO/g‘ /etc/vsftpd/vsftpd.conf "
 92 ssh test2 "systemctl enable vsftpd && systemctl restart vsftpd"
 93 ssh test2 "firewall-cmd --add-service=ftp && firewall-cmd --add-service=ftp --permanent"
 94 ssh test2 "useradd -d /nfs -s /sbin/nologin userftp2 && echo ‘123‘ |passwd --stdin userftp2"
 95 #8.搭建一个httpd网站,工作目录是ftp目录
 96 yum -y install httpd
 97 sed -i 129s/var\/www\/html/lvm2/g /etc/httpd/conf/httpd.conf
 98 sed -i 131s/var\/www\/html/lvm2/g /etc/httpd/conf/httpd.conf
 99 systemctl enable httpd
100 systemctl restart httpd
101 firewall-cmd --add-port=80/tcp --permanent
102 firewall-cmd --reload

 

以上是关于shell基础之综合练习的主要内容,如果未能解决你的问题,请参考以下文章

shell基础练习题

linux学习--基础shell练习

Shell编程基础-function: 功能

Shell基础:Shell基础应用简单Shell脚本的设计使用Shell变量变量的扩展应用

shell综合练习题(图文并茂代码清单)

练习记录--总结Spark基础操作常用的Shell命令