零基础学习云计算及大数据DBA集群架构师【Linux Bash Shell编程及系统自动化2015年1月20日周三】

老师讲的所有实验记录

1.写一个脚本,判断用户是否存在,如果存在则删除。若不存在,就提示不存在。
2.三个数字比大小,输出最大的
3.三个数字比大小,并且按从大到小排列
4.画斜线正反
5.达到如下效果
    *
   ***
  *****
 *******
*********
6.写一个9*9乘法表
7.画一个平行四边形
8.连乘算法 while和until
9.要求根据userlist创建用户,要求指定用户名,用户id,用户的附加组及变更用户u密码,若对应用户的附加组不存在,则将附加组创建出来后再根据要求添加用户。
userlist文件的格式如下:
carol 777 tom uplooking
natasha 778 tom uplooking
r1 779 tom uplooking
10.要求根据userlist创建用户,要求指定用户名,用户id,用户的默认组和附加组及变更用户u密码,若对应用户的附加组不存在,则将附加组创建出来后再根据要求添加用户。
[[email protected] ~]# cat /tmp/useraddlist1
dabao 888 xuexi,it uplooking
lucy 889 sales,it uplooking
lily 899 pro,aa uplooking
11.case
12.要求输出100以下所有能够被7整除,但不能够被5整除的数字。
13.位置参数,判断文件是否存在
14.函数返回值
15.执行如下命令,达到如下效果
[[email protected] scripts]# bash hs.sh -t 9
        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
*****************
[[email protected] scripts]# bash hs.sh -l 4
 ^
  ^
   ^
    ^
16.取出num.list每一行最大的数字。
[[email protected] tmp]# cat num.list
1 4 3 2
10 7 8 9
11 99 23 16

17.位置参数添加用户
18.针对/usr/share/dict/words文件做过滤
1)列出文件中包含 先有字母t,然后中间有一个元音字母,之后是sh的单词;
2)列出文件中包含 先有字母t,然后中间有若干个元音字母,之后是sh的单词;
3)列出文件中刚好包含16个字母的单词。
19.将/etc/fstab文件复制到/tmp目录,针对/tmp/fstab文件做操作:
1)打印1-3行
2)打印该文件第4行到最后一行
3)将包含mapper字符串的行删除
4)将/etc/hosts文件的内容追加到文件的第3行后和最后一行后面
5)将文件行首的#号代替成空格
取服务器公共目录下下载/content/ule/shellscripts/text.txt文件,针对以下做操作:
1)将包含kevin或Kevin字符串的行打印出来
2)将该文件包含kevin字符串的行中,数字1替换成数字2,数字3替换成数字4
3)将给文件的1-3行删除,并把mandy字符串替换成hellomandy
4) 在该文件kevin字符串的行上边添加hello行
20.将工资单进行统计,输出每个人的工资总和,并格式化输出。
21.access.log 文件中,访问apche的时间在3点到4点之间访问最的ip地址
22.检测输入的ip地址是否合法

习题:写一个脚本,判断用户是否存在,如果存在则删除。若不存在,就提示不存在。
#!/bin/bash
#userdel
#dabao 2016.01.13

read -p "Plz input username:" user
if  grep ${user} /etc/passwd &> /dev/null
then
        userdel -r ${user}
        echo "User ${user} has been deleted!"
else
        echo "no ${user}! "
fi
习题:三个数字比大小
#!/bin/bash
read -p "plz input num1:" num1
read -p "plz input num2:" num2
read -p "plz input num3:" num3
declare -i l
declare -i num1
declare -i num2
declare -i num3
if [ ${num1} -gt ${num2} ]
then
        l=${num1}
else
        l=${num2}
fi

if [ ${l} -gt ${num3} ]
then
        echo "最大为: ${l}"
else
        l=${num3}
        echo "最大为: ${l}"
fi
习题:三个数字比大小,并且按从大到小排列
#!/bin/bash
read -p "plz input num1:" num1
read -p "plz input num2:" num2
read -p "plz input num3:" num3
declare -i l
declare -i m
declare -i n
declare -i num1
declare -i num2
declare -i num3
if [ ${num1} -gt ${num2} ]
then
        l=${num1}
    m=${num2}

else
        l=${num2}
    m=${num1}

fi

if [ ${l} -gt ${num3} ]
then
    if [ ${m} -gt ${num3} ]
    then
        m=${m}
        n=${num3}

    else
        n=${m}
        m=${num3}

    fi
else
        n=${m}
    m=${l}
    l=${num3}
fi
echo "数字从大到小排列为:${l} ${m} ${n}"

习题:画斜线[[email protected] scripts]# bash seq.sh
input number10
          &
         &
        &
       &
      &
     &
    &
   &
  &
 &

#!/bin/bash
read -p "input number" num
for i in $(seq $num -1 1)
do
    for x in $(seq $i -1 1)
    do
        echo -n " "
    done
echo -n "&"
done

习题:达到如下效果
[[email protected] scripts]# bash seq2.sh
input number:5
    *
   ***
  *****
 *******
*********

#!/bin/bash
read -p "input number:" num
for i in $(seq 1 ${num})
do
        for x in $(seq 1 $((${num}-${i})))
        do
                echo -n " "
        done
        for t in $(seq 1 $((1+($i-1)*2)))
        do
                echo -n "*"

        done
echo
done
习题:[[email protected] scripts]# bash my.sh
   *
  ***
 *****
*******
  ***
  ***
  ***
  ***
  ***
#!/bin/bash
#my test
for i in $(seq 1 4)
do
        for x in $(seq 1 $((4-$i)))
        do
                echo -n " "
        done
        for t in $(seq 1 $((1+($i-1)*2)))
        do
                echo -n "*"
        done
echo
done

for i in $(seq 1 5)
do
        echo "  ***"
done

作业:
1.写一个9*9乘法表
#!/bin/bash
#99乘法表
#dabao 2016.01.13
for i in $(seq 1 9)
do
        for b in $(seq 1 ${i})
        do
                echo -n  "${i}*${b}=$((${i}*${b})) "
        done
echo
done

2.画一个平行四边形

[[email protected] scripts]# bash px.sh
      **********
     *        *
    *        *
   *        *
  *        *
 *        *
**********
[[email protected] scripts]# vim px.sh
[[email protected] scripts]# cat px.sh
#!/bin/bash
#显示一个平行四边形 高为多少行,宽为多少位
#dabao 2016.01.13

read -p "请输入平行四边形高为多少行:" hang
read -p "请输入平行四边形宽为多少位:" wei

for i in 1
do
    for t in $(seq 1 $hang)
    do
        echo -n " "
        done
    for t in $(seq 1 $wei)
    do
        echo -n "*"
        done
echo
done

for i in $(seq 1 $(($hang-2)))
do
    for t in $(seq 1 $(($hang-$i)))
    do
        echo -n " "
    done
echo -n "*"
    for t in $(seq 1 $(($wei-2)))
    do
        echo -n " "
    done
echo -n "*"
echo
done

echo -n " "

for t in $(seq 1 $wei)
do
    echo -n "*"
done
echo
done
实验:连乘算法
#!/bin/bash
#用while达到连乘的功能
#dabao 2016.01.14

i=1
c=1
read -p "连乘算法,请输入:" s
while [ ${i} -le ${s} ]
do
        c=$((${i}*${c}))
        i=$((${i}+1))
done
echo "$c"
echo
9.要求根据userlist创建用户,要求指定用户名,用户id,用户的附加组及变更用户u密码,若对应用户的附加组不存在,则将附加组创建出来后再根据要求添加用户。
userlist文件的格式如下:
carol 777 tom uplooking
natasha 778 tom uplooking
r1 779 tom uplooking
[[email protected] scripts]# cat /scripts/useraddauto.sh
#!/bin/bash
#根据/tmp/userlist文件来创建用户,设置uid,附加组,密码
#dabao 2016.01.14
while read username uid group passwd
do
    if grep ${group} /etc/group &> /dev/null
    then
        useradd ${username} -u ${uid} -G ${group}
        echo ${passwd} | passwd --stdin ${username}
    else
        groupadd ${group}
        useradd ${username} -u ${uid} -G ${group}
                echo ${passwd} | passwd --stdin ${username}
    fi
done < /tmp/useraddlist

[[email protected] scripts]# cat /tmp/useraddlist
r1 777 tom uplooking
r2 788 tom uplooking
r3 799 carol uplooking

[[email protected] scripts]# id r1
uid=777(r1) gid=777(r1) groups=777(r1),503(tom)
[[email protected] scripts]# id r2
uid=788(r2) gid=788(r2) groups=788(r2),503(tom)
[[email protected] scripts]# id r3
uid=799(r3) gid=799(r3) groups=799(r3),789(carol)

10.要求根据userlist创建用户,要求指定用户名,用户id,用户的默认组和附加组及变更用户u密码,若对应用户的附加组不存在,则将附加组创建出来后再根据要求添加用户。
[[email protected] ~]# cat /tmp/useraddlist1
dabao 888 xuexi,it uplooking
lucy 889 sales,it uplooking
lily 899 pro,aa uplooking
#!/bin/bash
#根据/tmp/userlist1文件来创建用户,设置uid,附加组,密码
#附加组的格式位 t1,t2
#dabao 2016.01.14
while read username uid group passwd
do
    for i in $(echo ${group} | tr "," " ")
    do
        if [ ${i} = $(cut -d":" -f1 /etc/group|grep ${i} ) ];then
            echo "${i}已存在;";else
               echo "${i}不存在,需要执行新建用户组操作"
            groupadd ${i}
    done

        useradd ${username} -u ${uid} -g ${group%,*} -G ${group}
        echo ${passwd} | passwd --stdin ${username}

done < /tmp/useraddlist1

不需要判定组是否存在

#!/bin/bash
#根据/tmp/userlist1文件来创建用户,设置uid,附加组,密码
#附加组的格式位 t1,t2
#dabao 2016.01.14
while read username uid group passwd
do
    for i in $(echo ${group} | tr "," " ")
    do
            groupadd ${i}
    done

        useradd ${username} -u ${uid} -g ${group%,*} -G ${group}
        echo ${passwd} | passwd --stdin ${username}

done < /tmp/useraddlist1

11.case
#!/bin/bash
#case
#dabao 2016.01.14
echo "input a : ls -a /tmp/"
echo "input l : ls -l /tmp/"
echo "input end":end this program
until [ ${str} = end ]
do
        read -p "input string:" str
        case $str in
        a)
                ls -a /tmp/ ;;
        l)
                ls -l /tmp/ ;;
        *)
                echo "input a : ls -a /tmp/"
                echo "input l : ls -l /tmp/"
                echo "input end":end this program

        esac
done

12.要求输出100以下所有能够被7整除,但不能够被5整除的数字。
#!/bin/bash
#输出100以下所有能够被7整除,但不能够被5整除的数字。
#dabao 2016.01.14
for i in {1..100}
do
        if [ $(($i%7)) = 0 ] && [ $(($i%5)) != 0 ]
        then
                echo "$i"
        else
                continue
        fi
done
~
13.位置参数,判断文件是否存在
#!/bin/bash

while [ $# -gt 0 ]
do
        if [ -e $1 ]
        then
                echo "$1 exits"
        else
                echo "$1 not exits"
        fi
shift
done
[[email protected] scripts]# bash weizhi1.sh /bin /etc /sbin /home /lll /tmp
/bin exits
/etc exits
/sbin exits
/home exits
/lll not exits
/tmp exits

14.函数返回值
#!/bin/bash

LOVE_SHELL ()
{
        case $1 in
        yes)    return 0;;
        no)     return 1;;
        *)      return 1;;
        esac
}
#for i in {1..99}
#do
read -p "Do you like shell? yes or no:" str
if LOVE_SHELL "${str}"
then
        echo "Yes, I like shell!"
else
        echo "No, I don‘t like shell!"
fi
#done

15.执行如下命令,达到如下效果
[[email protected] scripts]# bash hs.sh -t 9
        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
*****************
[[email protected] scripts]# bash hs.sh -l 4
 ^
  ^
   ^
    ^

[[email protected] scripts]# cat hs.sh
#!/bin/bash
#输入-t 5 代表画三角形5行
#    -l 7 代表的是画斜线7行
#dabao 2016.01.18

#定义函数XX()画斜线
XX ()
{
for i in $(seq 1 $2)
do
        for x in $(seq 1 $i)
        do
                echo -n " "
        done
echo -n "^"
echo
done

}
#定义函数SJX()三角形
SJX ()
{
for i in $(seq 1 $2)
do
        for x in $(seq 1 $(($2-${i})))
        do
                echo -n " "
        done
        for t in $(seq 1 $((1+($i-1)*2)))
        do
                echo -n "*"

        done
echo
done

}

case $1 in
-t)    SJX "$1" "$2";;
-l)    XX "$1" "$2";;
*)    echo "提示符输入错误,位置参数第一位请输入-t或者-l,位置参数第二位请输入数字!"
esac

16.取出num.list每一行最大的数字。
[[email protected] tmp]# cat num.list
1 4 3 2
10 7 8 9
11 99 23 16
 [[email protected] scripts]# bash a2.sh
4
10
99
[[email protected] scripts]# cat a2.sh
#!/bin/bash
#取出num.list文件中每一行最大的数字

while read LINE
do
    p=0
    A=($LINE)
    for i in $(seq 0 3)
    do
        if [ ${A[i]} -gt $p ]
        then
            p=${A[i]}

        else
            p=$p

        fi
    done
    echo $p
done < /tmp/num.list
17.位置参数添加用户
[[email protected] scripts]# cat useradd.sh
#!/bin/bash
#useradd.sh /tmp/kk
if [ $# -eq 0 ]
then
    echo "Usage:/tmp/kk"
    exit
elif [ $1 != /tmp/kk ]
then
    echo "File error!"
    exit
elif [ ! -f $1 ]
then
    echo "File not exist."
    exit
else

    while read user
    do
    useradd -s /bin/false $user
    echo user | passwd --stdin $user
    done < /tmp/kk
fi
18.针对/usr/share/dict/words文件做过滤
1)列出文件中包含 先有字母t,然后中间有一个元音字母,之后是sh的单词;
grep ‘^t[a-zA-Z]sh‘ /usr/share/dict/words
2)列出文件中包含 先有字母t,然后中间有若干个元音字母,之后是sh的单词;
grep ‘^t[a-zA-Z]\+sh‘ /usr/share/dict/words
3)列出文件中刚好包含16个字母的单词。
grep -E ‘^[a-zA-Z0-9]{16}$‘ /usr/share/dict/words
grep ‘^[a-zA-Z0-9]\{16\}$‘ /usr/share/dict/words

19.将/etc/fstab文件复制到/tmp目录,针对/tmp/fstab文件做操作:
1)打印1-3行
[[email protected] ~]# sed -n ‘1,3p‘ /tmp/fstab 

2)打印该文件第4行到最后一行
[[email protected] ~]# sed -n ‘4,$p‘ /tmp/fstab

3)将包含mapper字符串的行删除
[[email protected] ~]# sed -i ‘/mapper/d‘ /tmp/fstab

4)将/etc/hosts文件的内容追加到文件的第3行后和最后一行后面
sed -i ‘3r /etc/hosts‘ /tmp/fstab
sed -i ‘$r /etc/hosts‘ /tmp/fstab
[[email protected] ~]# sed -i -e ‘$r /etc/hosts‘ -e ‘3r /etc/hosts‘ /tmp/fstab

5)将文件行首的#号代替成空格
[[email protected] ~]# sed -i ‘s*^#* *g‘ /tmp/fstab

取服务器公共目录下下载/content/ule/shellscripts/text.txt文件,针对以下做操作:3
1)将包含kevin或Kevin字符串的行打印出来
[[email protected] ~]# sed -n ‘/[kK]evin/p‘ /tmp/test.txt

2)将该文件包含kevin字符串的行中,数字1替换成数字2,数字3替换成数字4
[[email protected] ~]# sed -i ‘/kevin/{s/1/2/;s/3/4/}‘ /tmp/test.txt

3)将给文件的1-3行删除,并把mandy字符串替换成hellomandy
[[email protected] ~]# sed -i -e ‘1,3d‘ -e ‘s/mandy/hellomandy/g‘ /tmp/test.txt
[[email protected] ~]# sed -i -e ‘1,3d‘ -e ‘s/mandy/hello&/g‘ /tmp/test.txt

4) 在该文件kevin字符串的行上边添加hello行
[[email protected] ~]# sed -i ‘/kevin/ihello‘ /tmp/test.txt
20.将工资单进行统计,输出每个人的工资总和,并格式化输出。
[[email protected] ~]# cat pay.txt
Name 1st 2nd 3th
VBird 23000 24000 25000
DMTsai 21000 20000 23000
Bird2 43000 42000 4100
[[email protected] ~]#awk ‘NR==1{printf"%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"total"};NR>=2{total=$2+$3+$4;printf"%10s %10d %10d %10d %10.2f\n",$1,$2,$3,$4,total}‘ pay.txt
      Name        1st        2nd        3th      total
     VBird      23000      24000      25000   72000.00
    DMTsai      21000      20000      23000   64000.00
     Bird2      43000      42000       4100   89100.00
21.access.log 文件中,访问apche的时间在3点到4点之间访问最的ip地址
1.截取3-4点间的文件   grep ‘2016:0[34]:‘ /var/log/httpd/access_log
2.取第一段 ip        cut -d" " -f1 awk ‘{print $1}‘
3.输出每个ip的重复次数 uniq -c
4.从大到小排序    sort -n -r
4.取前3名 head -3
 grep ‘2016:0[34]:‘ /var/log/httpd/access_log | cut -d" " -f1|uniq -c |sort -n -r|head -3
22.检测输入的ip地址是否合法
时间: 2024-08-27 03:00:15

零基础学习云计算及大数据DBA集群架构师【Linux Bash Shell编程及系统自动化2015年1月20日周三】的相关文章

零基础学习云计算及大数据DBA集群架构师【Linux系统配置及网络配置2015年12月31日周四】

2015.12.31/Thu *************摘要************** 查看硬盘 df du 硬盘的操作 分区 fsdisk 格式化mkfs 检测 fsck 挂载 mount 卸载 umount 建立 swap 分割槽: 1. 分割:fdisk t 2. 格式化:mkswap 3. 使用:swapon 4. 观察:free df <==列出目前挂载的装置 dumpe2fs [-bh] 装置文件名 选顷不参数: -b :列出保留为坏轨癿部分(一般用丌到吧!?) -h :仅列出 s

零基础学习云计算及大数据DBA集群架构师【Linux系统环境及权限管理2015年12月24日周四】

1 2015.12.24/Thu 2 3 *************摘要************** 4 ACL主机的细部权限规划 ACL getfacl setfacl 5 attr文件与目录的隐藏属性 attr lsattr chattr 6 文件系统 P196 ext2/3/4 xfs 7 目录树 8 软硬连结 ln 9 指令和文件的搜索 which whereis locate find /var/lib/mlocate/mlocate.db 10 11 ?如何查看软链接文件在磁盘上存放

零基础学习云计算及大数据DBA集群架构师【企业级运维技术及实践项目2015年1月27日周三】

Nginx 基于 ip 的虚拟主机配置 { #serverb (1)/etc/nginx/conf.d/* [[email protected] conf.d]# vim ip.conf server { listen 192.168.1.88:80; root 88.com; index index.html; } server { listen 192.168.1.87:80; root 87.com; index index.html; } [[email protected] ~]# i

零基础学习云计算及大数据DBA集群架构师【Linux系统\网络服务及安全配置2015年1月8日周五】

考试考一天,得分94,最后一题防火墙当时还没搞明白 考题如下: 注意事项: 1.确保在重启主机后所有配置仍然生效. 2.selinux 必须为Enforing 模式,防火墙必须开始.默认策略必须清空. 3.设置主机名为stuXXX.com(“X”为你的foundation 机器ip 地址最后一位.例如:你的ip 地址为172.25.254.30,则你的主机名为stu30.com) 4.不允许ssh 登录到其他主机,已经发现按0 分计算考试得分. 5.考试满分为100 分制,70 分为及格,所有考

零基础学习云计算及大数据DBA集群架构师【预科2015年12月14日周一】

1.第一天比较轻松,上午填表格,录指纹,拍照片,做自我介绍. 2.下午老师简单介绍了一下PC\交换机\路由器\塔式服务器\机架式服务器(1U\2U)\刀片服务器\磁带机 3.班主任陈老师朱老师,预科秦老师Techer ChenTecher Zhu 15000592742Techer Qing long 4.打开电脑,安装redhat7Terminal biger/smaller/new oneCtrl+Shift+[+] 放大 Ctrl+[-] 缩小ctrl+Shift+T 新建 下午5点就放学

云计算及云数据库集群架构师

行动成就梦想 课程 课程提要 课程模块 上课要求 Linux部分课程 ULE-Linux基础部分 Linux系统环境及权限管理 LINUX初级与高级 Linux系统配置及网络配置 Linux系统.网络服务及安全配置 Shell部分 Linux Bash Shell编程及系统自动化 Mysql部分 Mysql数据库管理及 高并发数据库读写分离项目 ULE项目部分 企业级运维技术及实践项目 ULA-高级部分 Linux系统高级安全及入侵恢复 Linux系统性能分析及调优 Linux高级存储.共享存储

教你零基础如何快速入门大数据技巧

现在是大数据时代,很多人都想要学习大数据,因为不管是就业前景还是薪资都非常的不错,不少人纷纷从其他行业转型到大数据行业,那么零基础的人也想要学习大数据怎么办呢?下面一起探讨下零基础如何快速入门大数据技巧吧. 很多人都需要学习大数据是需要有一定的基础的,编程语言就是必备的条件之一,编程语言目前热门的有:Java.Python.PHP.C/C++等等,无论是学习哪一门编程语言,总之要精细掌握一门语言是非常必须的,我们先拿应用广泛的Java说起哦. .在入门学习大数据的过程当中有遇见学习,行业,缺乏系

我JAVA几乎零基础,可以学好大数据吗?

java与大数据的关系你应该明确一下.学习大数据一般要先学java,但并不代表要将java的所有内容都学习,只要学习与大数据相关的知识点就可以.下面是关于学习大数据的一些知识点,你可以大致了解一下,希望对你有所帮助.学习大数据的两大基础就是JAVA和Linux,学习顺序不分前后.需要同时掌握,才可以继续大数据课程的学习.Java:大家都知道Java的方向有JavaSE.JavaEE.JavaME,学习大数据要学习那个方向呢?只需要学习Java的标准版JavaSE就可以了,像Servlet.JSP

零基础如何快速学好大数据?

大数据技术及应用已经成为互联网+时代发展的最大的趋.这也使得很多人纷纷选择学习大数据,在时代发展的潮流中获得属于自己的一份天地.大数据技术体系庞大,包括的知识较多,系统的学习大数据可以让你全面掌握大数据技能. 一.在开始学习大数据前应该掌握哪些基础知识 怎样进行大数据学习的快速入门?需要什么基础 1.Java语言基础 学大数据课程之前要先学习一种计算机编程语言.Java是大数据学习必要的编程语言基础.因为大数据的开发基于Java语言,而且不论是学习hadoop,还是数据分析与挖掘,都需要有编程语