1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
#!/bin/bash for i in {1..254};do if ping -c 1 -w 1 192.168.1.$i &> /dev/null;then echo -e "\033[32m192.168.1.$i\033[0m is up" else echo -e "\033[31m192.168.1.$i\033[0m is down" fi done
2、如何給網絡接口配置多個地址,有哪些
1.使用ifcfg工具來配置
[root@localhost ~]# ifconfig #先查看下本地網絡接口,以ens36為例進行配置多個地址 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.22 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::e4e8:fedc:3ce4:f467 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ca:aa:a0 txqueuelen 1000 (Ethernet) RX packets 258664 bytes 16503651 (15.7 MiB) RX errors 0 dropped 41 overruns 0 frame 0 TX packets 21160 bytes 2557022 (2.4 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.25 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::e9d2:3bcd:cc12:fcd6 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ca:aa:aa txqueuelen 1000 (Ethernet) RX packets 128498 bytes 8532781 (8.1 MiB) RX errors 0 dropped 7653 overruns 0 frame 0 TX packets 17151 bytes 2660221 (2.5 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 210 bytes 18936 (18.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 210 bytes 18936 (18.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:ee:0e:1c txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@localhost ~]# ifconfig ens36:0 192.168.1.101/24 #ifconfig進行配置多地址時需要在接口號后面加上:#來進行配置多個地址 [root@localhost ~]# ifconfig #再次查看本地網絡接口時出現一個名為ens36:0的接口號,這個為ens36的第2個網絡地址 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.22 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::e4e8:fedc:3ce4:f467 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ca:aa:a0 txqueuelen 1000 (Ethernet) RX packets 259063 bytes 16528702 (15.7 MiB) RX errors 0 dropped 41 overruns 0 frame 0 TX packets 21174 bytes 2558222 (2.4 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.25 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::e9d2:3bcd:cc12:fcd6 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ca:aa:aa txqueuelen 1000 (Ethernet) RX packets 129198 bytes 8583799 (8.1 MiB) RX errors 0 dropped 7653 overruns 0 frame 0 TX packets 17375 bytes 2687139 (2.5 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens36:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.101 netmask 255.255.255.0 broadcast 192.168.1.255 ether 00:0c:29:ca:aa:aa txqueuelen 1000 (Ethernet) lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 210 bytes 18936 (18.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 210 bytes 18936 (18.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:ee:0e:1c txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2.使用ip命令進行配置
[root@localhost ~]# ip addr list #使用ip addr list來查看本地接口配置,依舊以ens36為例進行配置 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ca:aa:a0 brd ff:ff:ff:ff:ff:ff inet 192.168.1.22/24 brd 192.168.1.255 scope global dynamic ens33 valid_lft 85503sec preferred_lft 85503sec inet6 fe80::e4e8:fedc:3ce4:f467/64 scope link valid_lft forever preferred_lft forever 3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000 link/ether 52:54:00:ee:0e:1c brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000 link/ether 52:54:00:ee:0e:1c brd ff:ff:ff:ff:ff:ff 5: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ca:aa:aa brd ff:ff:ff:ff:ff:ff inet 192.168.1.25/24 brd 192.168.1.255 scope global dynamic ens36 valid_lft 55915sec preferred_lft 55915sec inet 192.168.1.101/24 brd 192.168.1.255 scope global secondary ens36:0 #此為剛才ifconfig命令配置的地址 valid_lft forever preferred_lft forever inet6 fe80::e9d2:3bcd:cc12:fcd6/64 scope link valid_lft forever preferred_lft forever
[root@localhost ~]# ip addr add 192.168.1.102/24 dev ens36 #使用 ip addr add命令為ens36添加地址為192.168.1.102/24的地址 [root@localhost ~]# ip addr lis #配置完畢再次查看接口 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ca:aa:a0 brd ff:ff:ff:ff:ff:ff inet 192.168.1.22/24 brd 192.168.1.255 scope global dynamic ens33 valid_lft 85418sec preferred_lft 85418sec inet6 fe80::e4e8:fedc:3ce4:f467/64 scope link valid_lft forever preferred_lft forever 3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000 link/ether 52:54:00:ee:0e:1c brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000 link/ether 52:54:00:ee:0e:1c brd ff:ff:ff:ff:ff:ff 5: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ca:aa:aa brd ff:ff:ff:ff:ff:ff inet 192.168.1.25/24 brd 192.168.1.255 scope global dynamic ens36 valid_lft 55830sec preferred_lft 55830sec inet 192.168.1.101/24 brd 192.168.1.255 scope global secondary ens36:0 valid_lft forever preferred_lft forever inet 192.168.1.102/24 scope global secondary ens36 #此為是用ip命令為此接口配置的第3條地址 valid_lft forever preferred_lft forever inet6 fe80::e9d2:3bcd:cc12:fcd6/64 scope link valid_lft forever preferred_lft forever
注意:以上2條命令為通過命令直接送至內核當場有效,重啟后無效,若要永久有效需通過修改配置文件來實現。
3.通過修改配置文件進行配置
網絡配置的配置文件在/etc/sysconfig/network-scripts/下以ifcfg-IFACE名明的文件。
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# ls #此處任然以ifcfg-ens36為例,由于是命令行配置的地址所以沒有配置文件需要手動去創建配置文件 ifcfg-ens33 ifdown-ippp ifdown-sit ifup-bnep ifup-plip ifup-Team network-functions-ipv6 ifcfg-lo ifdown-ipv6 ifdown-Team ifup-eth ifup-plusb ifup-TeamPort ifdown ifdown-isdn ifdown-TeamPort ifup-ib ifup-post ifup-tunnel ifdown-bnep ifdown-post ifdown-tunnel ifup-ippp ifup-ppp ifup-wireless ifdown-eth ifdown-ppp ifup ifup-ipv6 ifup-routes init.ipv6-global ifdown-ib ifdown-routes ifup-aliases ifup-isdn ifup-sit network-functions
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36 #復制ens33的配置文件命名為ens36然后進行手動配置 [root@localhost network-scripts]# ls ifcfg-ens33 ifdown-ib ifdown-routes ifup-aliases ifup-isdn ifup-sit network-functions ifcfg-ens36 ifdown-ippp ifdown-sit ifup-bnep ifup-plip ifup-Team network-functions-ipv6 ifcfg-lo ifdown-ipv6 ifdown-Team ifup-eth ifup-plusb ifup-TeamPort ifdown ifdown-isdn ifdown-TeamPort ifup-ib ifup-post ifup-tunnel ifdown-bnep ifdown-post ifdown-tunnel ifup-ippp ifup-ppp ifup-wireless ifdown-eth ifdown-ppp ifup ifup-ipv6 ifup-routes init.ipv6-global
使用vim編輯ifcfg-ens36這個文件
TYPE="Ethernet" BOOTPROTO="static" IPADDR="192.168.2.100" NETMASK="255.255.255.0" GATEWAY="192.168.2.1" NAME="ens36" DEVICE="ens36" ONBOOT="yes" ~
配置完成后保存退出,由于是通過配置文件進行修改,此時需要重啟網絡服務
[root@localhost network-scripts]# systemctl restart network #重啟網絡服務 [root@localhost network-scripts]# ifconfig #再次查看網絡接口 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.22 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::e4e8:fedc:3ce4:f467 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ca:aa:a0 txqueuelen 1000 (Ethernet) RX packets 268920 bytes 17141298 (16.3 MiB) RX errors 0 dropped 42 overruns 0 frame 0 TX packets 21373 bytes 2579314 (2.4 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.2.100 netmask 255.255.255.0 broadcast 192.168.2.255 #此時接口地址已經變為配置文件所修改的內容 inet6 fe80::20c:29ff:feca:aaaa prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ca:aa:aa txqueuelen 1000 (Ethernet) RX packets 140651 bytes 9339322 (8.9 MiB) RX errors 0 dropped 7666 overruns 0 frame 0 TX packets 19594 bytes 2914428 (2.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 262 bytes 23376 (22.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 262 bytes 23376 (22.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:ee:0e:1c txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
再此需要對此接口進行配置網絡地址時,需要復制原配置文件并把配置文件名字改為原名字后加上:#的格式,然后使用vim對配置文件內容進行修改
[root@localhost network-scripts]# cp ifcfg-ens36 ifcfg-ens36:0 #復制原文件改名 [root@localhost network-scripts]# vim ifcfg-ens36:0 #編輯此配置文件 TYPE="Ethernet" BOOTPROTO="static" IPADDR="192.168.2.105" NETMASK="255.255.255.0" GATEWAY="192.168.2.1" NAME="ens36:0" DEVICE="ens36:0" ONBOOT="yes" ~
[root@localhost network-scripts]# systemctl restart network #重啟網絡服務 [root@localhost network-scripts]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.22 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::e4e8:fedc:3ce4:f467 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ca:aa:a0 txqueuelen 1000 (Ethernet) RX packets 269861 bytes 17214441 (16.4 MiB) RX errors 0 dropped 42 overruns 0 frame 0 TX packets 21709 bytes 2627749 (2.5 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.2.100 netmask 255.255.255.0 broadcast 192.168.2.255 inet6 fe80::20c:29ff:feca:aaaa prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ca:aa:aa txqueuelen 1000 (Ethernet) RX packets 141164 bytes 9373345 (8.9 MiB) RX errors 0 dropped 7821 overruns 0 frame 0 TX packets 19629 bytes 2919336 (2.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens36:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 #此時出現了ens36接口上的第二個網絡地址 inet 192.168.2.105 netmask 255.255.255.0 broadcast 192.168.2.255 ether 00:0c:29:ca:aa:aa txqueuelen 1000 (Ethernet) lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 298 bytes 26456 (25.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 298 bytes 26456 (25.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:ee:0e:1c txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
4.使用nmcli命令添加地址
[root@localhost network-scripts]# nmcli conn modify ens36 +ipv4.address 192.168.2.201/24 #為ens36顯卡添加新地址 [root@localhost network-scripts]# systemctl restart network #重啟網路服務 [root@localhost network-scripts]# nmcli dev show ens36 GENERAL.設備: ens36 GENERAL.類型: ethernet GENERAL.硬盤: 00:0C:29:CA:AA:AA GENERAL.MTU: 1500 GENERAL.狀態: 100 (連接的) GENERAL.CONNECTION: ens36 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/31 WIRED-PROPERTIES.容器: 開 IP4.地址[1]: 192.168.2.100/24 IP4.地址[2]: 192.168.2.201/24 #此處為新添加的網絡地址 IP4.地址[3]: 192.168.2.105/24 IP4.網關: 192.168.2.1 IP6.地址[1]: fe80::20c:29ff:feca:aaaa/64 IP6.網關:
5.使用nmtui進行配置
完成配置后保存退出
3、寫一個腳本,完成以下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
(3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
#!/bin/bash declare -i n=0; declare -i m=0; for FILE in `ls /etc/rc.d/rc3.d`;do if [[ $FILE =~ ^K ]];then echo "$FILE stop" let n=$n+1 elif [[ $FILE =~ ^S ]];then echo "$FILE start" let m=$m+1 fi done echo "First char is S = $m , First char is K = $n"
4、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;
#!/bin/bash declare -i SUM=0 for i in $@;do if ! id $i &> /dev/null ; then echo "$i is not exists" else let SUM=$SUM+$(id -u $i); fi done echo "uid sum = $SUM"
5、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#!/bin/bash declare -i dir=0 declare -i filetype=0 for i in $@;do if [ -d $i ];then for j in $i/*;do file $j &> /dev/null let filetype=$filetype+1 if [ -d $j ];then let dir=$dir+1 fi done else echo "$i is not a dirfile or not exists" fi done echo " dir = $dir ,all file = $filetype
6、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名
如果用戶的id號大于等于500,則顯示此用戶為普通用戶
#!/bin/bash read -p "please send a username:" UNAME if id $UNAME &> /dev/null ;then if [ $(id -u $UNAME) -gt 500 ];then echo "this is a normal user" fi else echo "no this user" fi
7、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;
#!/bin/bash for i in {20..100};do if ping -c 1 -w 1 172.16.250.$i &> /dev/null;then echo "172.16.250.$i online" fi done
8、打印九九乘法表;
#!/bin/bash for i in {1..9};do for j in `seq $i`;do let num=$j*$i echo -n -e "$j*$i=$num\t" done echo done
原創文章,作者:M36-Masuri,如若轉載,請注明出處:http://www.www58058.com/79365