第1章 选择
1.1 退出交互模式的 shell,应键入()
A: B:^q C:exit D:quit
1.2 下列变量名中有效的 shell 变量名是:C
-2-time _2$3 trust_no_1 2004file
1.3 在 shell 编程中关于$2 的描述正确的是 B
程序后携带了两个位数参数
宏替换
程序后面携带的第二个位置参数
携带位置参数的个数
1.4 在 shell 环境下想把‘gyyx’值赋给变量 company,下面哪个是正确的:
company = gyyx
$company=gyyx
company=‘gyyx’
company=gyyx
1.5 下面表述错误的是
n 表示程序的第 n 个参数值 $* 表示程序的所有参数个数 $$表示程序的 PID
1.6 shell 脚本中的注释符
// /**/ " " #
1.7 采用 bash 执行 shell 脚本时加上哪个参数可以跟踪执行脚本过程
-x -u -f -p
1.8 在 shell 比较运算符中,数值测试“等于则为真”的是()
-ne -ge -eq -le
第2章 填空
2.1 在 shell 编程中,如果要访问变量值,可以变量前加一个—$—符号
2.2 请说出以下符号在 bash shell 中的意义
n
?
{#aa}
2
2.3 编写 shell 程序之前必须赋予该脚本_____
2.4 Linux 系统 shell 脚本第一行需写______代表什么意义_____
第3章 简答
3.1 写一个脚本实现判断 192.168.1.0/24 网络里,当前在线的 ip 有哪些,能 ping 通则认为在线
3.2 在 shell 中变量的赋值有四种方法,其中采用 name=jfedu.net 的方法称:
3.3 检查 IP 地址合规,请用 shell 编写代码,列出不以 199 或 200 开头的 IP 地址,如 199.x.x.x 或
200.x.x.x
Eth1/0/1 up up 199.11.250.1
Eth1/0/2 up up 200.11.250.5
Loop0 up up(s) 199.11.250.1
Vlan1 *down down unassigned
Vlan500 down down 139.100.1.157
Vlan900 up up 140.11.250.41
egrep -o '[0-9.]{7,15}' 1.txt |egrep -v '^199|^200'
3.4 通过 shell 如何删除文档中的注释和空白行。
3.5 如果在/home/pushmail 目录下不存在 leadtone 目录,则创建该目录,并将/var/sync/bin 目录下
的所有文件拷贝到 leadtone 目承下,但是不能够拷贝文件大于 1M 的文件。
3.6 写一个脚本,实现批量添加 20 个用户,用户名为 user01-20,密码 user 后面跟 5 个随机字符
3.7 对文件 test 中,
aaa 123.52
bbb 125.54
aaa 123.52
aaa 123.52
ccc 126.36
1>第一列为 aaa 的行求和;
2>对偶数行求和;
3>求文件 test 中的最大值
3
3.8 shell 脚本编程:显示 100 以内的质数
3.9 判断数字大于 500 则执行 big.sh 小于等于 500 则退出脚本,并输出报错信息
3.10 脚本测试 test.txt 文件,打印出每一列的累加值
1 2 3
4 5 6
7 8 9
3.11 试编写一个 Shell 程序,该程序能接收用户从键盘输入的 100 个整数,然后求出其总和、最大
值及最小值
$HOME $PWD $PS1 $PS2
Fold join tr read
A:& B:@ C:# D:$
A:管道 B:输入输出重定向 C:执行后台进程 D:处理程序命令
A: B:^q C:exit D:quit
bash ruby PHP perl
Read pread write pwrite fseek lseek
-2-time _2$3 trust_no_1 2004file
为变量赋值:$FRUTT=apple 显示变量的值:fruit=apple
显示变量的值:echo F R U T T 判 断 变 量 是 否 有 值 : [ − f − − FRUTT 判断变量是否有值:[ -f -- FRUTT判断变量是否有值:[−f−−FRUTT || ]
程序后携带了两个位数参数 宏替换
程序后面携带的第二个位置参数 携带位置参数的个数
company = gyyx $company=gyyx company=‘gyyx’ company=gyyx
sed -e ‘/man/d’ filename sed -e ‘1,3d’ filename sed -e ‘1,/man/d’ filename sed -e ‘/man/3d’ filename
$0表示程序的执行名字 $n 表示程序的第n个参数值
$* 表示程序的所有参数个数 $$表示程序的PID
for filename in $(ls) do cat $filename done
for((i=0;i<10;i++)) do echo $i done
x=1 sum=0 while [ x − l e 10 ] d o l e t s u m = s u m + x -le 10 ] do let sum=sum+ x−le10]doletsum=sum+x let x=x+1 done echo $sum
for $i in 1 2 3 4 5 do echo $i done
Fold join tr read
break continue exit kill
-x -u -f -p
var1=abcdedf
var2=abcded
echo “ v a r 1 ” ∣ g r e p − q “ var1” |grep -q “ var1”∣grep−q“var2” && echo “yes” ||echo “no”
无结果 语法错误 yes no
-ne -ge -eq -le
$0 $n $# $? $* $$ ${#aa}
IP_Address MAC_Address Interface Static
10.66.10.250 80:71:7A:33:CA:A7 br on
10.66.10.249 5C:50:15:7F:3B:F5 br on
将以上文件名称test.txt文件中IP_Address,MAC_Address, Interface三项下的内容取出来,值以“:”分割,并呈格式显示出来。注:
10.66.10.250:80:71:7A:33:CA:A7:br
10.66.10.249:5C:50:15:7F:3B:F5:br
直接复制 使用read命令 使用命令行传参 使用命令输出
要求:同一个IP暴力破解超过10次,自动屏蔽IP地址,指定办公室IP地址(192.168.100.100)为可信任IP地址,不受屏蔽规则限制,以下为日志格式:
日志样式:
May 4 03:43:07 tz-monitor sshd{14003}: Failed password for root from 124.232.135.84 port 25251 ssh2
Myy 4 03:43:07 tz-monitor sshd{14082}: invalid user postgres from 124.232.135.84
ofpf 100
route-id 139.11.0.1
area 0.0.0.0
network 139.11.0.1 0.0.0.0
network 140.11.0.0 0.0.0.3
network 140.11.0.8 0.0.0.3
network 140.11.0.16 0.0.0.3
network 140.11.0.24 0.0.0.3
network 140.11.0.32 0.0.0.3
interface LoopBack0
ip address 139.11.0.1 255.255.255.255
Interface Physical Protocol IP Adderss
Eth1/0/1 up up 199.11.250.1
Eth1/0/2 up up 200.11.250.5
Loop0 up up(s) 199.11.250.1
Vlan1 *down down unassigned
Vlan500 down down 139.100.1.157
Vlan900 up up 140.11.250.41
http://www.baidu.com/index.html
http://www.baidu.com/1.html
http://post.baidu.com/index.html
http://mp3.baidu.com/index.html
http://www.baidu.com/3.html
http://post.baidu.com/2.html
得到如下结果:
域名的出现次数 域名
3 www.baidu.com
2 post.baidu.com
1 mp3.baidu.com
可以使用bash/per/php任意一种
def f(x,1=[]);
for i in range(x);
1.append(i*i)
print 1
f(2)
f(3,[3,2,1])
f(3)
36.110.86.173 - - [30/Otc2017:09:38:30 +0800] “POST /index.php?r=tuiguang%2Fdelete HTTP/1.1” 200 385 0.036 “http://backend.lepu.cn/index.php?r=tuiguang%2Findex&id=535634“ “Mozilla/5.0 (windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Fecko) Chrome/55.0.2883.87 Safari/537.36” “0.68”
全天PV: 全天UV: PV前十:
UV前十: 499前三: 500前三: 502前三:
(1) 第一个参数为URL,即可下载的文件;第二个参数为目录,即下载后保存位置;
(2) 如果用户给的目录不存在,则提示用户是否创建;如果创建就继续执行,否则函数返回一个51的错误值给调用脚本
(3) 如果给的目录存在,则下载文件;下载命令执行结束后测试文件下载成功,如果成功,则返回0给调用脚本,否则,返回52给调用脚本;
第一行为序列长度n(1≤ n≤ 50)
第二行为n个数scqucencel,以空格分隔
输出描述
输出消除重复元素之后的序列,以空格分隔,行末无空格
输入例子
100 100 100 99 99 99 100 100 100
输出例子
99 100
class Queue(objec ):
defenqueue(self,item):
“’’”“入队”"""
defdequcue(self):
“”"“出队”""
测试
q = Queue()
9 enqucue (1)
输出q [1]
q.enqueue(4)
输出q [1,4]
q.dequeue()
输出14
aa,101
bb,302
cc,222
dd,44
a.显示当前目录的内容
b.以详细格式显示test用户的家目录内容,包含隐藏文件
c.进入根目录
d.显示/etc/passwd文本文件的内容
e.显示/etc/passwd文件的后十行内容
cat /etc/fstab
UUID=94e4e384-Oace-437f-bc96-057dd64f42ee / ext4 defaults.barrier=0 1 1
tmpfs /dev/shm tmpfs defults 0 0
列出如下菜单给用户
disk) show disks info;
mem) show memory info;
cpu) show cpu info;
*) quit;
提示用户给出自己的选择,而后显示对应其选择的相应系统信息
n=1
while [ $n -lt 1000 ]
do
cd /root/perl_test/testdir
touch sn.txt
n=`expr $n + 1`
done
如果在/home/pushmail目录下不存在leadtone目录,则创建该目录,并将/var/sync/bin目录下的所有文件拷贝到leadtone目承下,但是不能够拷贝文件长度大于1M的文件。
a.显示当前目录的内容
b.以详细格式显示test用户的家目录内容,包含隐藏文件
c.进入根目录
d.显示/etc/passwd文本文件的内容
e.显示/etc/passwd文件的后十行内容
Case (_____)in
cat $1
cat >>$2<$1
*)echo ‘defult…’
case
$#
$@
$$
$*
#!/bin/bash
DICNAME=ls /root |grep bak
#(1)
if [ -z “$DICNAME” ] then #(2)
mkdir /root/bak cd /root/bak #(3)
fi
YY=date +%y
MM=date +%m
DD=date +%d
#(4)
BACKETC= Y Y YY YYMM$DD_etc.tar.gz #(5)
tar zcvf $BACKETC /etc #(6)
echo “fileback fiaished!”
config.properties文件格式如下:
zookeeper.server=127.0.0.1:2181
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://lx-db:3306/gudong
jdbc.username=lanxin
jdbc.password=OnLIDX5
http://www.baidu.com/index.html
http://www.baidu.com/1.jpg
http://post.baidu.com/index.php
http://mp3.baidu.com/index.jsp
http://www.baidu.com/3.html
http://post.baidu.com/2.bmp
得到如下结果:
域名的出现的次数 域名
3 www.baidu.com
2 post.baidu.com
1 mp3.baidu.com
1 2 3
4 5 6
7 8 9
打印出每一列的累加值
(1)查看服务器的硬盘占用量
(2)将/usr/test目录下大于100K的文件转移到/tmp目录下
(3)杀死所有启动的servicefx_asr进程
(4)假设某nginx server的日志access.log如下:
198.24.230.194 - - [10/Oct/2015:10:23:50 +0800] “POST /asr/recognize HTTP/1.1 200 177 “-” ”-”
请查找在2015/10/10,10点这一个小时内,访问“/CheckAuth”接口的IP一共有几个,每个各访问了多少次
real 0m2.003s
user 0m0.004s
sys 0m0.000s
请说明real、user、sys三者具体代表的意思和区别
某目录下有两个文件a.txt和b.txt,文件格式为(ip username),例如:
a.txt b.txt
127.0.0.1zhangsan 127.0.0…4lixiaoliu
127.0.0.1wangxiaoer 127.0.0.01lisi
127.0.0.2lisi
127.0.0.3wangwu
每个文件至少有100万行,请使用Linux命令完成下列工作
1)两个文件各自的IP数,以及总IP数
2)出现再b.txt而没有出现再a.txt的IP
3)每个username出现的次数,以及每个username对应的IP数