Linux基础(8)-RHEL7网络管理以及shell、sed、awk命令

网络相关

Linux下端口号的分配

TCP和UDP采用16位的端口来识别应用程序,所以端口号的范围为:2^6=65536,范围为:0 ~ 65535
1024-5000为TCP/IP的临时分配端口,也就是用户可以使用的范围
大于5000的端口号是为其他服务保留的
小于1024的端口号为一些创建的端口号,比如:
TCP端口分配
21 ftp(文件传输服务)
22 ssh(安全远程连接服务)
23 telnet (远程连接服务)
25 smtp(电子邮件服务)
53 DNS (域名解析服务)
80 http(web服务)
443 https (安全web服务)
UDP端口分配
69 tftp (简单文件传输协议)
123 ntp (时间同步服务)
161 snmp (简单网络管理)
另外:如果实在不记得端口号了,直接查看/etc/services文件。

netstat命令

常用格式:
查看tcp端口:netstat -anpt
查看udp端口:netstat -anpu
常用参数:
-a, –all
-n, –numeric don’t resolve names
-p, –programs
-t 显示tcp连接
-u 显示udp连接

配置网络和IP地址

方法一:nmtui-edit eno16777736
方法二:vim /etc/sysconfig/network-scripts/ifcfg-eno16777736

TYPE=”Ethernet”
BOOTPROTO=”static”
DEFROUTE=”yes”
PEERDNS=”yes”
PEERROUTES=”yes”
IPV4_FAILURE_FATAL=”no”
IPV6INIT=”yes”
IPV6_AUTOCONF=”yes”
IPV6_DEFROUTE=”yes”
IPV6_PEERDNS=”yes”
IPV6_PEERROUTES=”yes”
IPV6_FAILURE_FATAL=”no”
NAME=”eno16777736”
UUID=”3ed15e05-e46c-4e45-b52a-93825ce83d93”
DEVICE=”eno16777736”
ONBOOT=”yes”
IPADDR=”192.168.119.129”
PREFIX=”24”
GATEWAY=”192.168.119.2”
#DNS1=”8.8.8.8”
DNS1=”192.168.119.2”
IPV6_PEERDNS=”yes”
IPV6_PEEROUTES=”yes”
IPV6_PRIVACY=”no”

BOOTPROTO:static(静态IP)、dhcp(动态IP )、none(不指定,即默认成dhcp)
ONBOOT:开机是否激活网卡
IPADDR:IP地址(static方式下需制定)
PREFIX:子网掩码(也可以配置成:NETMASK=”255.255.255.0”)
GATEWAY:网关
DNS1:域名解析服务
其中IPADDR、PREFIX、GATEWAY、DNS1在static方式下必须配置,dhcp方式下可以不用配置。

重启方法1:systemctl restart network
重启方法2:ifdown、ifup

配置主机名

[root@localhost ~]# vim /etc/hostname
[root@localhost ~]# hostname
rhel7.com

:修改完配置文件,想永久生效,需要重启机器

配置hosts 文件

[root@localhost ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.32.131 rhel7.com

查看路由信息

[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.32.1 0.0.0.0 UG 100 0 0 eno16777736
192.168.32.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777736
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
ping命令:
[root@localhost ~]# ping -c 5 -i 3 www.baidu.com

-c 数目 在发送指定数目的包后停止。
-i 秒数 设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。

shell脚本

shell脚本概述

      我们人类的语言计算机是不识别的,这个时候就需要一个“翻译官”,shell就是这个翻译官,我们按照shell的方式输入命令,shell翻译成二进制信息发送给计算机,计算机处理后把返回值交给shell,shell再翻译成我们能识别的格式展现给我们。
      linux的shell脚本是一种特殊的应用程序,常见的shell解释器有很多种使用不同的shell时期内部指令命令提示方式方面会存在一些区别,可以通过/etc/shells文件查看:

[root@rhel7 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

其中:/bin/bash是大多数linux中默认的shell解释器

编写第一个shell脚本

vim first.sh
#!/bin/bash
echo $#
echo $0
echo $1
echo $2
echo $*

第一行的“#!”后面紧接着一个shell解释器,是固定格式。从第二行开始,就开始写shell命令,可以简单把shell脚本理解为成一个shell命令批量执行的集合。
一个shell脚本文件本质上其实是一个本文文件,不同的是要给这个文本文件赋予执行权限,如:chmod +x first.sh

自定义变量
定义变量是用户根据自己的环境自己定义的变量,Bash中比较简单的变量,不用进行提前声明,而是直接指定变量名称并赋给初始值。定义变量的基本格式为变量名=变量值等号两遍不允许出现空格。变量名称只能以字母和下划线开头,名称中不能包含+、- * 、 / . , 、 ? % * …… 等一些特殊字符。
举例:

[root@rhel7 ~]# Linux=7.2
[root@rhel7 ~]# echo $Linux
7.2
[root@rhel7 ~]# echo $Linux $Linux
7.2 7.2
[root@rhel7 ~]# echo ${Linux}
7.2

交互式赋值

[root@rhel7 ~]# read -p “请输入密码:” passwd
请输入密码:123
[root@rhel7 ~]# echo $passwd
123

数值变量的运算

[root@rhel7 ~]# a=20
[root@rhel7 ~]# b=10
[root@rhel7 ~]# expr a+ b
30
[root@rhel7 ~]# expr a b
10
[root@rhel7 ~]# expr a\* b
200
[root@rhel7 ~]# expr a/ b
2

加法运算:+
减法运算: -
乘法运算: *
除法运算: /
求模(取余)运算: %

如要运算后赋值给变量,可以这样:

[root@rhel7 ~]# ab= (expr a + b)  
  [root@rhel7 ~]# echo
ab
30
[root@rhel7 ~]# ab=expr $a - $b
[root@rhel7 ~]# echo $ab
10

$()和“这两种方式是对等的,选其一即可。

特殊shell变量

  1. 环境变量
    环境变量是指系统本身运行需要由Linux系统提前准备好的一类变量,主要用于用户的工作环境,环境变量的由操作系统自己维护。
    使用env查看环境变量:

[root@rhel7 ~]# env
XDG_SESSION_ID=8
HOSTNAME=rhel7.com
TERM=linux
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.182.1 56813 22
SSH_TTY=/dev/pts/1
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31:.arc=01;31:.arj=01;31:.taz=01;31:.lha=01;31:.lz4=01;31:.lzh=01;31:.lzma=01;31:.tlz=01;31:.txz=01;31:.tzo=01;31:.t7z=01;31:.zip=01;31:.z=01;31:.Z=01;31:.dz=01;31:.gz=01;31:.lrz=01;31:.lz=01;31:.lzo=01;31:.xz=01;31:.bz2=01;31:.bz=01;31:.tbz=01;31:.tbz2=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31:.war=01;31:.ear=01;31:.sar=01;31:.rar=01;31:.alz=01;31:.ace=01;31:.zoo=01;31:.cpio=01;31:.7z=01;31:.rz=01;31:.cab=01;31:.jpg=01;35:.jpeg=01;35:.gif=01;35:.bmp=01;35:.pbm=01;35:.pgm=01;35:.ppm=01;35:.tga=01;35:.xbm=01;35:.xpm=01;35:.tif=01;35:.tiff=01;35:.png=01;35:.svg=01;35:.svgz=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35:.mpeg=01;35:.m2v=01;35:.mkv=01;35:.webm=01;35:.ogm=01;35:.mp4=01;35:.m4v=01;35:.mp4v=01;35:.vob=01;35:.qt=01;35:.nuv=01;35:.wmv=01;35:.asf=01;35:.rm=01;35:.rmvb=01;35:.flc=01;35:.avi=01;35:.fli=01;35:.flv=01;35:.gl=01;35:.dl=01;35:.xcf=01;35:.xwd=01;35:.yuv=01;35:.cgm=01;35:.emf=01;35:.axv=01;35:.anx=01;35:.ogv=01;35:.ogx=01;35:.aac=01;36:.au=01;36:.flac=01;36:.mid=01;36:.midi=01;36:.mka=01;36:.mp3=01;36:.mpc=01;36:.ogg=01;36:.ra=01;36:.wav=01;36:.axa=01;36:.oga=01;36:.spx=01;36:*.xspf=01;36:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=zh_CN.UTF-8
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=192.168.182.1 56813 192.168.182.131 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env

环境变量的配置文件是 /etc/profile,这个是全局的,对所有用户生效。
还有一种针对某个用户的环境变量配置文件 /home/用户名/.bash_profile,这个是局部的,只针对指定的有效。
注,修改/etc/profile后,要执行 source /etc/profile,才能立即生效。
2. 位置变量
位置变量是针对一个shell脚本执行时所传参数而言的,如:

[root@rhel7 ~]# ./first.sh a b

其中,./first.sh 为$0(就是shell脚本本身) ,a 为$1,b为$2,依次类推。
3. 预定义变量
$#:命令行中位置变量的个数(程序执行了几个位置参数,不包含$0)
$*:所有位置变量的内容(具体的内容 比如/boot就是一个具体的内容)
$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错
判断是否出现错误正常为0异常错误为非0 取值在1-127之间
$0:当前执行的进程/程序名(就是当前执行的命令或程序的名字)
!$ : 表示上一个命令的最一个参数

sed

sed简介

strem editor 流编辑器,sed编辑器是一行一行的处理文件内容的。正在处理的内容存放在模式空间(缓冲区)内,处理完成后按照选项的规定进行输出或文件的修改。
Sed的优点
1. 主要用来自动编辑一个或多个文件;
2. 简化对文件的反复操作;
3. 非交互式编译文件
语法
sed [options] ‘[command]’ [filename]
options:
-n 抑制自动(默认的) 输出(全部打印) 读取下一个输入行, -n 要读取的行号
-e 执行多个sed指令
-f 运行脚本
-i 编辑文件内容
-i.bak 编辑的同时创造.bak的备份
-r 使用扩展的正则表达式
command:
a 在匹配后追加
i 在匹配后插入
p 打印
d 删除
r/R 读取文件/一行
w 另存
s 查找
c 替换
y 替换
h/H 复制拷贝/追加模式空间(缓冲区)到存放空间
g/G 粘贴 从存放空间取回/追加到模式空间
x 两个空间内容的交换
n/N 拷贝/追加下一行内容到当前
D 删除\n之前的内容
P 打印\n之前的内容
b 无条件跳转
t 满足匹配后的跳转
T 不满足匹配时跳转
简单示例
显示文件第三行

[root@rhel7 ~]# sed -n ‘3p’ passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin

显示文件前三行

[root@rhel7 ~]# sed -n ‘1,3p’ passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

显示文件除前三行之外的全部内容

[root@rhel7 ~]# sed -n ‘1,3p’ passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@rhel7 ~]# sed -n ‘1,3!p’ passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
unbound:x:996:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
colord:x:995:992:User for colord:/var/lib/colord:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
libstoragemgmt:x:992:990:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
setroubleshoot:x:991:989::/var/lib/setroubleshoot:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
chrony:x:990:988::/var/lib/chrony:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:989:984::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
zx:x:1000:1000:zx:/home/zx:/bin/bash

显示文件第三行和之后的三行

[root@rhel7 ~]# sed -n ‘3,+3p’ passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

在文件头插入“###”

[root@rhel7 ~]# sed ‘1i###’ passwd
###
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
unbound:x:996:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
colord:x:995:992:User for colord:/var/lib/colord:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin

在文件尾插入”@@@”

[root@rhel7 ~]# sed ‘$a@@@’ passwd
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin
libstoragemgmt:x:992:990:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
setroubleshoot:x:991:989::/var/lib/setroubleshoot:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
chrony:x:990:988::/var/lib/chrony:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:989:984::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
zx:x:1000:1000:zx:/home/zx:/bin/bash
@@@

把文件第三行替换成“111”

[root@rhel7 ~]# sed ‘3c111’ passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
111
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

awk

awk简介

AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言的最大功能取决于一个人所拥有的知识。awk命名:Alfred Aho、Peter Weinberger和brian kernighan三个人的姓的缩写。
最简单地说, AWK 是一种用于处理文本的编程语言工具。
任何awk语句都是由模式和动作组成,一个awk脚本可以有多个语句。模式决定动作语句的触发条件和触发时间。
特殊字段:
BEGIN语句设置计数和打印头部信息,在任何动作之前进行。
END语句输出统计结果,在完成动作之后执行。
分隔符默认是空格,可以用-F, 改变成逗号为分隔符 -F, 或改成冒号 -F:

例子:
准备要显示的内容:

#vim result.txt
andy 4 85 92 78 94 88
bob 6 89 90 75 90 86
claire 9 84 88 80 92 84
dave 5 94 52 84 86 NA

awk命令格式:

awk -F, ‘BEGIN {print “name level result\n”}{print $0}END{print “end of class1 results”}’ result.txt

其中”-F”、”BEGIN{}”、”END{}”是可以省略的。

显示所有内容:

[root@rhel7 ~]# awk ‘{print $0}’ result.txt
andy 4 85 92 78 94 88
bob 6 89 90 75 90 86
claire 9 84 88 80 92 84
dave 5 94 52 84 86 NA

显示第一列内容:

[root@rhel7 ~]# awk ‘{print $1}’ result.txt
andy
bob
claire
dave

显示第一列,以:作为分隔符

[root@rhel7 ~]# awk -F: ‘{print $1}’ passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
avahi-autoipd
systemd-bus-proxy
systemd-network
dbus
polkitd
unbound
tss
colord

显示第一列和第三列的内容:

[root@rhel7 ~]# awk ‘{print $1,$3}’ result.txt
andy 85
bob 89
claire 84
dave 94

打印一个文件头,打印一个文件尾:

[root@rhel7 ~]# awk ‘BEGIN {print “name level result”} {print 1, 2,$3} END{ print “end of class1 results”}’ result.txt
name level result
andy 4 85
bob 6 89
claire 9 84
dave 5 94
end of class1 results

第二列大于等于5的那些记录:

[root@rhel7 ~]# awk ‘$2 >= 5{print $0}’ result.txt
bob 6 89 90 75 90 86
claire 9 84 88 80 92 84
dave 5 94 52 84 86 NA
[root@rhel7 ~]# awk ‘{if($2 >= 5)print $0}’ result.txt
bob 6 89 90 75 90 86
claire 9 84 88 80 92 84
dave 5 94 52 84 86 NA

注:这里可以现在if里面,或者外面,自己体会一下。

显示用户名为andy或(和)第二列为9的记录

[root@rhel7 ~]# awk ‘{ if($1 == “andy” || $2==”9”) print $0 }’ result.txt
andy 4 85 92 78 94 88
claire 9 84 88 80 92 84
[root@rhel7 ~]# awk ‘{ if($1 == “andy” && $2==”9”) print $0 }’ result.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值