N22第八周作業

1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。

網橋:

網橋是早期的二層網絡設備,每個端口分別有一條獨立的交換信道,不是共享一條信道,可隔離沖突域。網橋比集線器(Hub)性能更好,集線器上各端口都是共享同一條信道的,工作于數據鏈路層。后被端口更多的交換機替代。

集線器:

多端口中繼器,工作在物理層,本身不具備識別信號的能力,只是起到把信號放大再傳輸出去的作用。工作原理是廣播,它的所有端口是共享帶寬,每個端口的實際可用帶寬隨著端口數的增加而遞減,當信息繁忙時,多個端口可能同進一個信道,而一個信道在給定時刻只允許一個端口占用,所以其他端口經常處于監聽等待狀態。集線器采用的是半雙工方式進行傳輸,雖然可以雙向,但不能同時,要么發送,要么接受,嚴重影響網絡性能,所有端口同在一個沖突域和廣播域。

二層交換機:

工作于數據鏈路層,不僅能把信號放大,還能夠識別幀,對數據進行流量和差錯控制。每個端口都有一條獨占的帶寬,每個端口都是一個沖突域,當兩個端口交換信息時,并不影響其他端口的工作,它為用戶提供的是點對點的連接,數據包只發向目的端口,而不會向所有端口發送。交換機既可以用半雙工方式傳輸又可以用全雙工方式傳輸,大大增強了網絡的利用率。

三次交換機:

除了擁有交換機的功能外,還可提供路由功能,可隔離沖突域和廣播域,應用于大型局域網中,可進行網際互聯。

路由器:

工作在網絡層設備,轉發數據包并提供路徑選擇,可進行網際互聯。

2、IP地址的分類有哪些?子網掩碼的表示形式及其作用

1. A類IP地址 (子網掩碼:255.0.0.0)
一個A類IP地址由1字節的網絡地址和3字節主機地址組成,網絡地址的最高位必須是“0”, 地址范圍從1.0.0.0 到126.0.0.0??捎玫腁類網絡有126個,每個網絡能容納1億多個主機。 
2. B類IP地址  (子網掩碼:255.255.0.0)
一個B類IP地址由2個字節的網絡地址和2個字節的主機地址組成,網絡地址的最高位必須是“10”,地址范圍從128.0.0.0到191.255.255.255??捎玫腂類網絡有16382個,每個網絡能容納6萬多個主機 。 
3. C類IP地址  (子網掩碼:255.255.255.0)
一個C類IP地址由3字節的網絡地址和1字節的主機地址組成,網絡地址的最高位必須是“110”。范圍從192.0.0.0到223.255.255.255。C類網絡可達209萬余個,每個網絡能容納254個主機。 
4. D類地址用于多點廣播(Multicast)。 
D類IP地址第一個字節以“lll0”開始,它是一個專門保留的地址。它并不指向特定的網絡,目前這一類地址被用在多點廣播(Multicast)中。多點廣播地址用來一次尋址一組計算機,它標識共享同一協議的一組計算機。 
5. E類IP地址 
以“llll0”開始,為將來使用保留。

在IP地址3種主要類型里,各保留了3個區域作為私有地址,其地址范圍如下: 

127.0.0.1~127.255.255.254 (本地回環地址)
A類地址:10.0.0.0~10.255.255.255 

B類地址:172.16.0.0~172.31.255.255 
C類地址:192.168.0.0~192.168.255.255


3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。

OSI模型:

物理層:完成相鄰節點之間原始比特流的傳輸,將數字”1/0“翻譯成電信號,規定物理接口的標準,傳輸單位是比特,集線器工作于物理層。

數據鏈路層:如何在不可靠的物理線路上進行數據的可靠傳輸,進行差錯控制,流量控制,網橋和二層交換機工作于此層。

網絡層:完成網絡中主機間的報文傳輸,其關鍵問題之一就是使用數據鏈路層的服務將每個報文從源端傳輸到目標端,路徑的選擇,路由器和三層交換機工作于此層。

傳輸層:實現網絡中不同主機上的用戶進程之間可靠的數據通信。負責傳輸的整體工作,差錯控制和流量控制。

會話層:允許不同機器上的用戶之間建立會話關系,管理會話。

表示層:用于完成某些特定功能,對這些功能人們常常希望找到普遍的解決辦法,而不必由每個用戶自己來實現,數據格式的轉換,壓縮與解壓縮,加密與解密。

應用層:支持運行于不同計算機的進程彼此之間的通信,而這些進程則是為用戶完成不同任務而設計的,為用戶體提供程序接口。

TCP/IP模式:

網絡接口層:對應于OSI模型的物理層和數據鏈路層

網絡層:對應于OSI模型的網絡層

傳輸層:對應于OSI模型的傳輸層

應用層:對應于OSI模型的會話層,表示層,應用層

4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 

DEVICE=eth0

HWADDR=00:0C:29:5A:C1:B7

TYPE=Ethernet

UUID=4f1e9841-e705-40bb-9935-d2a7916db6c8

ONBOOT=yes                    (默認為no,需要設置成yes)

NM_CONTROLLED=yes

BOOTPROTO=static               (static:靜態ip,dhcp:自動獲取ip)

IPADDR=192.168.1.131            (設置ip地址)

NETMASK=255.255.255.0            (設置子網掩碼)

GATEWAY=192.168.1.1              (設置默認網關)

DNS1=192.168.1.1                (設置DNS服務器的指向)

                         

5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。

(1)ip命令:
[root@localhost ~]# ip addr add 192.168.2.100/24 dev eth1         (設置ip地址)

[root@localhost ~]# ip route add default gw 192.168.2.1 dev eth1        (設置默認路由)

(2)ifocnfig命令:

[root@localhost ~]# ifconfig eth1 address 192.168.2.101/24

(3)編輯/etc/sysconfig/network-scripts/interface配置文件

(4)進入配置界面設置:system-config-network或setup    (CentOS 6)

                                               nmtul    (CentOS 7) 

   

6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;

     在線的主機使用綠色顯示;

     不在線的主使用紅色顯示;

#!/bin/bash

# Author: liuguohui

# Date: 2016-10-04

# Email: liuguohui1008@sina.com

# Descriptions: 

#

net=172.16.250

for((i=1;i<=254;i++))

do

    if ping -c 1 -w 1 $net.$i &> /dev/null;then

        echo -e "\033[32m $net.$i\033[0m"

    else

        echo -e "\033[31m $net.$i\033[0m"

    fi

done

                                         

7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;

TYPE=Ethernet             接口類型,常見的有Ethernet,Bridge

BOOTPROTO=static          激活次接口時使用什么協議來配置接口屬性,常有dhcp,bootp,static,none

PEERDNS=yes               如果bootproto的值為dhcp,是否允許dhcp server分配的dns服務器指向覆蓋本地手動指定的dns服務指向

IPV6INIT=yes              是否初始化ipv6

NAME=eno16777736

UUID=ccb25f8e-2f8b-4c42-b0eb-0382fa3ad39a        此設備的唯一標識

DEVICE=eno16777736        此配置文件對應的設備名稱

ONBOOT=yes                在系統引導過程中,是否激活此接口

NM_CONTROLLED=yes         是否使用NetworkManager服務來控制接口

DOMAIN=                   dns搜索域

USERCTL=                  是否允許普通用戶控制此設備

IPADDR=                   ip地址

NETMASK=                  子網掩碼:centos 7支持使用PREFIX以長度方式指明子網掩碼

GATEWAY=                  默認網關

DNS1=                     DNS服務器指向

DNS2=                     備用DNS服務器指向

8、如何給網絡接口配置多個地址,有哪些方式?

(1)ip命令

[root@localhost ~]# ip addr add 192.168.2.100/24 dev eth1        (配置第一個地址)

[root@localhost ~]# ip addr add 192.168.3.100/24 dev eth1        (配置第二個地址)

[root@localhost ~]# ip addr show eth1

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:5a:c1:c1 brd ff:ff:ff:ff:ff:ff

    inet 192.168.2.100/24 scope global eth1

    inet 192.168.3.100/24 scope global eth1

    inet6 fe80::20c:29ff:fe5a:c1c1/64 scope link 

       valid_lft forever preferred_lft forever

(2)ifconfig

[root@localhost ~]# ifconfig eth1 192.168.4.100/24        (配置第一個地址)

[root@localhost ~]# ifconfig eth1:0 192.168.5.100/24        (配置第二個地址,網卡需要指定別名)

[root@localhost ~]# ifconfig 

eth1      Link encap:Ethernet  HWaddr 00:0C:29:5A:C1:C1  

          inet addr:192.168.4.100  Bcast:192.168.4.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe5a:c1c1/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:9 errors:0 dropped:0 overruns:0 frame:0

          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:1281 (1.2 KiB)  TX bytes:468 (468.0 b)

eth1:0    Link encap:Ethernet  HWaddr 00:0C:29:5A:C1:C1  

          inet addr:192.168.5.100  Bcast:192.168.5.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

(3)修改配置文件

[root@localhost ~]# cd /etc/sysconfig/network-scripts/        (進入/etc/sysconfig/network-scripts/目錄下)

[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:1        (復制網卡配置文件ifcfg-eth0并取別名為ifcfg-eth0:1)

[root@localhost network-scripts]# vim /etc/sysconfig/network-scripts/ifcfg-eth0        (編輯eth0的配置文件)

DEVICE=eth0

HWADDR=00:0C:29:5A:C1:B7

TYPE=Ethernet

UUID=4f1e9841-e705-40bb-9935-d2a7916db6c8

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.1.131

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

DNS1=192.168.1.1

[root@localhost network-scripts]# vim /etc/sysconfig/network-scripts/ifcfg-eth0:1        (編輯eth0:1的配置文件)

DEVICE=eth0

HWADDR=00:0C:29:5A:C1:B7

TYPE=Ethernet

UUID=4f1e9841-e705-40bb-9935-d2a7916db6c8

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.1.100

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

DNS1=192.168.1.1

9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。

(1)ifconfig命令

                ifconfig [interface]

                    # ifconfig -a

                    # ifconfig INTERFACE [up|down]

                 ifconfig interface [aftype] options | address …

                     # ifconfig INTERFACE IP/mask [up]

                     # ifconfig INTERFACE IP netmask MASK

(2)route命令

                 路由管理命令

                     查看:route -n

                     添加:route add

                         route add  [-net|-host]  target [netmask Nm] [gw Gw] [[dev] If]

                             目標:192.168.1.3  網關:172.16.0.1

                             ~]# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0

                              目標:192.168.0.0 網關:172.16.0.1

                             ~]# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0

                             ~]# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0

                              默認路由,網關:172.16.0.1

                             ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1

                             ~]# route add default gw 172.16.0.1

                      刪除:route del

                         route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]

                            目標:192.168.1.3  網關:172.16.0.1

                             ~]# route del -host 192.168.1.3

                             目標:192.168.0.0 網關:172.16.0.1

                             ~]# route del -net 192.168.0.0 netmask 255.255.255.0

 (3) netstat命令:

                     netstat – Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships

                     顯示網絡連接:

                         netstat [–tcp|-t] [–udp|-u] [–raw|-w] [–listening|-l] [–all|-a] [–numeric|-n] [–extend|-e[–extend|-e]]  [–program|-p]

                             -t: tcp協議相關

                             -u: udp協議相關

                             -w: raw socket相關

                             -l: 處于監聽狀態

                             -a: 所有狀態

                             -n: 以數字顯示IP和端口;

                             -e:擴展格式

                             -p: 顯示相關進程及PID

                                常用組合:

                                 -tan, -uan, -tnl, -unl

                     顯示路由表:

                         netstat  {–route|-r} [–numeric|-n]

                             -r: 顯示內核路由表

                             -n: 數字格式

                    顯示接口統計數據:

                         netstat  {–interfaces|-I|-i} [iface] [–all|-a] [–extend|-e] [–program|-p] [–numeric|-n] 

                             # netstat -i

                             # netstat -I IFACE  

 (4) ip命令:

            ip – show / manipulate routing, devices, policy routing and tunnels

            ip [ OPTIONS ] OBJECT { COMMAND | help }

           OBJECT := { link | addr | route }

           link OBJECT:

           ip link – network device configuration

           set

                     dev IFACE

                    可設置屬性:

                     up and down:激活或禁用指定接口;

          show

                        [dev IFACE]:指定接口

                        [up]:僅顯示處于激活狀態的接口

         ip address – protocol address management

         ip addr { add | del } IFADDR dev STRING

                        [label LABEL]:添加地址時指明網卡別名

                        [scope {global|link|host}]:指明作用域

                            global: 全局可用;

                            link: 僅鏈接可用;

                            host: 本機可用;

                        [broadcast ADDRESS]:指明廣播地址

                        例如:

                        ip addr add 192.168.1.111/24 dev eth0 label eth0:0

         ip address show – look at protocol addresses

                        [dev DEVICE]

                        [label PATTERN]

                        [primary and secondary]

         ip address flush – flush protocol addresses

                        使用格式同show

         p route – routing table management

                        ip route add

                        添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IP

                         TARGET:

                                主機路由:IP

                                網絡路由:NETWORK/MASK

                               添加網關:ip route add defalt via GW dev IFACE

                         ip route delete

                        刪除路由:ip route del TARGET 

                         ip route show

                        ip route flush

                        [dev IFACE]

                        [via PREFIX]

 (5) ss命令:

            格式:ss [OPTION]… [FILTER]

                選項:

                    -t: tcp協議相關

                    -u: udp協議相關

                    -w: 裸套接字相關

                    -x:unix sock相關

                    -l: listen狀態的連接

                    -a: 所有

                    -n: 數字格式

                    -p: 相關的程序及PID

                    -e: 擴展的信息

                    -m:內存用量

                    -o:計時器信息

                    FILTER := [ state TCP-STATE ] [ EXPRESSION ]

10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。

安裝:

        rpm {-i|–install} [install-options] PACKAGE_FILE …

            -v: verbose

            -vv: 

            -h: 以#顯示程序包管理執行進度;每個#表示2%的進度

        rpm -ivh PACKAGE_FILE …

                    [install-options]

                    –test: 測試安裝,但不真正執行安裝過程;dry run模式;

                    –nodeps:忽略依賴關系;

                    –replacepkgs: 重新安裝;

                    –nosignature: 不檢查來源合法性;

                    –nodigest:不檢查包完整性;

                    –noscipts:不執行程序包腳本片斷;具體分為以下四類:(可單獨選擇某類)

                        %pre: 安裝前腳本; –nopre

                        %post: 安裝后腳本; –nopost

                        %preun: 卸載前腳本; –nopreun

                        %postun: 卸載后腳本;  –nopostun

 升級:

        rpm {-U|–upgrade} [install-options] PACKAGE_FILE …

        rpm {-F|–freshen} [install-options] PACKAGE_FILE …

        upgrage:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則“安裝”;

        freeshen:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則不執行升級操作

         rpm -Uvh PACKAGE_FILE …

         rpm -Fvh PACKAGE_FILE …

        其他選項與上面安裝一樣

            –oldpackage:降級;

            –force: 強行升級;

 注意:

            (1)uname -r 不要對內核做升級操作;Linux支持多內核版本并存,因此,對直接安裝新版本內核

            (2) 如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個配置文件并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留

 查詢:

        rpm {-q|–query} [select-options] [query-options]

         [select-options]

            -a: 所有包

            -f: 查看指定的文件由哪個程序包安裝生成

         # rpm -qf /etc/fstab

        setup-2.5.58-9.el5 

         -p /PATH/TO/PACKAGE_FILE:針對尚未安裝的程序包文件做查詢操作;

            查詢尚未安裝的程序包

            rpm -qlp /PATH/TO/PACKAGE_FILE

             –whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供;

            –whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;

         [query-options]

            –changelog:查詢rpm包的changlog (制作的,非作者發布的)

            -c: 查詢程序的配置文件

            -d: 查詢程序的生成文檔

            -i: information

            -l: 查看指定的程序包安裝后生成的所有文件;

            –scripts:程序包自帶的腳本片斷

            -R: 查詢指定的程序包所依賴的CAPABILITY;

            –provides: 列出指定程序包所提供的CAPABILITY;

            –conflicts:列出創建包與哪些包可能沖突

        用法:

            -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE

            -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, …

            -qa

         卸載:

        rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts]

           [–notriggers] [–test] PACKAGE_NAME …

         校驗:

        rpm {-V|–verify} [select-options] [verify-options]

          S file Size differs

           M Mode differs (includes permissions and file type)

           5 digest (formerly MD5 sum) differs

           D Device major/minor number mismatch

           L readLink(2) path mismatch

           U User ownership differs

           G Group ownership differs

           T mTime differs

           P caPabilities differ

         包來源合法性驗正及完整性驗正:

        完整性驗正:SHA256

        來源合法性驗正:RSA

         公鑰加密:

            對稱加密:加密、解密使用同一密鑰;

            非對稱加密:密鑰是成對兒的,

                public key: 公鑰,公開所有人

                secret key: 私鑰, 不能公開

            導入所需要公鑰:

            rpm –import /PATH/FROM/GPG-PUBKEY-FILE

             CentOS 7發行版光盤提供的密鑰文件:RPM-GPG-KEY-CentOS-7

 數據庫重建:

        rpm {–initdb|–rebuilddb}

            initdb: 初始化

                如果事先不存在數據庫,則新建之;否則,不執行任何操作;

            rebuilddb:重建

                無論當前存在與否,直接重新創建數據庫;

11、如何使用發行版光盤作為yum repository,請描述該過程。

[root@localhost ~]#  mount /dev/cdrom1 /mnt

[root@localhost ~]#  vim /etc/yum.repos.d/localyum.repos 

[cdrm]

name=cdrm 名稱

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開頭的文件各有多少;

#!/bin/bash

# Author: liuguohui

# Date: 2016-10-12

# Email: liuguohui1008@sina.com

# Descriptions: 

#

declare -i k_id=0

declare -i s_id=0

for i in $(ls /etc/rc.d/rc3.d/); do

        if echo $i |grep -i "^k" >/dev/null; then

                var=$(echo $i |sed 's/^[kK].*/& stop/')

                let k_id++

                echo $var

        elif echo $i |grep -i "^s" >/dev/null; then

                var=$(echo $i |sed 's/^[sS].*/& start/')

                let s_id++

                echo $var

        fi

done

echo "k_total:$k_id"

echo "s_total:$s_id"

腳本執行效果:

[root@localhost test]# bash file.sh

K10saslauthd stop

K15svnserve stop

K87named stop

K87restorecond stop

K89netconsole stop

K89rdisc stop

K92iptables stop

S02lvm2-monitor start

S10network start

S11auditd start

S11portreserve start

S22messagebus start

S25blk-availability start

S25netfs start

S26haldaemon start

S26udev-post start

S55sshd start

S99libvirt-guests start

S99local start

k_total:7

s_total:12

13、寫一個腳本,完成以下功能

   (1) 腳本能接受用戶名作為參數;

   (2) 計算此些用戶的ID之和;

#!/bin/bash

#

declare -i uid_sum=0

[ $# -lt 2 ] && echo "At least two user_id" && exit 1

for i in $*; do

        if id $i &>/dev/null; then

                uid=$(id -u $i)

                uid_sum+=$uid

        else

                echo "$i no exist !" && exit 2

        fi

done

echo $uid_sum

腳本執行效果:

[root@localhost test]# bash file7.sh visitor1 visitor2 visitor3

1503

14、寫一個腳本

   (1) 傳遞一些目錄給此腳本;

   (2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;

   (3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;

#!/bin/bash

#

declare -i dir_sum=0

declare -i file_sum=0

        if [ $# -lt 1 ]; then

                echo "At least a argument" && exit 2

        fi

for i in $*; do

        if ! [ -d $i ]; then

                echo "input directory please !" && exit 3

        fi

        for filename in $i/*; do

                if [ -d $filename ]; then

                        echo "$filename is directory"

                        let dir_sum++

                elif [ -f $filename ]; then

                        echo "$filename is ASCII file"

                        let file_sum++

                elif [ -b $filename ]; then

                        echo "$filename is block file"

                        let file_sum++

                elif [ -c $filename ]; then

                        echo "$filename is charactor file"

                        let file_sum++

                elif [ -L $filename ]; then

                        echo "$filename is symbolic file"

                        let file_sum++

                elif [ -p $filename ]; then

                        echo "$filename is pipo file" 

                        let file_sum++

                elif [ -S $filename ]; then

                else

                        echo "Unkown"

                fi

        done

done

echo "total directory:$dir_sum"

echo "total file:$file_sum"

執行腳本效果:

[root@localhost ~]# bash file.sh /root /var

/root/anaconda-ks.cfg is ASCII file

/root/fengzheng is directory

/root/file.sh is ASCII file

/root/fstab is ASCII file

/root/man_db.conf is ASCII file

/root/test is ASCII file

/root/test1 is ASCII file

/var/adm is directory

/var/cache is directory

/var/crash is directory

/var/db is directory

/var/empty is directory

/var/games is directory

/var/gopher is directory

/var/kerberos is directory

/var/lib is directory

/var/local is directory

/var/lock is directory

/var/log is directory

/var/mail is directory

/var/nis is directory

/var/opt is directory

/var/preserve is directory

/var/run is directory

/var/spool is directory

/var/tmp is directory

/var/yp is directory

total directory:21

total file:6


15、寫一個腳本

  通過命令行傳遞一個參數給腳本,參數為用戶名

  如果用戶的id號大于等于500,則顯示此用戶為普通用戶;

#!/bin/bash

#

if [ $# -lt 1 ]; then

        echo "one username needed !" && exit 1

elif ! id $1 &>/dev/null; then

        echo "$1 not exist !"&& exit 2

elif [ $(id -u $1) -ge 500 ]; then

        echo "$1 is user"

else

        echo "$1 not user"

fi

輸入不同的用戶名驗證各種效果:

[root@localhost test]# bash file8.sh visitor1

visitor1 is user

[root@localhost test]# bash file8.sh root

root not user

[root@localhost test]# bash file8.sh join

join not exist !

16、寫一個腳本

   (1) 添加10用戶user1-user10;密碼同用戶名;

   (2) 用戶不存在時才添加;存在時則跳過;

   (3) 最后顯示本次共添加了多少用戶;

#/bin/bash

#

declare -i count=0

for i in user{1..10}; do

        if id $i &>/dev/dull; then

                echo "$i already exist !"

                continue

        else

                useradd $i

                echo $i |passwd –stdin $i

                let count++

        fi

done

        echo "total:$count"

運行腳本驗證效果:

[root@localhost test]# bash file9.sh

Changing password for user user1.

passwd: all authentication tokens updated successfully.

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.

total:10

[root@localhost test]# bash file9.sh

user1 already exist !

user2 already exist !

user3 already exist !

user4 already exist !

user5 already exist !

user6 already exist !

user7 already exist !

user8 already exist !

user9 already exist !

user10 already exist !

total:0

17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;

#!/bin/bash

#

for i in 172.16.250.{20..100}; do

        if ping -c 4 $i &>/dev/dull; then

                echo $i

        fi

done

18、打印九九乘法表;

#!/bin/bash

# Author: liuguohui

# Date: 2016-10-010

# Email: liuguohui1008@sina.com

# Descriptions: print multiplication table

#

declare -i a=1

declare -i b=1

for a in {1..9};do

        for b in {1..9};do

                if [ $a -ge $b ]; then

                        echo -n -e "$b*$a=$(($a*$b))\t"

                fi

        done

        echo

done

[root@localhost test]# !bash

bash file1.sh

1*1=1

1*2=2 2*2=4

1*3=3 2*3=6 3*3=9

1*4=4 2*4=8 3*4=12 4*4=16

1*5=5 2*5=10 3*5=15 4*5=20 5*5=25

1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36

1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49

1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64

1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

原創文章,作者:heianyangguo,如若轉載,請注明出處:http://www.www58058.com/49932

(0)
heianyangguoheianyangguo
上一篇 2016-10-17
下一篇 2016-10-17

相關推薦

  • 05linux用戶和組的權限總結

    1、文件的權限分類 文件的權限對象分三類:屬主(u)、屬組(g)、其他(o),每個對象都有rwx,讀寫執行三類權限。 對于文件 r:可查看文件內容 w:可修改其類容 x:可把此文件提請內核啟動為一個進程 對于目錄 r:可使用ls查看此目錄中文件列表 w:可在此目錄中創建和刪除文件 x:可使用ls查看目錄中文件列表,可以cd進入此目錄 X:只給目錄x權限,不給…

    Linux干貨 2016-11-27
  • N25第二周作業

    第二周 一、文件管理命令 復制命令:cp 命令格式   cp [OPTION]… [-T] SOURCE DEST   cp [OPTION]… SOURCE… DIRECTORY   cp [OPTION]…

    Linux干貨 2016-12-09
  • Linux的簡介

    Linux的簡介 馮諾依曼體系結構 主要特點:使用存儲器,采用二進制(據說,采用二進制的靈感來源于中國的八卦,2變4,4變8…) 體系介紹:其由幾大部分組成,輸入設備,運算器,控制器,內部存儲器,外部存儲器,輸出設備。 目前,輸入設備就是指鍵盤鼠標, 運算器和控制器現在統稱CPU。其實已經內置了兩個功能。 內部存儲器就是內存,某種意義上,緩存也算…

    Linux干貨 2016-10-28
  • httpd服務——CentOS7

    httpd-2.4 新特性:      (1)MPM支持運行為DSO機制;以模塊形式按需加載      (2)event MPM生產環境可用      (3)異步讀寫機制      (4)支持每個模塊…

    Linux干貨 2016-10-12
  • 軟件包管理 — rpm & yum

    軟件包管理 包管理器     二進制應用程序的組成部分:         二進制文件、庫文件、配置文件、幫助文件     程序包管理器:      &…

    Linux干貨 2016-08-24
  • 正則表達式字符集

    POSIX Description ASCII Unicode Shorthand Java [:alnum:] Alphanumeric characters [a–zA–Z0–9] [\p{L}\p{Nl}  \p{Nd}] \p{Alnum} [:alpha:] Alphabetic characters …

    Linux干貨 2017-07-07

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-10-25 13:31

    注意排版,如能寫一兩個命令常用的相對復雜的例子就更好了

欧美性久久久久