第8周作業

第8周作業

1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
集線器
集線器也稱HUB,工作在OSI七層結構的第一層物理層,屬於共享型設備,接收數據廣播發出,在局域網內一般都是星型連接拓撲結構,每臺工作站都連接到集線器上。

由於集線器的帶寬共享特性導致網絡利用效率極低,一般在大中型的網絡中不會使用到集線器。


網橋
網橋(Bridge)也稱橋接器,是連接兩個局域網的存儲轉發設備,用它可以完成具有相同或相似體系結構網絡系統的連接。
網橋和交換機一樣都是工作在OSI模型的第二層(數據鏈路層),可以看成是一個二層路由器(真正的路由器是工作在網絡層,根據IP地址進行信包轉發)。
網橋可有效的將兩個局域網(LAN)連起來,根據MAC地址(物理地址)來轉發幀,使本地通信限制在本網段內,並轉發相應的信號至另一網段,網橋通常用於聯接數量不多的、同一類型的網段。


二層交換機
二層交換機工作於OSI模型的第2層(數據鏈路層),故而稱爲二層交換機。
二層交換技術的發展已經比較成熟,二層交換機屬數據鏈路層設備,可以識別數據包中的MAC地址信息,根據MAC地址進行轉發,並將這些MAC地址與對應的端口記錄在自己內部的一個地址表中。


三層交換機
三層交換機就是具有部分路由器功能的交換機,三層交換機的最重要目的是加快大型局域網內部的數據交換,所具有的路由功能也是爲這目的服務的,能夠做到一次路由,多次轉發。
對於數據包轉發等規律性的過程由硬件高速實現,而像路由信息更新、路由表維護、路由計算、路由確定等功能,由軟件實現。

路由器
路由器跟集線器和交換機不同,是工作在OSI的第三層(網絡層),根據IP進行尋址轉發數據包。
路由器是一種可以連接多個網絡或網段的網絡設備,能將不同網絡或網段之間(比如局域網——大網)的數據信息進行轉換,併爲信包傳輸分配最合適的路徑,使它們之間能夠進行數據傳輸,從而構成一個更大的網絡。
路由器具有最主要的兩個功能,即數據通道功能和控制功能。數據通道功能包括轉發決定、背板轉發以及輸出鏈路調度等,一般由特定的硬件來完成;控制功能一般用軟件來實現,包括與相鄰路由器之間的信息交換、系統配置、系統管理等。

區別
網橋            工作在數據鏈路層
集線器         工作在物理層,所有端口共享一個mac地址,共享帶寬
二層交換機  工作在數據鏈路層,每個端口有自己的mac地址,獨享帶寬
三層交換機  工作在數據鏈路層,網絡層,擁有部分路由功能
路由器         工作在網絡層


2、IP地址的分類有哪些?子網掩碼的表示形式及其作用
IP地址分類
A類用於大型網絡(地址範圍1.0.0.0到127.255.255.255,默認掩碼255.0.0.0)
B類用於中型網絡(地址範圍128.0.0.0-191.255.255.255,默認掩碼255.255.0.0)
C類用於小型網絡(地址範圍192.0.0.0-223.255.255.255,默認掩碼255.255.255.0)
D類用於組播(地址範圍從224.0.0.0到239.255.255.255)
E類用於實驗

子網掩碼的表示形式
①點分十進制,如255.255.255.0
②ip地址後加'/'以及[1-32]的數字

子網掩碼的作用
①區別網絡標識和主機標識
②將一個大的IP網絡劃分爲若干小的子網絡

3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
OSI模型
應用層:提供應用程序之間通信;
表示層:處理數據格式、數據加密;
會話層:建立,維護,管理會話連接涉及操作系統和網絡接口和各種數據;
傳輸層:建立主機端到端連接。涉及物理設備:四層交換機
網絡層:尋址和路由選擇。涉及物理設備:路由器
數據鏈路層:提供介質訪問,鏈路管理,將數據分幀並處理流控制。涉及物理設備:網卡,網橋,交換機
物理層:比特流傳輸,將數據轉換爲可通過物理介質傳送的電子信號。涉及物理設備:雙絞線、同軸電纜,集線器

TCP/IP模型
應用層(對應OSI模型的應用層,會話層,表示層)
傳輸層(對應OSI模型的傳輸層)
網絡互聯層(對應OSI模型的網絡層)
網絡接口層(對應OSI模型的數據鏈路層和物理層)


4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
①使用ifconfig查看網卡配置信息,看主要使用的網卡名稱
②到/etc/sysconfig/network-scripts/目錄下查找對應的網卡配置文件
③主要配置項
DEVICE(設備名稱)

TYPE(設備類型。端口爲Ethernet)

ONBOOT(系統啓動時讀取)

BOOTPROTO=static(ip配置協議。當前爲靜態ip,可設置DHCP,)
IPADDR(ip地址)

NETMASK(子網掩碼)

GATEWAY(網關地址)

DNS1(DNS服務器地址)
④重啓網絡服務 service network restart
⑤在CLI中輸入ping 163.com測試網絡連接


5、爲Linux主機配置網絡信息的方式有哪些,請描述各個過程。
①ifconfig eth0 IP/mask
②ip addr add IP device eth0
③Linux網絡屬性配置的tui(text user interface):system-config-network-tui
④使用setup圖形界面設置

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

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

    [root@STCO6 ~]# cat /tmp/ping.sh 
    #!/bin/bash
    #
    ip_address='172.16.250'
    for i in {1..254};do
        ping -c 5 -w 5 ${ip_address}.${i} &> /dev/null
            if [ $? -eq 0 ]; then
                echo -e "\033[32m ${ip_address}.${i} \033[0m"
            else
                echo -e "\033[31;5m ${ip_address}.${i} \033[0m"
            fi
    done


7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;
網卡配置文件`/etc/sysconfig/network-scripts/ifcfg-網卡名`
DEVICE                  #網卡名
BOOTPROTO               #ip地址分配方式:dhcp、static
HWADDR                  #MAC地址
NM_CONTROLLED=yes       #network manager參數
ONBOOT=                 #網卡是否開機激活
TYPE=                   #網絡類型
IPV6INIT=no             #禁止IPV6
USERCTL=no              #是否允許非root用戶控制該設備,爲no,只能root用戶更改
IPADDR=                 #IP ADDR
GATEWAY=                #gateway地址
NETMASK=                #掩碼
DNS1=                   #dns1地址
DNS2=                   #dns2地址


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

ifconfig:

    ifconfig IFACE_ALIAS IPADDR

ip:

    ip addr add ip_addr/mask dev IFACE label alias_label

配置文件:

    ifcfg-IFACE_ALIAS

        DEVICE=IFACE_ALIAS


9、常用的網絡管理類工具有哪些,並用示例形式描述他們的使用方法。
netstat
netstat -tan   #查看當前系統網絡連接情況
        -t tcp協議相關連接
        -u udp協議相關連接
        -l 監聽狀態的連接
        -a 所有連接
        -n 以數字顯示ip和端口


route
route [-nee]
        -n  以數字顯示ip和端口
        -ee 顯示詳細信息
        
route add [-net|-host] [網域或主機] netmask [mask] [gw|dev]
    [root@itop ~]# route add -host 192.168.100.20 netmask 255.255.255.0 dev eth0
        
route del [-net|-host] [網域或主機] netmask [mask] [gw|dev]
    [root@itop ~]# route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0


ss
[root@itop ~]# ss -tnl   #與netstat類似,數據量較大時ss更有優勢


ifconfig
ifconfig 設備名稱 up|down
        up 啓動指定網絡設備/網卡。
        down 關閉指定網絡設備/網卡。

ifconfig 設備名稱 ip地址  #配置設備ip地址

ifconfig 設備名稱 mtu <字節數>
        設置網卡的最大傳輸單元 (bytes)


10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。
rpm命令實現程序管理:
安裝:-ivh, –nodeps, –replacepkgs
卸載:-e, –nodeps
升級:-Uvh, -Fvh, –nodeps, –oldpackage
查詢:-q, -qa, -qf, -qi, -qd, -qc, -q –scripts, -q –changlog, -q –provides, -q –requires
校驗:-V
導入GPG密鑰:–import, -K, –nodigest, –nosignature
數據庫重建:–initdb, –rebuilddb

Yum 命令實施軟件包管理
repolist [all|enabled|disabled]
顯示程序包:list
# yum list [all | glob_exp1] [glob_exp2] […]
# yum list {available|installed|updates} [glob_exp1] […]

安裝程序包: install package1 [package2] […]
reinstall package1 [package2] […] (重新安裝)

升級程序包:
update [package1] [package2] […]
downgrade package1 [package2] […] (降級)
檢查可用升級:
check-update
卸載程序包:
remove | erase package1 [package2] […]
查看程序包information:
info […]
查看指定的特性(可以是某文件)是由哪個程序包所提供:
provides | whatprovides feature1 [feature2] […]
清理本地緩存:
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
構建緩存:
makecache


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

[root@STCO6~]#vim /etc/yum.repos.d/local.repo
[local]
name=local_repo
baseurl=file:///mnt 
enabled=1 
gpgcheck=0 
[root@STCO6~]#yum clean all
[root@STCO6~]#yum makecache


12、寫一個腳本,完成以下功能
   (1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
   (2) 顯示所有以K開頭的文件的文件名,並且給其附加一個stop字符串;
   (3) 顯示所有以S開頭的文件的文件名,並且給其附加一個start字符串;
   (4) 分別統計S開頭和K開頭的文件各有多少;

方法一:
    

[root@STCO6 tmp]# cat SKfile1.sh 
    #!/bin/bash
    #
    declare -i sfile_sum=0
    declare -i kfile_sum=0
    for i in `ls /etc/rc.d/rc3.d | grep "^K"`;do
        echo "$i stop"
        let kfile_sum++
    done
    for i in `ls /etc/rc.d/rc3.d | grep "^S"`;do
        echo "$i start"
        let sfile_sum++
    done
    echo "S file is $sfile_sum"
    echo "K file is $kfile_sum"
    [root@STCO6 tmp]# chmod +x SKfile1.sh 
    [root@STCO6 tmp]# ./SKfile1.sh 
    K01smartd stop
    K02oddjobd stop
    K05wdaemon stop
    K10psacct stop
    K10saslauthd stop
    K15htcacheclean stop
    K15httpd stop
    K30spice-vdagentd stop
    K50dnsmasq stop
    K60nfs stop
    K61nfs-rdma stop
    K69rpcsvcgssd stop
    K73winbind stop
    K74ntpd stop
    K75ntpdate stop
    K75quota_nld stop
    K76ypbind stop
    K84wpa_supplicant stop
    K87restorecond stop
    K88sssd stop
    K89netconsole stop
    K89rdisc stop
    K92pppoe-server stop
    K95firstboot stop
    K95rdma stop
    K99rngd stop
    S01sysstat start
    S02lvm2-monitor start
    S08ip6tables start
    S08iptables start
    S10network start
    S11auditd start
    S11portreserve start
    S12rsyslog start
    S13cpuspeed start
    S13irqbalance start
    S13rpcbind start
    S15mdmonitor start
    S22messagebus start
    S23NetworkManager start
    S24nfslock start
    S24rpcgssd start
    S25blk-availability start
    S25cups start
    S25netfs start
    S26acpid start
    S26haldaemon start
    S26udev-post start
    S28autofs start
    S50bluetooth start
    S50kdump start
    S55sshd start
    S80postfix start
    S82abrt-ccpp start
    S82abrtd start
    S90crond start
    S95atd start
    S99certmonger start
    S99local start
    S file is 33
    K file is 26

方法二:
    

[root@STCO6 tmp]# cat SKfile2.sh 
    #!/bin/bash
    #
    ls /etc/rc.d/rc3.d/K*|awk '{printf "%s Stop \n", $1}'|awk -F'/' '{print $NF}'
    ls /etc/rc.d/rc3.d/S*|awk '{printf "%s Start \n", $1}'|awk -F'/' '{print $NF}'
    kfile_lines=`ls /etc/rc.d/rc3.d/K*|awk '{print NR}'|tail -1`
    sfile_lines=`ls /etc/rc.d/rc3.d/S*|awk '{print NR}'|tail -1`
    echo "Kfile lines is $kfile_lines"
    echo "Sfile lines is $sfile_lines"
    [root@STCO6 tmp]# chmod +x SKfile2.sh 
    [root@STCO6 tmp]# bash -n SKfile2.sh 
    [root@STCO6 tmp]# ./SKfile2.sh 
    K01smartd Stop 
    K02oddjobd Stop 
    K05wdaemon Stop 
    K10psacct Stop 
    K10saslauthd Stop 
    K15htcacheclean Stop 
    K15httpd Stop 
    K30spice-vdagentd Stop 
    K50dnsmasq Stop 
    K60nfs Stop 
    K61nfs-rdma Stop 
    K69rpcsvcgssd Stop 
    K73winbind Stop 
    K74ntpd Stop 
    K75ntpdate Stop 
    K75quota_nld Stop 
    K76ypbind Stop 
    K84wpa_supplicant Stop 
    K87restorecond Stop 
    K88sssd Stop 
    K89netconsole Stop 
    K89rdisc Stop 
    K92pppoe-server Stop 
    K95firstboot Stop 
    K95rdma Stop 
    K99rngd Stop 
    S01sysstat Start 
    S02lvm2-monitor Start 
    S08ip6tables Start 
    S08iptables Start 
    S10network Start 
    S11auditd Start 
    S11portreserve Start 
    S12rsyslog Start 
    S13cpuspeed Start 
    S13irqbalance Start 
    S13rpcbind Start 
    S15mdmonitor Start 
    S22messagebus Start 
    S23NetworkManager Start 
    S24nfslock Start 
    S24rpcgssd Start 
    S25blk-availability Start 
    S25cups Start 
    S25netfs Start 
    S26acpid Start 
    S26haldaemon Start 
    S26udev-post Start 
    S28autofs Start 
    S50bluetooth Start 
    S50kdump Start 
    S55sshd Start 
    S80postfix Start 
    S82abrt-ccpp Start 
    S82abrtd Start 
    S90crond Start 
    S95atd Start 
    S99certmonger Start 
    S99local Start 
    Kfile lines is 26
    Sfile lines is 33


13、寫一個腳本,完成以下功能
   (1) 腳本能接受用戶名作爲參數;
   (2) 計算此些用戶的ID之和;

  

 [root@STCO6 tmp]# cat usersum.sh 
    #!/bin/bash
    #
    read -p "Please enter some users:" user
    if [ -z "$user" ] ; then
        echo "The username may not be empty. Please enter a valid username!" && exit
    fi
    for i in $user; do
        if ! id $i &> /dev/null; then
            echo "$i not exists"
        else
            let j=`id -u $i`
            let sum+=$j
        fi
    done
    echo "Sum is $sum!"
    [root@STCO6 tmp]# chmod +x usersum.sh 
    [root@STCO6 tmp]# ./usersum.sh
    Please enter some users:testuser1 testuser2 testuser3 testsuer10 testuser11
    testsuer10 not exists
    testuser11 not exists
    Sum is 1509!


14、寫一個腳本
   (1) 傳遞一些目錄給此腳本;
   (2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
   (3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;

[root@STCO6 tmp]# cat directory1.sh 
#!/bin/bash
#
declare -i directory=0
declare -i file=0
declare -i string_file=0
declare -i link_file=0
declare -i block_file=0
  
if [ $# -lt 1 ];then
  echo "Useage:directory1.sh directory|file  ..."
  exit 1 
else
for j in $*;do
  if [ -f $j ];then
    echo "This file is file"
    exit 1
  else
    for i in `ls $j`;do
        cd $j
        if [ -f $i ];then
          echo -e "$i is file."
          let file++
        elif [ -d $i ];then
          echo -e "$i is directory."
          let directory++
        elif [ -c $i ];then
          echo "$i is string file."
          let string_file++
        elif [ -L $i ];then
          echo "$i is link file."
          let link_file++
        elif [ -b $i ];then
          echo "$i is block file."
          let block_file++
        else
          echo "Unknow file."
          exit 2
        fi
    done
      
  fi
done
fi
echo "directory file total:$directory"
echo "file total:$file"
echo "String file total:$string_file"
echo "link file total:$link_file"
echo "block file total:$block_file"
[root@STCO6 tmp]# chmod +x directory1.sh
[root@STCO6 tmp]# bash -n directory1.sh
[root@STCO6 tmp]# ./directory1.sh /etc
abrt is directory.
acpi is directory.
adjtime is file.
aliases is file.
aliases.db is file.
alsa is directory.
alternatives is directory.
anacrontab is file.
anthy-conf is file.
asound.conf is file.
at.deny is file.
audisp is directory.
audit is directory.
autofs.conf is file.
autofs_ldap_auth.conf is file.
auto.master is file.
auto.misc is file.
auto.net is file.
auto.smb is file.
avahi is directory.
bash_completion.d is directory.
bashrc is file.
blkid is directory.
bluetooth is directory.
bonobo-activation is directory.
cas.conf is file.
centos-release is file.
certmonger is directory.
chkconfig.d is directory.
ConsoleKit is directory.
cron.d is directory.
cron.daily is directory.
cron.deny is file.
cron.hourly is directory.
cron.monthly is directory.
crontab is file.
cron.weekly is directory.
crypttab is file.
csh.cshrc is file.
csh.login is file.
cups is directory.
dbus-1 is directory.
default is directory.
depmod.d is directory.
dhcp is directory.
DIR_COLORS is file.
DIR_COLORS.256color is file.
DIR_COLORS.lightbgcolor is file.
dnsmasq.conf is file.
dnsmasq.d is directory.
dracut.conf is file.
dracut.conf.d is directory.
drirc is file.
enscript.cfg is file.
environment is file.
ethers is file.
exports is file.
favicon.png is file.
festival is directory.
filesystems is file.
firefox is directory.
fonts is directory.
foomatic is directory.
fprintd.conf is file.
fstab is file.
gai.conf is file.
gconf is directory.
gcrypt is directory.
gdm is directory.
ghostscript is directory.
gnome-vfs-2.0 is directory.
gnupg is directory.
group is file.
group- is file.
grub.conf is file.
gshadow is file.
gshadow- is file.
gssapi_mech.conf is file.
gtk-2.0 is directory.
hal is directory.
host.conf is file.
hosts is file.
hosts.allow is file.
hosts.deny is file.
hp is directory.
httpd is directory.
idmapd.conf is file.
init is directory.
init.conf is file.
init.d is directory.
inittab is file.
inputrc is file.
ipa is directory.
iproute2 is directory.
issue is file.
issue.net is file.
java is directory.
jvm is directory.
jvm-commmon is directory.
kde is directory.
kde4rc is file.
kderc is file.
kdump-adv-conf is directory.
kdump.conf is file.
krb5.conf is file.
latrace.conf is file.
latrace.d is directory.
ld.so.cache is file.
ld.so.conf is file.
ld.so.conf.d is directory.
libaudit.conf is file.
libnl is directory.
libreport is directory.
libuser.conf is file.
localtime is file.
login.defs is file.
logrotate.conf is file.
logrotate.d is directory.
lsb-release is file.
lsb-release.d is directory.
ltrace.conf is file.
lvm is directory.
magic is file.
mailcap is file.
mail.rc is file.
makedev.d is directory.
man.config is file.
maven is directory.
mime.types is file.
mke2fs.conf is file.
modprobe.d is directory.
motd is file.
mtab is file.
mtools.conf is file.
my.cnf is file.
nanorc is file.
netconfig is file.
NetworkManager is directory.
networks is file.
nfsmount.conf is file.
nsswitch.conf is file.
ntp is directory.
ntp.conf is file.
obex-data-server is directory.
oddjob is directory.
oddjobd.conf is file.
oddjobd.conf.d is directory.
openldap is directory.
opt is directory.
PackageKit is directory.
pam.d is directory.
pango is directory.
passwd is file.
passwd- is file.
pbm2ppa.conf is file.
pcmcia is directory.
pinforc is file.
pkcs11 is directory.
pki is directory.
plymouth is directory.
pm is directory.
pm-utils-hd-apm-restore.conf is file.
pnm2ppa.conf is file.
polkit-1 is directory.
popt.d is directory.
portreserve is directory.
postfix is directory.
ppp is directory.
prelink.cache is file.
prelink.conf is file.
prelink.conf.d is directory.
printcap is file.
profile is file.
profile.d is directory.
protocols is file.
pulse is directory.
purple is directory.
quotagrpadmins is file.
quotatab is file.
rc is file.
rc0.d is directory.
rc1.d is directory.
rc2.d is directory.
rc3.d is directory.
rc4.d is directory.
rc5.d is directory.
rc6.d is directory.
rc.d is directory.
rc.local is file.
rc.sysinit is file.
rdma is directory.
readahead.conf is file.
redhat-lsb is directory.
redhat-release is file.
request-key.conf is file.
request-key.d is directory.
resolv.conf is file.
rpc is file.
rpm is directory.
rsyslog.conf is file.
rsyslog.d is directory.
rwtab is file.
rwtab.d is directory.
samba is directory.
sane.d is directory.
sasl2 is directory.
scl is directory.
screenrc is file.
securetty is file.
security is directory.
selinux is directory.
services is file.
sestatus.conf is file.
setuptool.d is directory.
sgml is directory.
shadow is file.
shadow- is file.
shells is file.
skel is directory.
smartd.conf is file.
sos.conf is file.
sound is directory.
ssh is directory.
ssl is directory.
sssd is directory.
statetab is file.
statetab.d is directory.
sudo.conf is file.
sudoers is file.
sudoers.d is directory.
sudo-ldap.conf is file.
sysconfig is directory.
sysctl.conf is file.
sysctl.d is directory.
system-release is file.
system-release-cpe is file.
terminfo is directory.
Trolltech.conf is file.
udev is directory.
updatedb.conf is file.
vimrc is file.
virc is file.
warnquota.conf is file.
wgetrc is file.
wpa_supplicant is directory.
X11 is directory.
xdg is directory.
xinetd.d is directory.
xml is directory.
yp.conf is file.
yum is directory.
yum.conf is file.
yum.repos.d is directory.
zlogin is file.
zlogout is file.
zprofile is file.
zshenv is file.
zshrc is file.
directory file total:123
file total:135
String file total:0
link file total:0
block file total:0


15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數爲用戶名
如果用戶的id號大於等於500,則顯示此用戶爲普通用戶;

    [root@STCO6 tmp]# cat user.sh 
    #!/bin/bash
    #
    [ $# -ne 1 ] && echo "Please enter one user" && exit
    ! id $1 &> /dev/null && echo "User not exist" && exit
    let a=`id -u $1`
    if [ $a -ge 500 ]; then
        echo "$1 is common user."
    else
        echo "$1 is system user."
    fi
    [root@STCO6 tmp]# chmod +x user.sh 
    [root@STCO6 tmp]# bash -n user.sh 
    [root@STCO6 tmp]# ./user.sh 
    Please enter one user
    [root@STCO6 tmp]# ./user.sh root
    root is system user.
    [root@STCO6 tmp]# ./user.sh user1
    user1 is common user.


16、寫一個腳本
   (1) 添加10用戶user1-user10;密碼同用戶名;
   (2) 用戶不存在時才添加;存在時則跳過;
   (3) 最後顯示本次共添加了多少用戶;

    [root@STCO6 tmp]# cat useradd.sh 
    #!/bin/bash
    #
    for i in {1..10}; do
        if id user$i &> /dev/null ;then
            echo "user$i exists."
            continue 3
        else
            useradd user$i
            if [ $? -eq 0 ]; then
                echo "user$i" | passwd --stdin user$i &> /dev/null
                echo "useradd user$i finished."
            let sum++
            fi
        fi
    done
    echo " useradd $sum user "
    [root@STCO6 tmp]# chmod +x useradd.sh 
    [root@STCO6 tmp]# bash -n useradd.sh 
    [root@STCO6 tmp]# ./useradd.sh 
    user1 exists.
    useradd user2 finished.
    useradd user3 finished.
    useradd user4 finished.
    useradd user5 finished.
    useradd user6 finished.
    useradd user7 finished.
    useradd user8 finished.
    useradd user9 finished.
    user10 exists.
     useradd 8 user


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

    [root@STCO6 ~]# cat /tmp/ping.sh 
    #!/bin/bash
    #
    ip_address='172.16.250'
    for i in {20..100};do
        ping -c 5 -w 5 ${ip_address}.${i} &> /dev/null
            if [ $? -eq 0 ]; then
                echo -e "\033[32m ${ip_address}.${i} \033[0m"
            fi
    done


18、打印九九乘法表;
    方法一:
  

 [root@STCO6 tmp]# cat 99_1.sh 
    #!/bin/bash
    #
    for i in {1..9}; do
        for j in $(seq 1 $i); do 
            echo -e -n "${i}X${j}=$[$i*$j]\t"
        done
        echo
    done
    [root@STCO6 tmp]# chmod +x 99_1.sh 
    [root@STCO6 tmp]# bash -n 99_1.sh 
    [root@STCO6 tmp]# ./99_1.sh 
    1X1=1    
    2X1=2    2X2=4    
    3X1=3    3X2=6    3X3=9    
    4X1=4    4X2=8    4X3=12    4X4=16    
    5X1=5    5X2=10    5X3=15    5X4=20    5X5=25    
    6X1=6    6X2=12    6X3=18    6X4=24    6X5=30    6X6=36    
    7X1=7    7X2=14    7X3=21    7X4=28    7X5=35    7X6=42    7X7=49    
    8X1=8    8X2=16    8X3=24    8X4=32    8X5=40    8X6=48    8X7=56    8X8=64    
    9X1=9    9X2=18    9X3=27    9X4=36    9X5=45    9X6=54    9X7=63    9X8=72    9X9=81

    方法二:

    [root@STCO6 tmp]# cat 99_2.sh 
    #!/bin/bash
    #
    declare -i i=1
    declare -i j=1
    while [ $i -le 9 ]; do
        while [ $j -le $i ]; do
            echo -e -n "${i}X${j}=$[$i*$j]\t"
            let j++
        done
        echo 
        let i++
        let j=1
    done 
    [root@STCO6 tmp]# chmod +x 99_2.sh 
    [root@STCO6 tmp]# bash -n 99_2.sh 
    [root@STCO6 tmp]# ./99_2.sh 
    1X1=1    
    2X1=2    2X2=4    
    3X1=3    3X2=6    3X3=9    
    4X1=4    4X2=8    4X3=12    4X4=16    
    5X1=5    5X2=10    5X3=15    5X4=20    5X5=25    
    6X1=6    6X2=12    6X3=18    6X4=24    6X5=30    6X6=36    
    7X1=7    7X2=14    7X3=21    7X4=28    7X5=35    7X6=42    7X7=49    
    8X1=8    8X2=16    8X3=24    8X4=32    8X5=40    8X6=48    8X7=56    8X8=64    
    9X1=9    9X2=18    9X3=27    9X4=36    9X5=45    9X6=54    9X7=63    9X8=72    9X9=81

    方法三:
    

[root@STCO6 tmp]# cat 99_3.sh 
    #!/bin/bash
    #
    declare -i i=1
    declare -i j=1
    until [ $i -gt 9 ]; do
        until [ $j -gt $i ]; do
            echo -n -e "${i}X${j}=$[$i*$j]\t"
            let j++
        done
        echo
        let i++
        let j=1
    done
    [root@STCO6 tmp]# chmod +x 99_3.sh  
    [root@STCO6 tmp]# bash -n 99_3.sh 
    [root@STCO6 tmp]# ./99_3.sh 
    1X1=1    
    2X1=2    2X2=4    
    3X1=3    3X2=6    3X3=9    
    4X1=4    4X2=8    4X3=12    4X4=16    
    5X1=5    5X2=10    5X3=15    5X4=20    5X5=25    
    6X1=6    6X2=12    6X3=18    6X4=24    6X5=30    6X6=36    
    7X1=7    7X2=14    7X3=21    7X4=28    7X5=35    7X6=42    7X7=49    
    8X1=8    8X2=16    8X3=24    8X4=32    8X5=40    8X6=48    8X7=56    8X8=64    
    9X1=9    9X2=18    9X3=27    9X4=36    9X5=45    9X6=54    9X7=63    9X8=72    9X9=81


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章