1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。

网桥:是连接两个局域网的基于MAC地址数据存储转发设备,工作于数据链路层
集线器:所有端口处于同一个广播域和冲突域中,带宽共享,工作于物理层
二层交换机:多端口网桥,一个端口一个冲突域,默认所有端口位于同一个广播域中,可以划分vlan,隔离广播域,带宽独享
三层交换机:具有路由功能的二层交换机
路由器:连接不同网段的设备,负责不同网段之间数据通信
二层交换机一般用于接终端设备,三层交换机用于汇聚层,核心层,路由器用于不同网段之间数据通信
2、IP地址的分类有哪些?子网掩码的表示形式及其作用


3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。

OSI模型_1.png

4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)

1.ifconfig 查看网卡信息,此处以eth0为例
2.用命令指定主机IP地址:ifconfig eth0 XXX.XXX.XXX.XXX/XX,此命令即时生效
3.编辑/etc/sysconfig/network-scripts/ifcfg-em1文件,使之重启之后永久有效

Centos7

/etc/sysconfig/network-scripts/ifcfg-eth0
1 TYPE=Ethernet
2 BOOTPROTO=none
3 DEFROUTE=yes
4 PEERDNS=yes
5 PEERROUTES=yes
6 IPV4_FAILURE_FATAL=no
7 IPV6INIT=yes
8 IPV6_AUTOCONF=yes
9 IPV6_DEFROUTE=yes
10 IPV6_PEERDNS=yes
11 IPV6_PEERROUTES=yes
12 IPV6_FAILURE_FATAL=no
13 NAME=em1
14 UUID=302b3278-f774-4d5e-99cb-69ccc7c66dfd
15 DEVICE=em1
16 ONBOOT=yes
17 IPADDR=192.168.1.252
18 NETMASK=255.255.255.0
19 GATEWAY=192.168.1.1

ubuntu系统:
Unb
auto lo
iface lo inet loopback

auto em1
iface em1 inet static
address 192.168.1.118
netmask 255.255.255.0
gateway 192.168.1.1

重启:
/etc/init.d/networking restart
5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。

1.通过修改配置文件的方式,重启之后使之永久有效,方法有2种:
(1)使用GUI界面的方式,使用以下命令启用
CentOS6:setup命令
CentOS7:nmtui命令

(2)通过修改网络配置文件
/etc/sysconfig/network-scripts/ifcfg-IFACE :用来设定IP|NETMASK|GW|DNS等属性的配置文件
/etc/sysconfig/networkj-scripts/route-IFACE:用来设定路由的相关配置文件
/etc/sysconfig/network-scripts/ifcfg-IFACE_LABEL:用来为网卡添加额外IP地址,并永久有效

2.通过命令的方式,临时生效
(1)ifconfig 语法格式:ifconfig interface IP netmask NETMASK
示例:

ifconfig eth1 192.168.10.100 netmask 255.255.255.0
(2)route命令,修改路由信息
示例:

route add -net 10.0.0.0/8 gw 192.168.10.1 dev eth0
6、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;
在线的主机使用绿色显示;
不在线的主使用红色显示;

1 #!/bin/bash
2 #
3 for i in `seq 254`;do
4 if ping -c 1 -W1 172.16.250.$i &> /dev/null;then
5 echo -e “\033[32m 172.16.250.$i is online. \033[0m”
6 else
7 echo -e “\033[31m 172.16.250.$i is not online. \033[0m”
8 fi
9 done

7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;

示例内容解析:/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=”eth0″ #关联的设备名称,要与文件名的后半部“INTERFACE_NAME”保持一致
BOOTPROTO=”dhcp” #引导协议,一般的取值为{static|none|dhcp|bootp}:静态地址static|none;
HWADDR=”00:1C:42:15:8C:28″ #设备的MAC地址;
IPV6INIT=”yes” #是否初始化IPv6;
NM_CONTROLLED=”yes”
ONBOOT=”yes” #在系统引导过程中,是否激活此接口;
TYPE=”Ethernet”
UUID=”4f2e9a9f-e70e-4da4-a606-388600e79eb2″ #此设备的惟一标识;
8、如何给网络接口配置多个地址,有哪些方式?

1.ip命令

ip addr add IFADDR dev IFACE [label NAME]

示例:ip addr add 192.168.100.10/24 dev eth1 label eth1:0
2.ifconfig命令

ifconfig IFACE_LABEL IPADDR/NETMASK
3.修改配置文件,用来为网卡添加额外IP地址,并永久有效

/etc/sysconfig/network-scripts/ifcfg-IFACE_LABEL
9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。
ifcfg家族

ifconfig命令

语法格式1:ifconfig [-a] [interface]

语法格式2:ifconfig interface [aftype] options | address …

语法格式3:ifconfig IFACE_LABEL IPADDR/NETMASK

route命令:路由查看及管理命令

语法格式1:route [option]

语法格式2:route add|del [-net|-host] target [netmask Nm] [gw GW] [[dev] If]

netstat命令

常用语法格式1:netstat -rn 显示路由表信息

常用语法格式2:netstat [–tcp|-t] [–udp|-u] [–udplite|-U] [–sctp|-S] [–raw|-w] [–listening|-l] [–all|-a] [–numeric|-n] [–extend|-e[–extend|-e]] [–program|-p]

常用语法格式3:netstat {–interfaces|-I|-i} [iface] [–all|-a] [–extend|-e] [–verbose|-v] [–program|-p] [–numeric|-n]

ifup | ifdown命令

hostname命令

语法格式:hostname HOSTNAME

hostnamectl命令:CentOS 7下的命令

语法格式:hostnamectl [OPTIONS…] {COMMAND}
10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。

工具1:rpm命令

通用选项:

安装:-i|–install

升级:-U|–upgrade,-F|–freshen

卸载:-e|–erase

查询:-q|–query

校验:-V|–verify ###工具2:yum命令

通用选项:

install package1 [package2] […] 安装程序包

update [package1] [package2] […] 升级程序包

check-update 检查可用升级包

remove | erase package1 [package2] […] 卸载程序包

list […] 显示程序包

info […] 查看程序包信息

11、如何使用发行版光盘作为yum repository,请描述该过程。

挂载光盘:mount /dev/cdrom /mnt/cdrom
创建:vim /etc/yum.repos.d/cdrom.repo

[centos7]
name=cdrom
baseurl=file:///media/cdrom
gpgcheck=1
enabled=1
12、写一个脚本,完成以下功能
(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;
(2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;
(3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;
(4) 分别统计S开头和K开头的文件各有多少;

脚本:

#!/bin/bash
declare -i m
declare -i s
m=0
s=0
for i in `ls /etc/rc.d/rc3.d/ | grep “^[S]”`;do
mv /etc/rc.d/rc3.d/$i /etc/rc.d/rc3.d/${i}start
s+=1
done
for h in `ls /etc/rc.d/rc3.d/ | grep “^[K]”`;do
mv /etc/rc.d/rc3.d/$h /etc/rc.d/rc3.d/${h}stop
m+=1
done
echo “K* have $m files,S* have $s”

[root@hiall2016 /]# bash 12.sh
K* have 1 files,S* have 37
[root@hiall2016 /]#
13、写一个脚本,完成以下功能
(1) 脚本能接受用户名作为参数;
(2) 计算此些用户的ID之和;

1 #!/bin/bash#
2 declare -a username
3 declare -i idsum
4 declare -i argnum
5 idsum=0
6 read -p “please input username:” -a username
7 argnum=${#username[*]}
8 if [ $argnum -eq 1 ];then
9 useradd ${username[0]}
10 echo “idsum $(id -u ${username[0]})”else
11 for i in `seq 0 1 $[$argnum-1]`;do
12 useradd ${username[$i]}
13 idsum+=$(id -u ${username[$i]})
14 done
15 echo $idsumfi
16 fi

[root@hiall2016 /]# bash 13.sh
please input username:user2
useradd: user ‘user2’ already exists
idsum 1024else
useradd: user ‘user2’ already exists
14、写一个脚本
(1) 传递一些目录给此脚本;
(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;

脚本:

#!/bin/bash#argnum=$#
ls -al $*
sumtype=$(ls -l $* | grep -o -E “^([a-z]|[-])”| sort -u | wc -l)
sumdir=$(ls -l $* | grep -o “^d” | wc -l)
echo “sumtype $sumtype”echo “sumdir $sumdir”

[root@hiall2016 /]# bash 14.sh
total 8980488
dr-xr-xr-x. 19 root root 4096 Oct 24 22:34 .
dr-xr-xr-x. 19 root root 4096 Oct 24 22:34 ..
-rw-r–r–. 1 root root 197 Oct 24 22:34 14.sh
-rw-r–r–. 1 root root 83 Oct 24 22:29 15.sh
-rw-r–r–. 1 root root 12288 Oct 24 22:31 .15.sh.swo
-rw-r–r–. 1 root root 4096 Oct 24 22:29 .15.sh.swp
-rw-r–r–. 1 root root 237 Oct 24 22:22 16.sh
-rw-r–r–. 1 root root 4096 Oct 24 22:29 .16.sh.swn
-rw-r–r–. 1 root root 12288 Oct 24 22:28 .16.sh.swo
-rw-r–r–. 1 root root 12288 Oct 24 22:23 .16.sh.swp
-rw-r–r–. 1 root root 123 Oct 24 22:14 17.sh
-rw-r–r–. 1 root root 12288 Oct 24 22:15 .17.sh.swo
-rw-r–r–. 1 root root 4096 Oct 24 22:13 .17.sh.swp
drwxr-xr-x. 15 tomcat tomcatkzxj 4096 Aug 24 17:29 application
———-. 1 root root 820643840 Apr 8 2016 application1.tar.gz
———-. 1 root root 930647378 Aug 17 17:25 application20160815.tar.gz
———-. 1 root root 2699038778 Sep 5 10:12 application20160905.tar.gz
-rw-r–r–. 1 root root 3823343978 Oct 24 17:18 application20161024.tar.gz
———-. 1 root root 912977920 Apr 11 2016 application2016.4.11.tar.gz
-rw-r–r–. 1 root root 176 Oct 24 11:22 a.sh
-rw-r–r–. 1 root root 12288 Oct 24 22:13 .a.sh.swo
-rw-r–r–. 1 root root 12288 Oct 24 22:10 .a.sh.swp
lrwxrwxrwx. 1 root root 7 Mar 11 2016 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 Mar 11 2016 boot
-rw-r–r–. 1 root root 235 Oct 24 16:45 b.sh
-rw-r–r–. 1 root root 12288 Oct 24 22:14 .b.sh.swp
-rw-r–r–. 1 root root 158 Oct 24 22:08 cf.sh
-rw-r–r–. 1 root root 12288 Oct 24 22:09 .cf.sh.swp
-rw-r–r–. 1 root root 134 Oct 24 16:38 c.sh
-rw-r–r–. 1 root root 4096 Oct 24 22:09 .c.sh.swp
drwxr-xr-x. 5 root root 102 Aug 19 10:14 data
drwxr-xr-x. 19 root root 3240 Oct 17 14:18 dev
drwxr-xr-x. 78 root root 8192 Oct 24 22:22 etc
-rw-r–r–. 1 root root 315 Oct 23 20:26 grep.txt
drwxr-xr-x. 37 root root 4096 Oct 24 22:22 home
lrwxrwxrwx. 1 root root 7 Mar 11 2016 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Mar 11 2016 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Aug 12 2015 media
drwxr-xr-x. 3 root root 18 Oct 24 16:56 mnt
drwxr-xr-x. 2 root root 6 Aug 12 2015 opt
dr-xr-xr-x. 284 root root 0 Aug 17 11:43 proc
-rw-r–r–. 1 root root 16751 Aug 17 11:44 .readahead
dr-xr-x—. 7 root root 4096 Oct 24 22:34 root
drwxr-xr-x. 23 root root 600 Oct 24 16:51 run
lrwxrwxrwx. 1 root root 8 Mar 11 2016 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Aug 12 2015 srv
dr-xr-xr-x. 13 root root 0 Aug 17 11:43 sys
-rw-r–r–. 1 root root 0 Aug 14 23:00 test
-rw——-. 1 root root 1651 Aug 14 22:39 test2
-rwxrwxrwx. 1 root root 242 Oct 23 21:57 test.sh
drwxrwxrwt. 12 root root 4096 Oct 24 19:17 tmp
-rw-r–r–. 1 root root 9128610 Mar 11 2016 tools
drwxr-xr-x. 14 root root 4096 Mar 15 2016 usr
drwxr-xr-x. 20 root root 4096 Aug 17 11:43 var
sumtype 4echo sumdir 17

15、写一个脚本
通过命令行传递一个参数给脚本,参数为用户名
如果用户的id号大于等于500,则显示此用户为普通用户;

脚本:

#!/bin/bash
if [ $(id -u $1) -ge 500 ];then
echo “normal user”
fidone

16、写一个脚本
(1) 添加10用户user1-user10;密码同用户名;
(2) 用户不存在时才添加;存在时则跳过;
(3) 最后显示本次共添加了多少用户;

脚本:

#!/bin/bash#
#16.sh
declare -i sum
sum=0
for i in {1..10};do
if id user$i &>/dev/null ;then
continue
else
useradd user$i
echo “user$i” | passwd –stdin user$i
sum+=1
fi
done
echo “newadd $sum users”

[root@hiall2016 /]# bash 16.sh
Changing password for user user2.
passwd: all authentication tokens updated successfully.
Changing password for user user3.
passwd: all authentication tokens updated successfully.
Changing password for user user4.
passwd: all authentication tokens updated successfully.
Changing password for user user5.
passwd: all authentication tokens updated successfully.
Changing password for user user6.
passwd: all authentication tokens updated successfully.
Changing password for user user7.
passwd: all authentication tokens updated successfully.
Changing password for user user8.
passwd: all authentication tokens updated successfully.
Changing password for user user9.
passwd: all authentication tokens updated successfully.
Changing password for user user10.
passwd: all authentication tokens updated successfully.

17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;

脚本:

#!/bin/bash#
for i in {20..100};do
if ping -w 1 172.168.250.$i ;then
echo “172.168.250.$i online”
fi
done

[root@hiall2016 /]# bash 17.sh
PING 172.168.250.20 (172.168.250.20) 56(84) bytes of data.

— 172.168.250.20 ping statistics —
2 packets transmitted, 0 received, 100% packet loss, time 999ms

PING 172.168.250.21 (172.168.250.21) 56(84) bytes of data.

— 172.168.250.21 ping statistics —
2 packets transmitted, 0 received, 100% packet loss, time 999ms

PING 172.168.250.22 (172.168.250.22) 56(84) bytes of data.

— 172.168.250.22 ping statistics —
1 packets transmitted, 0 received, 100% packet loss, time 0ms

18、打印九九乘法表;

脚本:

#!/bin/sh
for i in {1,2,3,4,5,6,7,8,9}
do
for j in {1,2,3,4,5,6,7,8,9}
do
((product=$i*$j))
echo -ne $i\*$j=$product”\t”
done
echo
done
exit 0


[root@hiall2016 /]# bash a.sh
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81