第十周练习-脚本部分

1、写一个脚本

(1) 能接受四个参数:start, stop, restart, status

start: 输出“starting 脚本名 finished.”

(2) 其它任意参数,均报错退出;

#!/bin/bash
#
case $1 in
start)
    echo "starting $0 finished"
    ;;
stop)
    echo "stopping $0 finished"
    ;;
restart)
    echo "restarting $0 finished"
    ;;
status)
    echo "status $0 finished"
    ;;
*)
    echo "Usage:$(basename $0){start|stop|restart|status}"
    exit 1
    ;;
esac

2、写一个脚本,判断给定的用户是否登录了当前系统;

(1) 如果登录了,则显示用户登录,脚本终止;

(2) 每3秒钟,查看一次用户是否登录;

#!/bin/bash
#
method() {
    status=$(who | grep $1)
    if [[ -n "$status" ]];then
        touch /tmp/online
    fi
}
while true;do
    method $1 && sleep 3
    if [ -f /tmp/online ];then
        echo "$1 is online"
    else
        echo "$1 isn't online"
    fi
    rm -f /tmp/online
done

3、写一个脚本,显示用户选定要查看的信息;  cpu) display cpu info  mem) display memory info  disk) display disk info  quit) quit  非此四项选择,则提示错误,并要求用户重新选择,只到其给出正确的选择为止;

#!/bin/bash
#
cat <<EOF
    输入mem>display memory info
    输入disk>display disk info
    按Q>退出
EOF
read -p ‘请按对应的字母键,否则五秒后自动退出’ -t 5 name
if [[ "$name" == "Q" ]];then
    echo "您选择退出";
    exit 1
elif [[ "$name" == "cpu" ]];then
    cat /proc/cpuinfo
elif [[ "$name" == "mem" ]];then
    df -lh
elif [[ "$name" == "disk" ]];then
    fdisk -l
else
    echo "您输入有误,请重新选择"
    bash $0
fi

4、写一个脚本

(1) 用函数实现返回一个用户的UID和SHELL;用户名通过参数传递而来;

(2) 提示用户输入一个用户名或输入“quit”退出;

当输入的是用户名,则调用函数显示用户信息;

当用户输入quit,则退出脚本;进一步地:显示键入的用户相关信息后,再次提醒输出用户名或quit:

#!/bin/bash
#
doing() {
    read -p "请输入用户名或quit退出" name
    if [[ "$name" == "quit" ]];then
        exit 0
    else
        userinfo $name
    fi
}
userinfo() {
    id $1 &> /dev/null
    if [ $? -eq 0 ];then
        grep -E ^$1 /etc/passwd | awk -F: '{print $3,$NF}'
        doing
    else
        echo "user not exist"
        exit
    fi
}
doing

5、写一个脚本,完成如下功能(使用函数)

(1) 提示用户输入一个可执行命令的名字;获取此命令依赖的所有库文件;

(2) 复制命令文件至/mnt/sysroot目录下的对应的rootfs的路径上,例如,如果复制的文件原路径是/usr/bin/useradd,则复制到/mnt/sysroot/usr/bin/目录中;

(3) 复制此命令依赖的各库文件至/mnt/sysroot目录下的对应的rootfs的路径上;规则同上面命令相关的要求;

#!/bin/bash
#
doing() {
    mkdir -p /mnt/sysroot
    read -p "请输入一个可执行命令" name
    which $name &> /dev/null
    if [ $? -eq 0 ];then
        path=$(which $name)
        ldd $path
        echo "==========开始复制命令文件=========="
        new_command_path=$(echo ${path%/*})/
        cp -r $path /mnt/sysroot/$new_command_path &> /dev/null
        echo "==========复制命令文件完毕=========="
        echo "==========开始复制命令依赖的库文件=========="
        mkdir -p /mnt/sysroot/$new_command_path/$name-lib
    for i in $(ldd $path);do
        cp $i /mnt/sysroot/$new_command_path/$name-lib &> /dev/null
    done
        echo "==========复制命令依赖的库文件完毕=========="
    else
        echo "the command not found"
        exit 1
    fi
}
doing

原创文章,作者:N24_涩味,如若转载,请注明出处:http://www.178linux.com/65454

(0)
N24_涩味N24_涩味
上一篇 2016-12-31 21:03
下一篇 2016-12-31 21:25

相关推荐

  • 第二周作业

    一、文件管理命令以及演示方法  1.1. mkdir命令     作用:创建文件夹     基本用法:mkdir [OPTION]… DIRECTORY…     参数:   &nbsp…

    Linux干货 2016-08-22
  • 磁盘管理

    磁盘管理磁盘管理 本章内容 磁盘结构 分区类型 管理分区 管理文件系统 挂载设备 管理虚拟内存 设备文件 I/O Ports: I/O设备地址 一切皆文件: open(), read(), write(), close() 设备类型: 块设备:block,存取单位“块”,磁盘 字符设备:char,存取单位“字符”,键盘 设备文件:关联至一…

    Linux干货 2016-08-26
  • 2016.08.04学习笔记

    文本管理工具     1.cat:查看文件,读取键盘输入         -A:查看文件所有信息         -n:显示行数   &nb…

    Linux干货 2016-08-08
  • 文件寻踪和文件压缩

    文件查找工具: 文件:根据文件的种属性去找到相应文件 文件查找工具:locate, find locate: 根据此前updatedb命令生成的数据库来完成文件查找查找速度很快非实时查找,结果不精确;模糊查找; 必要时,可手动执行updatedb命令; find命令:   通过遍历指定的目标目录,实时查找符合指定属性的文件; 精确匹配;速度略慢; …

    Linux干货 2016-08-19
  • 如何成为一名软件架构师

    Daniel Mohl是一名专业的软件工程师/架构师,他的兴趣包括理解各种复杂的编程语言、企业应用架构以及如何搭建业务与技术,他通晓F#、C#、CoffeeScript、JavaScript、Erlang、ASP.NET、MVC、WPF、WCF、Sliverlight、SQL Server等技术。有着多年的软件开发经验。 他经常会被一些有潜力和有前途的程序员…

    Linux干货 2016-03-22

评论列表(1条)

  • 马哥教育
    马哥教育 2017-01-04 16:20

    写的很好,下次可以把一次作业写在一个里面