第十周练习-脚本部分

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
下一篇 2016-12-31

相关推荐

  • 用户管理简述

    组内用户管理汇总 基于组来管理用户 相关命令:gpasswd groupmems 添加用户 gpasswd -a wangcai group :向group里添加用户 wangcai gpasswd -M wangcai,xiaoqiang group :向group里批量添加xiaoqiang wangcai ,不过这个方式会覆盖之前的组员 groupme…

    2017-02-23
  • 第六周小练习

    详细总结vim编辑器的使用并完成一下练习 vim编辑器的基本使用 vim模式: 1、编辑模式(命令模式) 2、输入模式 3、末行模式  一、打开文件 vim /path/to/somefile 打开单个文件 如果文件存在为打开,否则保存退出时为新建 vim /path/to/somefile vim +# : 打开文件…

    Linux干货 2016-12-19
  • Redis高可用架构(1)—Keepalive+VIP

    最近整理一下Redis高可用架构的文档,也准备分享出来,虽然这些架构也不是很复杂。Redis的高可用方案目前主要尝试过5种方式,其中2种方式已经在线上使用。 1)Redis Master-Slave + Keepalive + VIP。这是很经典的db架构,也可以用与mysql的主从切换。基本原理是:Keepalive通过脚本检测master的存活,然后通过…

    Linux干货 2016-04-13
  • 马哥教育网络班21期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 集线器 集线器也称HUB,工作在OSI七层结构的第一层物理层,属于共享型设备,接收数据广播发出,在局域网内一般都是星型连接拓扑结构,每台工作站都连接到集线器上。 由于集线器的带宽共享特性导致网络利用效率极低,一般在大中型的网络中不会使用到集线器。 网桥 网桥(Bridge)也称桥…

    Linux干货 2016-09-01
  • Linux部分命令及使用

    Linux部分命令解释及使用 ASCII 信息交换码  GB2312 big5 UTF-8 字符集 乱码问题 生产环境中最常见故障  字符集格式设置不一致 查看系统版本  cat /etc/redhat-release  $() “&nb…

    2017-04-09
  • NFS(Network File System)介绍与应用(双httpd + php-fpm + nfs + mysql 搭建discuz论坛)

    NFS相关介绍 一、NFS简介     1. NFS(Network File System): NFS是一个文件共享协议, 也是是在类Unix系统中在内核中实现的文件系统。      2. 起源: 最早是由SUN公司研发,非常古老,只是实现文件共享,安全控制方面比较简…

    Linux干货 2015-07-21

评论列表(1条)

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

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