1.将用户涉及到的两个配置文件(详细信息与密码) 合并成一个文件,然后排序去冗输出为 简拼-1.txt 。
#cat /proc/meminfo /proc/cpuinfo /proc/cpuinfo /proc/meminfo | sort | uniq > test2.txt
#less test2.txt
2. 将简拼-1.txt的文件内容再次追加写入 简拼-1.txt,然后将该文件的读写权限设置为 rw-rwxr-- , 并显示确认。
#cat jianpin.txt > tmp.txt
# cat tmp.txt >> jianpin.txt
# chmod 674 quhaiping.txt
$ $ll quhp //查看 文件 test 的权限 -rw-r--r--
3. 设置全局命令别名 简拼,其功能是 将当前系统所支持的所有文件系统的名字信息
重定向为 简拼-3.txt 。
查看系统支持的文件系统类型
#cd /lib/modules/2.6.35.6-45.fc14.i686/kernel/fs
# ls
# cd -
/root
查看proc 文件系统
#ls>jianpin-4.txt
4. 显示能够登录(bash)的所有用户的详细信息,保存到文件 简拼-4.txt 。
# cat /etc/passwd|cut -d':' -f1|grep o>jianpin-4.txt
#cut -d':' -f1 /etc/passwd 回车符分隔显示所有用户
#cut -d':' -f2 /etc/passwd
#cut -d':' -f4 /etc/passwd 显示不同的列
#cut -d':' -f1 /etc/passwd | xargs -n 1 finger > jianp_4.txt 显示所用用户
5.信息一条命令获取网卡eth8 (如HWaddr 00:0C:29:38:0C:5A) 的MAC地址(00:0C:29:38:0C:5A)。
问题: 需要获取当前机器的eth8 d IP(192.168.23.189) 并进一步获取Ip的网段前缀(192.168.23.)
#ifconfig
#ifconfig eth9
#ifconfig eth9 | grep "inet addr"
#ifconfig eth9 | grep "inet addr" | gawk '{print $2}'
#ifconfig eth9 | grep "inet addr" | gawk '{print $2}' | cut -c6-20
#ifconfig eth9 | grep "inet addr" | gawk '{print $2}' | cut -c6-16
5. 将命令wget 所属软件包中包含的所有文件信息保存为简拼-6.txt,并通过rpm 命令将其删除.。
rpm 包的删除
#rpm -e vim-X11(包名)
6. 设置变量name,其值为“名字全拼+系统的版本号”,并显示该变量的值。
变量的设置: 注意空格报错
# var1=“lang is $LANG”
# var2=‘lang is $LANG’ //注意区分
# echo $var1
# echo $var2
7. 从设备zero 拷贝1G数据到设备null(bs=4M),并将记录时间保存到文件 简拼-8.txt 。
采用dd 命令测试并记录 sdb1 分区的读写性能 分别读写2G
# fdisk /dev/sdb
m for help p for print n for add w for save
输入n 回车; 输入p 回车 选择primary ; 输入1 回车 确认 分区号 ; 输入 起始位置,直接回车; 输入分区大小 +3068M 回车;
输入p 回车确认创建成功; 输入w 回车 将磁盘信息写回
# time dd if=/dev/sdb1 of=/dev/null bs=1M count=2048
记录分区读测试所得时间为 time_read_dd = ?
if = input file
of = output file
bs = block size
count 数量
# time dd if=/dev/zero of=/dev/sdb1 bs=1M count=2048
记录分区写测试所得时间为 time_write_dd = ?
二、磁盘与文件系统(15分)。
1. 在磁盘sdb,划分一个1G的普通分区sdb1,再划分一个3G的swap分区sdb2,在退出之前显示两个分区信息并截屏保存为 2-简拼-1.png ,下面步骤依次截图保存;
在sdb上创建一个1G的分区 sdb1
# fdisk /dev/sdb
m for help p for print n for add w for save
输入n 回车; 输入p 回车 选择primary ; 输入1 回车 确认 分区号 ; 输入 起始位置,直接回车; 输入分区大小 +3068M 回车;
输入p 回车确认创建成功; 输入w 回车 将磁盘信息写回
创建swap设备
#fdisk /dev/sdb
n p 1 +3068M //创建sdb1
t 修改系统ID
1
82 改成swap的ID //从linux分区切换成swap设备
w
#partprobe //让内核更新分区表
#mkswap /dev/sdb1 构建swap格式
挂载上
# free
#swapon /dev/sdb1
#free
#swapon –s 列出目前使用的swap设备有哪些?
2. 将所有磁盘与分区的详细信息 重定向保存为 文件 2-简拼.txt ;
显示 sda sdb 两块磁盘的详细信息
# fdisk –l >zhuj.txt
3对分区sdb1 做ext4文件系统,并挂载到目录/mnt, 显示当前挂载分区的大小与类型,并追加写到2-简拼.txt
把分区sdb1 格式化成ext3 文件系统
# mkfs -t ext3 /dev/sdb1
把分区挂载到指定目录下
# mkdir –p /mnt/name
# mount /dev/sdb1 /mnt/name
查看新挂载的分区 ,注意其大小变化, 因为其格式化文件系统占用了一些磁盘空间
# cd /mnt/name
# df –h
# df –h >zhuj.txt
cat zhuj.txt
# df -aT 比较这两个参数的区别
# mount
5. 在 / 目录 也就是 sda 上进行 下面操作
# df -aTh 确认 / 目录在 挂载在 sda 磁盘上
# mkdir -p /mnt/name
# mkdir -p /mnt/name/test_sda
# cp /pro/cpuinfo /mnt/name/cpu_sda
# dd if=/dev/zero of=/mnt/name/test_sda/256M bs=1M count=256
# ll /mnt/name 查看这个目录的文件与子目录
# df -h /mnt/name 显示的是 sda磁盘的可用容量
# du -ah /mnt/name 显示的是 这个目录及子目录的大小 256M左右
4. 将分区sdb2添加成swap设备, 列出当前swap设备,追加保存到 2-简拼.txt ;
创建swap设备
#fdisk /dev/sdb
n p 1 +3068M //创建sdb1
t 修改系统ID
1
82 改成swap的ID //从linux分区切换成swap设备
w
#partprobe //让内核更新分区表
#mkswap /dev/sdb1 构建swap格式
挂载上
# free
#swapon /dev/sdb1
#free
#swapon –s 列出目前使用的swap设备有哪些?
5.查看当前swap设备的使用情况,追加保存到 2-简拼.txt 。
三、Shell编程(15分)。
1. 实现shell脚本 3_全拼.sh,功能为一个简单的四则计算器,功能如下:
1) 循环交互式要求输入三个变量 num1 oper num2 其中oper 可以为 + - * /
2) 循环的终止条件是当且仅当 这两个数值 均为 0 输出END。
3) 根据oper分别完成运算 如 2 + 3 则输出 2+3 =5 ; 再继续要求输入三个变量,再如 3 * 4 则输出 3 * 4 = 12; 如果oper 不属于这四种运算符则输出 Wrong Oper 之后继续要求输入。
2. 运行脚本, 依次计算四次 10+学号 学号-学号 学号#学号 0+0 。
3. 将这脚本的运行过程依次截图保存为3-简拼-?.png 。
vim
a
chmod + x 1.sh
./1.sh
shell脚本代码如下:
#!/bin/bash
read -p "input num1:" a
read -p "input num2:" b
read -p "input operator:" o
case $o in
+) let "res=a + b"
echo $res;;
-) let "res=a - b"
echo $res;;
/) awk 'BEGIN{printf "%.2f\n",'$a'/'$b'}';;
*) let "res=a * b"
echo $res;;
esac
exit 0
唐:
#!/bin/bash
read -p "please input num1 " num1
read -p "please input flag " flag
read -p " please input num2 " num2
case $flag in
'+')
echo "$num1 $flag $num2=$(($num1+$num2))"
;;
'-')
echo "$num1 $flag $num2=$(($num1-$num2))"
;;
'/')
echo "$num1 $flag $num2=$(($num1/$num2))"
;;
*)
echo "$num1 $flag $num2=$(($num1*$num2))"
;;
esac
exit 0
四、批量用户添加与删除(22分)。
1. 实现shell脚本 4_学号.sh, 功能如下:
1)脚本不需要配置文件,也不会生成任何配置文件;
2)命令行输入四个参数:前缀 位数 开始序号 终止序号 ;
3) 利用这四个参数构建循环;
4) 在循环中采用 useradd批量添加用户,使用passwd 命令确定用户密码与用户名相同 。
2. 运行脚本 交互时输入 前缀=全拼 位数=5 开始序号=98 终止序号=102 ,将脚本的运行情况截图保存为 4-简拼-1.png 。
3. 确认用户添加成功,复制passwd 到工作目录 passwd_add.txt作为验证。
4. 一个复杂命令删除刚刚创建成功的这些用户,将命令的运行情况截图保存为 4-简拼-2.png
5. 确认用户删除成功,复制passwd 到工作目录 passwd_del.txt作为验证。
#!/bin/bash
accountfile="user:passwd"
if [ -f "$accountfile" ]; then
mkdir –p "$accountfile"`date +%Y%m%d`
mv $accountfile "$accountfile"`date +%Y%m%d`
fi
touch "$accountfile"
read -p "qianzhui: " username_start
read -p "weishu: " nu_nu
read -p "star num: " nu_start
read -p "shuliang: " nu_amount
nu_end=$(($nu_start+$nu_amount-1))
for (( i=$nu_start; i<=$nu_end; i++ ))
do
nu_len=${#i}
nu_diff=$(($nu_nu-$nu_len))
if [ "$nu_diff" != "0" ]; then
nu_nn=00000000000
nu_nn=${nu_nn:1:$nu_diff}
fi
account="$username_start""$nu_nn""$i"
echo "$account":"$account" >> $accountfile
done
cat "$accountfile" | cut -d':' -f1 | xargs -n 1 useradd
pwunconv
chpasswd < "$accountfile"
pwconv
echo "OK"
exit 0
#cat /etc/passwd 确认
#cut -d':' -f1 user:passwd | xargs -n 1 userdel -r
#cat /etc/passwd 确认四个用户已成功删除
用户的批量添加
************第一种方法有配置文件
采用 newusers 批量创建用户
.1 #groupadd -g 800 linux2012
.2 #gvim student.txt
t001001:x:801:800::/home/t001001:/bin/bash
t001002:x:802:800::/home/t001002:/bin/bash
t001003:x:803:800::/home/t001003:/bin/bash
t001004:x:804:800::/home/t001004:/bin/bash
.3 #gvim passwd.txt
t001001:t001001
t001002:123456
t001003:123456
t001004:123456
.4 #newusers < student.txt
.5 #pwunconv
#chpasswd < passwd.txt
#pwconv
.6 #cat /etc/passwd
#cat /etc/shadow 确认四个用户已成功创建
****************第二种方法无配置文件
7 利用 useradd 与 passwd --stdin 批量创建用户脚本
7.1 #gvim account1.sh
#!/bin/bash
if [ ! -f "$1" ]; then
echo "$1 no exist!"
exit 1
fi
usernames=`cat $1`
for username in $usernames
do
useradd $username
echo $username | passwd --stdin $username
done
exit 0
7.2 #gvim std.txt
std001
std002
std003
std004
7.3 #chmod +x *.sh
#./account1.sh std.txt 成功创建std001-004, 可去 /etc/passwd 确认
#./account1.sh std.txt2 报告 该文件不存在
#./account1.sh
7.4 #gvim delaccount1.sh
#!/bin/bash
if [ ! -f "$1" ]; then
echo "$1 no exist!"
exit 1
fi
usernames=`cat $1`
for username in $usernames
do
echo "$username will be deleted!"
userdel -r $username
done
exit 0
7.5 #chmod +x *.sh
#./delaccount1.sh std.txt 将这四个用户删除
***********************第三种方法
只需要输入 四个产生 前缀、位数、首位、数量 就可以批量创建
#gvim account2.sh
#!/bin/bash
accountfile="user:passwd"
if [ -f "$accountfile" ]; then
mv $accountfile "$accountfile"`date +%Y%m%d`
fi
touch "$accountfile"
read -p "qianzhui: " username_start
read -p "weishu: " nu_nu
read -p "star num: " nu_start
read -p "shuliang: " nu_amount
nu_end=$(($nu_start+$nu_amount-1))
for (( i=$nu_start; i<=$nu_end; i++ ))
do
nu_len=${#i}
nu_diff=$(($nu_nu-$nu_len))
if [ "$nu_diff" != "0" ]; then
nu_nn=00000000000
nu_nn=${nu_nn:1:$nu_diff}
fi
account="$username_start""$nu_nn""$i"
echo "$account":"$account" >> $accountfile
done
cat "$accountfile" | cut -d':' -f1 | xargs -n 1 useradd
pwunconv
chpasswd < "$accountfile"
pwconv
echo "OK"
exit 0
转载于:https://www.cnblogs.com/zhuhengjie/p/5966921.html