마 고 Liux 8 주차 작업

19396 단어 linuxshellfor
1. 브리지, 허브, 2 층 교환기, 3 층 교환기, 공유 기의 기능, 사용 장면 과 차 이 를 묘사 하 십시오.
  :
        ,      ,        。           ,        
           ,       “    ”,          。
   :
                 ,                      。     
             ,                           ,
      ,                  ,      。
     :
                ,  OSI           。   MAC    , 
       ,                。
     :
                        ,                     
     ,                 ,        ,    。    
                 ,        、     、    、    
   ,     。              +      ,          
                  ,          ,            
      。
   :
         OSI         ,   IP      ,           ,
       ,   ip       ,             ip    ,   
       tcp、udp     ,  ppp     。         ip  ,  
             

2. IP 주소 의 분 류 는 어떤 것 이 있 습 니까?서브 넷 마스크 의 표현 형식 과 그 역할
IP           Internet           32bit   (   ),IP     
     Internet         ,IP        ,        ,       
  .IP    A,B,C,D,E5 .    B C  . 
     A :
           0 000 0000- 0 111 111:1-127
              :127-1=126
                    :2^24-2
                 :255.0.0.0
                 10.0.0.0/8
     B 
         10 00 0000-10 11 1111: 128-191
             :2^14
               :2^16-2
                :255.255.0.0
             :172.16.0.0/16 - 172.31.0.0/16
        
      C 
           110 0 0000- 110 1 1111: 192-223
               :2^21
                :2^8-2
                 :255.255.255.0
              192.168.0.0/24-192.168.255.0/24
       
      D :  
        1110 0000-1110 1111:244-239
      E :240-255

3. 컴퓨터 네트워크 의 분할 모델 은 어떤 것 (OSI 모델 과 TCP/IP 모델) 이 있 고 각 층 의 기능 과 관련 된 물리 적 장치 가 어떤 것 이 있 습 니까?
OSI  :
(1)   
                  (bit),                 ,      
  (bit stream)    ,            ,               
  、  、          。
    :  、  ;     ;
(2)     
                         (frame) PDU   ,           
         。            :  、            ,   
    ,         。
    :MAC  ,     ;PPP  ;
(3)   
          PDU      (packet),          ,            
            。            ,               
    。                ,                   
 ,                 ,        。
    :IP  ,  ,    ;     ;    ;
(4)   
          PDU    (message),                         
       。                           ,      
     。           ,           :    、       
  、               。
  :TCP,UDP  ,IP  ;
(5)   
                          ,  、               
 。                、        。              
,               。            ,      ,     
             ,       。
  : HTTP  ,web,mail
(6)   
                         ,             ,      
           。
(7)   
                ,                    。
     

     
TCP/IP  :
TCP/IP                。Internet       TCP/IP   。  TCP/IP 
             ,     :     、     、   (     )、 
   。
   
   1、        
     TCP/IP                ,            -      
         ,       IP  。          ,              
	         。
	    :  、  、   ;     ;  
  
  2、       
          TCP/IP      。                 。  ,   
          ,                  。  ,             
	    ,               。  
                 , IP  (Internet Protocol)。  
                   ,             (   )     。
        ,                 。
        :     ,    
  
  3、     
   TCP/IP   ,                              。   
                   。 :      TCP(transmission control protocol)
	        UDP(user datagram protocol)。  TCP          、     。                           。    ,                        。    ,                   。TCP              ,                               ,UDP         、     ,                       。    :     ,   ; 
  
  4、     
  TCP/IP   OSI                        。  
                         。  ,   TCP   ,      
     (File Transfer Protocol,FTP)、      (TELNET)、       (Hyper Text    Transfer Protocol,HTTP),    UDP   。
        :      

4. 리 눅 스 호스트 를 TCP/IP 네트워크 에 어떻게 연결 하 는 지 상세 한 절 차 를 설명해 주 십시오.(수 동 으로 지정 한 방식)
1、vim /etc/sysconfig/network-scripts/ifcfg-eth0 (      ,    ) 
2、  eth0  ,       
    ONBOOT=no  ONBOOT=yes
BOOTPROTO=dhcp  BOOTPROTO=static none
IPADDR=IP  
NETMASK=mas  
GATEWAY=    
DNS1=dns     (dns   )
3      
service network restart /etc/init.d/network restart

    :(     )
ifconfig eth0 192.168.0.1/24
ifconfig eth0 192.168.0.1 netmask 255.255.255.0

5. Linux 호스트 에 네트워크 정 보 를 설정 하 는 방식 은 어떤 것 이 있 습 니까? 각 과정 을 설명 하 십시오.
Ifconfig  :
     ifconfig       ip  。             ,      
ip          。      。Ipconfig  ethx   ipadd    netmask      x.x.x.x。
  ethx  x         ,      0.ipadd  ip  。x.x.x..x     。
     eth0   ip   192.168.1.1       255.255.255.0

setup  :
  setup         ,  Network configuration
     Device configuration        ,  IP  ,mac  ,  ,dns 
            。

    :
1、  -   -    
2、  
3、  - “  ”,     IP、    、  、DNS。  ,  “  ”  。

      ,       :
ifconfig eth0 192.168.0.1/24   ifconfig eth0 192.168.0.1 netmask 255.255.255.0
ip addr replace 192.168.1.8/24 dev eth0 

centos7
nmcli c modify eth0 +ipv4.addresses 18.168.1.13/24
nmcli con down eth0;nmcli c up eth0

6. 스 크 립 트 를 작성 하고 ping 명령 으로 172.16.250.1 - 172.16.250.254 사이 의 모든 호스트 의 온라인 상 태 를 탐지 합 니 다.
    온라인 호스트 는 녹색 디 스 플레이 를 사용 합 니 다.
    온라인 이 아 닌 주 는 빨간색 디 스 플레이 를 사용 합 니 다.
(   192.168.2.1-192.168.2.254  )
[root@localhost tmp]# vim ip.sh 
#!/bin/bash
declare -i i=1
declare -i uphosts=0
declare -i downhosts=0
net='192.168.2.'
while [ $i -le 254 ]; do
 if ping -c 1 -w 1 $net$i &> /dev/null; then
   echo -e "\033[32m $net$i is up!"
   let uphosts++
 else
    echo -e "\033[31m $net$i is down!"
    let downhosts++
  fi
  let i++
done
echo "Up hosts:$uphosts"
echo "Down hosts:$downhosts
[root@localhost tmp]# bash -n ip.sh 
[root@localhost tmp]# bash ip.sh 
 192.168.2.1 is up!
 192.168.2.2 is down!
 192.168.2.3 is down!
 192.168.2.4 is down!
 192.168.2.5 is down!
 192.168.2.6 is down!
 192.168.2.7 is down!
 192.168.2.8 is down!
 ...................
 192.168.2.99 is down!
 192.168.2.100 is up!
 192.168.2.101 is down!
 192.168.2.102 is down!
 192.168.2.103 is down!
 192.168.2.104 is down!
 192.168.2.105 is down!
 192.168.2.106 is up!
 192.168.2.107 is down!
 192.168.2.108 is down!
 192.168.2.109 is up!
 192.168.2.110 is up!
 .......................
 192.168.2.252 is down!
 192.168.2.253 is down!
 192.168.2.254 is down!
Up hosts:5
Down hosts:249

7. 각 네트워크 인터페이스의 설정 파일 에서 각 매개 변수의 의미 와 해당 하 는 값 을 상세 하 게 설명 합 니 다.
DEVICE:        
HWADDR:    MAC  
BOOTPROTO:              ,   :dhcp,static,none,bootp
NM_CONTROLLED:NM networkManager   (/etc/rc.d/init.d/):       nm   ,
centos6   no
ONBOOT:              
TYPE:    :     Ethernet,Bridge
UUID:      
IPADDR:  ip  
NETMASK:    
GATEWAY:    
DNS1:DNS     
DNS2:DNS2     
USERCTL:            
PEERDNS:  bootproto   dhcp,    dhcp server    dns           
 /etc/resolv.conf   

8. 어떻게 네트워크 인터페이스 에 여러 개의 주 소 를 설정 합 니까? 어떤 방식 이 있 습 니까?
1、    
  /etc/sysconfig/network-scripts/ifcfg-eth0                    ,
  ifcfg-eth0:0  ifcfg-eth0:1  
    ifcfg-eth0:0         
DEVICE=eth0:0 #      eth0:0
ONBOOT=yes #       
BOOTPROTO=static #    ip  
IPADDR=192.168.0.1 #  ip  
NETMASK=255.255.255.0 #    

2、    
ifconfig eth0:0 192.168.0.1 netmask 255.255.255.0 up
ip addr add 192.168.1.8/24 dev eth0label 'eth0:0'
nmcli c modify eth0 +ipv4.addresses 18.168.1.13/24(  ip,         )

9. 자주 사용 하 는 네트워크 관리 도구 가 어떤 것 이 있 는 지 예시 형식 으로 그들의 사용 방법 을 설명 한다.
ifconfig  :
ifconfig [interface]
-a:      
ifconfig INTRENAME:         
ifconfig interface [aftype] options | address ...
#ifconfig intername IP/MAS
ifconfig eth0 192.168.0.1/24
ifconfig eth0 192.168.0.1 netmask 255.255.255.0       ,       
      
-promisc:   
promisc:  
                                            
route  :      
  :route -n
   route add
ip route add 192.168.1.0/24 via 172.16.1.1 dev eth0     192.168.1.0/24   ,
    172.16.1.1;ip route add default 172.16.1.1       
  : route del
  : route del -host 192.168.1.3
  :route del -net 182.168.0.0 netmask 255.255.255.0 
  : route del default
ip  :
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | addrlabel | route | rule | neigh | tunnel | maddr |
               mroute | monitor }
OPTIONS := { -V[ersion] | -s[tatistics] | -r[esolve] | -f[amily] { inet |
               inet6 | ipx | dnet | link } | -o[neline] }
link:      
set:
ip link set dev etho down  (up and down          )
show:
ip link show
dev name:      
up:     up     
addr:
ip addr show     
ip addr { add | del } IFADDR dev STRING
ip addr add 192.168.1.8/24 dev eth0
ip addr replace 192.168.1.8/24 dev eth0 
ip addr add 192.168.1.8/24 dev eth0label 'eth0:0'(                   ip  ,        ip)
ip del 192.168.1.8/24 dev eth0    
ip addr dev 192.168.1.8/24 dev eth0label 'eth0:0'
ip addr [scope {global|link|host}] [broadcast ADDRESS]
scope:     ,globa:    ,link:     ,host:      broadcast:      
ip addr show [dev Device] [label LABEL] [primary    and secondary   ]
ip addr flush        show,            
route:
ip route add TARGET via GW dev IFACE src SOURCE_IP ip
ip route add 192.168.1.3 via 172.16.0.1 dev eth0 
ip route add 192.168.0.0/24 via 172.16.0.1 dev eth0
ip route add default via 172.16.0.1 dev eth0     
TARGET:
    :  ip
    :ip/mask
ip route delete
ip route del TARGET
ip route show
ip route flush

10. Linux 시스템 패키지 관리 방법 (설치, 업그레이드, 마 운 트 해제 등 작업) 은 어떤 것 이 있 고 어떻게 관리 하 는 지.
rpm -i     rpm   
rpm -e       
rpm –test     
rpm –nodeps       
rpm –replacepkgs     
rpm –nosignature:         
rpm –upgrage        ,   ,          ,   
rpm –freshen:        ,   ,    ,        
rpm -q{l | c }           \       \    
yum install       
yum remove       
yum update        
yum groupinstall       
yum groupupdate       
yum groupremove      
yum info          

11. 발행 판 CD 를 yum reposcory 로 어떻게 사용 하 는 지 설명 하 십시오.
          , mount /dev/cdrom /mnt
     /etc/yum.repos.d/     repo     。
vim /etc/yum.repos.d/localadd.repos 
[localbase]
name=local centos name    
baseurl=file:///mnt/   
cost=1    
gpgcheck=0    
enabled=1   

12. 스 크 립 트 를 작성 하여 다음 과 같은 기능 을 완성 합 니 다.
  (1) 특정한 디 렉 터 리 (/etc/rc. d/rc3. d/) 에 각각 K 로 시작 하 는 파일 과 S 로 시작 하 는 파일 이 있다 고 가정 합 니 다.
  (2) K 로 시작 하 는 모든 파일 의 이름 을 표시 하고 stop 문자열 을 추가 합 니 다.
  (3) S 로 시작 하 는 모든 파일 의 이름 을 표시 하고 start 문자열 을 추가 합 니 다.
  (4) S 로 시작 하 는 파일 과 K 로 시작 하 는 파일 이 각각 얼마나 되 는 지 통계 한다.
[root@localhost ~]# vim rc.sh 
#!/bin/bash
declare -i k=0
declare -i s=0
for i in $(ls /etc/rc.d/rc3.d/K* | grep -o "[^/]*$"); do
echo "$i stop"
let k=$k+1
done
for i in $(ls /etc/rc.d/rc3.d/S* | grep -o "[^/]*$"); do
echo "$i start"
let s=$s+1
done
echo "K files:$k"
echo "S files:$s"
[root@localhost ~]# bash -n rc.sh 
[root@localhost ~]# bash rc.sh 
K10saslauthd stop
K61nfs-rdma stop
K87restorecond stop
K89netconsole stop
K89rdisc stop
K95rdma stop
S02lvm2-monitor start
S08ip6tables start
S08iptables start
S10network start
S11auditd start
S12rsyslog start
S15mdmonitor start
S25blk-availability start
S25netfs start
S26udev-post start
S50kdump start
S55sshd start
S80postfix start
S90crond start
S99local start
K files:6
S files:15

13. 스 크 립 트 를 작성 하여 다음 과 같은 기능 을 완성 합 니 다.
  (1) 스 크 립 트 는 사용자 이름 을 매개 변수 로 받 아들 일 수 있 습 니 다.
  (2) 이 사용자 들 의 ID 의 합 을 계산 합 니 다.
[root@localhost ~]# vim user.sh
#!/bin/bash
declare -i sum=0
if [ $# -lt 2 ]; then
 echo "Please enter two user name"
 exit 1
fi
if [ $# -ge 2 ]; then
 for i in $@; do
   if id $i &> /dev/null; then
  userid=`id -u $i`
  let sum=$sum+$userid
  else
   echo "Sorry user $i not found"
  fi
done
fi
echo "user id sum:$sum"
[root@localhost ~]# bash -n user.sh 
[root@localhost ~]# bash user.sh 
Please enter two user name
[root@localhost ~]# bash user.sh toot
Please enter two user name
[root@localhost ~]# bash user.sh toot root
Sorry user toot not found
user id sum:0
[root@localhost ~]# bash user.sh root mageedu
user id sum:500
[root@localhost ~]# bash user.sh tom mageedu ftp mail
user id sum:1023

14. 대본 쓰기
  (1) 이 스 크 립 트 에 디 렉 터 리 를 전달 합 니 다.
  (2) 각 디 렉 터 리 의 모든 1 급 파일 이나 하위 디 렉 터 리 의 내용 형식 을 하나씩 표시 합 니 다.
  (3) 모두 몇 개의 목록 이 있 는 지 통계 한다.그리고 모두 몇 개의 파일 의 내용 형식 을 보 여 줍 니까?
[root@localhost tmp]# vim dir.sh
#!/bin/bash
 declare -i fsum=0;bsum=0;csum=0;dsum=0;lsum=0;psum=0;ssum=0
if [ $# -lt 1 ]; then
echo "please enter one dir"
exit 1
fi
if [ $# -ge 1 ]; then
for i in $@; do
  if [ ! -d $i ]; then
  echo "sorry $i is not dir"
  else
  tree $i
    for j in $(ls $i); do
    if [ -L "$i/$j" ];then
      let lsum++
    elif [ -b "$i/$j" ];then
      let bsum++
    elif [ -c "$i/$j" ];then
       let csum++
    elif [ -d "$i/$j" ];then
       let dsum++
    elif [ -f "$i/$j" ];then
        let fsum++
    elif [ -p "$i/$j" ];then
        let psum++
    elif [ -S "$i/$j" ];then
        let ssum++
   fi
  done
fi
done
fi
echo "dir is:$dsum"
echo "file is:$fsum"
echo "b file is:$bsum"
echo "c file is:$csum"
echo "l file is:$lsum"
echo "p file is:$psum"
echo "s file is:$ssum"
[root@localhost tmp]# vim dir.sh 
[root@localhost tmp]# bash -n dir.sh 
[root@localhost tmp]# bash dir.sh /etc/passwd
sorry /etc/passwd is not dir
dir is:0
file is:0
b file is:0
c file is:0
l file is:0
p file is:0
s file is:0
[root@localhost tmp]# bash dir.sh /dev/
/dev/
├── agpgart
├── block
│   ├── 1:0 -> ../ram0
│   ├── 1:1 -> ../ram1
│   ├── 1:10 -> ../ram10
│   ├── 11:0 -> ../sr0
│   ├── 1:11 -> ../ram11
│   ├── 1:12 -> ../ram12
│   ├── 1:13 -> ../ram13
│   ├── 1:14 -> ../ram14
│   ├── 1:15 -> ../ram15
│   ├── 1:2 -> ../ram2
.......................
├── VolGroup
│   ├── lv_home -> ../dm-2
│   ├── lv_root -> ../dm-0
│   └── lv_swap -> ../dm-1
└── zero
29 directories, 410 files
dir is:16
file is:0
b file is:31
c file is:122
l file is:15
p file is:0
s file is:1

15. 스 크 립 트 쓰기
 명령 행 을 통 해 스 크 립 트 에 매개 변 수 를 전달 합 니 다. 매개 변 수 는 사용자 이름 입 니 다.
 사용자 의 id 번호 가 500 보다 크 면 이 사용 자 를 일반 사용자 로 표시 합 니 다.
[root@localhost tmp]# vim us.sh 
#!/bin/bash
if [ $# -lt 1 ]; then
echo "please enter a user naem"
exit 1
fi
if [ $# -ge 1 ]; then
for i in $@; do
  if id $i &> /dev/null; then
     userid=`id -u $i`
     if [ $userid -ge 500 ]; then
       echo " $i is a regular user"
     else
       echo " $i is a system user"
     fi
   else
      echo " sorry $i user is not found"
   fi
done
fi
[root@localhost tmp]# bash -n us.sh 
[root@localhost tmp]# bash us.sh 
please enter a user naem
[root@localhost tmp]# bash us.sh yy
 sorry yy user is not found
[root@localhost tmp]# bash us.sh root
 root is a system user
[root@localhost tmp]# bash us.sh root yy
 root is a system user
 sorry yy user is not found
[root@localhost tmp]# bash us.sh root mageedu
 root is a system user
 mageedu is a regular user
[root@localhost tmp]# bash us.sh tom mageedu
 tom is a regular user
 mageedu is a regular user

16. 스 크 립 트 쓰기
  (1) 사용자 user1 - user 10 추가;비밀번호 와 사용자 이름;
  (2) 사용자 가 존재 하지 않 을 때 만 추가 합 니 다.존재 할 때 건 너 뛰 기;
  (3) 마지막 으로 이번 사용자 가 얼마나 추 가 했 는 지 보 여 줍 니 다.
[root@localhost tmp]# vim adduser.sh 
#!/bin/bash
declare -i i=0
declare -i users=0
if [ ! $UID -eq 0 ]; then
echo "welcome root create user"
exit 1
fi
while [ $i -le 10 ]; do
 let i++
 if id user$i &> /dev/null; then
   echo "user exists"
   continue
 else
  useradd user$i
  if [ $? -eq 0 ]; then
    echo "user$i" | passwd --stdin user$i &> /dev/null
   echo " New user:user$i add sucess"
   let users=$users+1
  fi
 fi
done
echo "addusers:$users"
[root@localhost tmp]# bash -n adduser.sh
[root@localhost tmp]# bash adduser.sh
user exists
user exists
user exists
user exists
user exists
user exists
 New user:user7 add sucess
 New user:user8 add sucess
 New user:user9 add sucess
 New user:user10 add sucess
addusers:4 
[root@localhost tmp]# bash adduser.sh 
user exists
user exists
user exists
user exists
user exists
user exists
user exists
user exists
user exists
user exists
user exists
addusers:0

17. 스 크 립 트 를 작성 하고 ping 명령 으로 172.16.250.20 - 172.16.250.100 이내 에 어떤 호스트 가 온라인 에 있 는 지 테스트 하여 온라인 으로 표시 합 니 다.
[root@localhost tmp]# vim ip2.sh 
#!/bin/bash
declare -i i=1
declare -i uphosts=0
declare -i downhosts=0
net='192.168.2'
for i in {1..254}; do
ping -c 1 -w 1 ${net}.${i} &> /dev/null
if [ $? -eq 0 ]; then
echo "${net}.${i} is up !"
let uphosts++
else
echo "${net}.${i} is down!!"
let downhosts++
fi
done
echo "Up hosts is:$uphosts"
echo "Down hosts is:$downhosts"
[root@localhost tmp]# bash -n ip2.sh 
[root@localhost tmp]# bash ip2.sh 
192.168.2.1 is up !
192.168.2.2 is down!!
192.168.2.3 is down!!
192.168.2.4 is down!!
.....................
192.168.2.249 is down!!
192.168.2.250 is down!!
192.168.2.251 is down!!
192.168.2.252 is down!!
192.168.2.253 is down!!
192.168.2.254 is down!!
Up hosts is:7
Down hosts is:247

18. 구구 곱셈 표를 인쇄 한다.
for:
[root@localhost tmp]# vim nine.sh
#!/bin/bash
declare -i i=1
declare -i j=1
for i in {1..9}; do
 for j in $(seq 1 $i); do
echo -e -n "${j}X${i}=$[$j*$i]\t"
done
echo
done
[root@localhost tmp]# bash -n nine.sh
[root@localhost tmp]# bash nine.sh 
1X1=1
1X2=22X2=4
1X3=32X3=63X3=9
1X4=42X4=83X4=124X4=16
1X5=52X5=103X5=154X5=205X5=25
1X6=62X6=123X6=184X6=245X6=306X6=36
1X7=72X7=143X7=214X7=285X7=356X7=427X7=49
1X8=82X8=163X8=244X8=325X8=406X8=487X8=568X8=64
1X9=92X9=183X9=274X9=365X9=456X9=547X9=638X9=729X9=81
while
[root@localhost tmp]# vim nine2.sh 
#!/bin/bash
declare -i i=1
declare -i j=1
while [ $i -le 9 ]; do
 while [ $j -le $i ]; do
  echo -e -n "${j}X${i}=$[$j*$i]\t"
  let j++
  done
 let j=1
 let i++
 echo 
done
[root@localhost tmp]# bash -n nine2.sh  
[root@localhost tmp]# bash nine2.sh 
1X1=1
1X2=22X2=4
1X3=32X3=63X3=9
1X4=42X4=83X4=124X4=16
1X5=52X5=103X5=154X5=205X5=25
1X6=62X6=123X6=184X6=245X6=306X6=36
1X7=72X7=143X7=214X7=285X7=356X7=427X7=49
1X8=82X8=163X8=244X8=325X8=406X8=487X8=568X8=64
1X9=92X9=183X9=274X9=365X9=456X9=547X9=638X9=729X9=81
until
[root@localhost tmp]# vim nine3.sh 
#!/bin/bash
declare -i j=1
declare -i i=1
until [ $j -gt 9 ]; do
 until [ $i -gt $j ]; do
  echo -n -e "${i}X${j}=$[$i*$j]\t"
    let i++
  done
  echo 
  let i=1
  let j++
 done
[root@localhost tmp]# bash -n nine3.sh
[root@localhost tmp]# bash nine3.sh 
1X1=1
1X2=22X2=4
1X3=32X3=63X3=9
1X4=42X4=83X4=124X4=16
1X5=52X5=103X5=154X5=205X5=25
1X6=62X6=123X6=184X6=245X6=306X6=36
1X7=72X7=143X7=214X7=285X7=356X7=427X7=49
1X8=82X8=163X8=244X8=325X8=406X8=487X8=568X8=64
1X9=92X9=183X9=274X9=365X9=456X9=547X9=638X9=729X9=81

좋은 웹페이지 즐겨찾기