网络命令
ifcfg家庭
ifconfig命令
ifconfig [interface]
# ifconfig -a
# ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address ...
# ifconfig IFACE IP/mask [up]
# ifconfig IFACE IP netmask MASK
ifconfig命令立即生效
启用混杂模式:[-]promisc
route路由管理命令
查看:route -n
添加:route add
route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If ]
目标:192.168.1.3 网关:192.168.0.1
route add -host 192.168.1.3/24 gw 192.168.0.1 dev eth0
目标:192.168.0.0 网关:192.168.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1 dev eth0
route add -net 192.168.0.0/24 gw 192.168.0.1 dev eth0
默认路由,网关:192.168.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.0.1
route add default gw 192.168.0.1
删除:route del
route del [-net|-host] target [gw GW] [netmask Nm] [[dev] If]
目标:192.168.1.3 网关:192.168.0.1
route del -host 192.168.1.3
目标:192.168.0.0 网关:192.168.0.1
route del -net 192.168.0.0 netmask 255.255.255.0
netstat显示网络连接命令
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a]
[--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
-t tcp相关协议
-u udp相关协议
-w socker相关
-l 显示Listen状态
-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
ifup/ifdown
ip家庭
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 addr
ip addr { add| del } IFADDR dev STRING
[label LABEL]:添加地址时指明网卡别名
[scope { global | link | host }]:指明作用域
global:全局可用:
link:仅链接可用:
host:本机可用
[broadcast ADDRESS]: 指明广播地址
ip address show -look at protocol addresses
[dev DEVICE]
[label PATTERN]
[ primary and secondary ]
ip address flush - flush protocol addresses
使用格式同show
ip 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]
注意:需要永久生效,需要修改配置文件
/etc/sysconfig/network-scripts/IFACE
/etc/sysconfig/network-scripts/route-IFACE
两种风格:
1、TARGE via GW
2、每三行定义一条路由
ADDRESS#=TARGET
NETMAKSK#=MASK
GATEWAY#=GW
hostname命令
hostname [HOSTNAME]
/etc/sysconfig/network
网卡接口识别并命名相关的udev配置文件
/etc/udev/rules.d/70-persistent-net.rules
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]
EXPRESSION:
dport =
sport =
示例:'( dport = :ssh or sport = :ssh )'
常用组合:
-tan,-tanl,tanlp,-uan
grep(文本过滤)
-E 支持扩展
-P Perl正则
-e 多个模式
-f 从文件的每个行获取匹配
-i 忽略大小写
-w 模式匹配整个单词
-x 模式匹配整行
-v 显示没用匹配到的
-m 显示输出num结果的
-n 显示行号
-H 打印每个匹配的文件名
-h 不输出文件名
-o 匹配的内容
-q 不输出正常信息
-s 不输出错误信息
-r 递归目录
-c 只打印每个文件的行数
-B 打印匹配的前几行
-A 打印匹配的后几行
-C 打印匹配的前后几行
--color 匹配的字体颜色
sed (流编辑器)
-n :不输出模式空间的内容至屏幕
-e:多点编辑
-f :/PATH/TO/SCRIPT_FILE:从指定文件中读取编辑脚本
-i :修改文件
地址定界
1、不给地址:对全文进行处理
2、单地址
#:指定的行
/pattern/:被此处模式所能够匹配到到的第一行
3、地址范围
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
编辑命令
d:删除
p:显示模式空间中的内容
a \text: 在行后面追加文本
i \text 插入文本
c \text 替换行为单行多行文本
w /path/to/somefile:保存模式空间匹配到的行至指定文件
r /path/to/somefile:读取指定文件的文本流至模式空间中匹配到的行的行后
= 为模式空间中的行打印行号
! 取反条件
s///:支持使用其它分隔符,s@@@, s###
替换标记:
g: 行内全局替换
p: 显示替换成功的行
w: /PATH/TO/SOMEFILE:将替换成功的结果保存至指定 文件中
保持空间:
h: 把模式空间中的内容覆盖至保持空间
H:把模式空间中的内容追加至保持空间
g:从保持空间取出数据覆盖至模式空间
G:从保持空间取出内容追加至模式空间
x:把模式空间中的内容 与保持空间中的内容进行换行
n:读取匹配到的行的下一行至模式空间
N:追加匹配到的行的下 一行至模式空间
d : 删除模式空间中的行
D: 删除多行模式空间中的所有行
awk -- gawk
选项:
-F:指明输入时用到的字段分割符
-v var=value: 自定义变量
1、print
print item1,item2,...
要点:
1、逗号分割符;
2、输出的各item可以字符串,也可以是数字:当前记录的字段、变量或awk的表达式
3、如省略item、相当于print $0;
2、变量
2.1 内建变量
FS: input field seperator,默认为空白字符
OFS:output field seperator,默认为空白字符
RS:input record seperator,输入时的换行符
OFS:output record seperator:输出时的换行符
NF:number of field 字段数量
(print NF),(print $NF)
NR:number of record 行数
FNR:各文件分别计数;行数
FILENAME : 当前文件名
ARGC: 命令行参数的个数
ARGV: 数组,保存的是命令行所给定的各参数
自定义变量
1、-v var=value
变量名区分字符大小写
2、program中直接定义
3 printf命令
格式化输出:print FORMAT ,item1,item2,....
1、FORMAT必须给出
2、不会自动换行,需要显式给出换行控制符
3、FORMAT中需要分别为重于后面的每个item指定一个格式化符号
格式符:
%c:显示字符的ASCII码
%d,%i:显示十进制整数
%e:,%E:科学计数法数值显示
%g,%G:以科学计数法或浮点形式显示数值
%s:显示字符串
%u:无符号整数
%%:显示%自身
修饰符:
#[.#]: 第一个数字控制显示的宽度:第二个小数点后的精度
%3,1f
-:左对齐
+:显示数值的符号
5、操作符
算术操作符:
x+y,x-y,x*y,x/y,x%y
-x
+x:转换为数值
字符串操作符:没用符号的操作符,字符串连接
赋值操作符:
=,+=,-=,*=,/w, ^m
++,--
比较操作符:
~:是否匹配
!~:是否不匹配
逻辑操作符
&&
| |
!
函数调用:
function_name(arpu1,argu2,....)
条件表达式:
selector?if-true-expression:if-false-expression
5、PATTERN
1、empty:空模式,匹配第一行
2、/regular expression/:仅处理能够被此处的模式匹配到的行
3、relational expression:关系表达式:结果有“真”有"假":结果为”真“才会被处理
真:结果为非0值,非空字符串;
4 、line ranges;行范围
startline,endline:/pat1/,/pat2/
注意:不支持直接给出数字的格式
awk -F : '(NR>=2&&NR<=10){print $1}' /etc/passwd
5 、BEGIN/END模式
BEGIN{}:仅在开始处理的文本为之前执行一次
END{} :仅在文本处理完成之后执行一次
7控制语句
if(condition) {statments} if(condition) {statments} else {statements} while(condition) {statments} do {statements} while(condition) for(expr1;expr2;expr3) {statements} break continue delete array[index] delete array exit { statements}7.1 if-else 语法: if(condition) statement [else statement] awk -F : '{if($3>500) {printf "comm user:%s\n",$1} else{printf "Sys User: %s\n",$1}}'7.2 while 循环 语法:while(condition) statement 条件“真”,进入循环,条件“假”,退出循环 awk '/^[[:space:]]*linux16/{i=1;while(i<=NF) {print $i,length($i);i++}}' /etc/grub2.cfg 7.3 do-while循环 语法:do statement while(condition) 意义:至少执行一次循环体7.4 for循环 语法:for(expr1;expr2;expr3) statement for(variable assignment;condition;iteration process) {for-body} awk '/^[[:space:]]*linux16/{for(i=1;i<=NF;i++) {print $i,length($i)}}' /etc/grub2.cfg 特殊用法: 能够遍历数组中的元素: 语法:for(var in array) {for-body}7.5 switch语句 语法:switch(expression) {case VALUE1 or /REGEXP/:statement;case VALUE2 or /REGEXP2/:statement;...; default:statement}7.6 break和continue break [n] continue7.7 next 提前结束对本行的处理而直接进入下一行 awk '{if($3%2!=0) next;print $1,$3}' /etc/passwd8、array 关联数组:array[index-expression] index-expression: 1、可使用任意字符串:字符串要使用双引号: 2、如果某数组元素事先不存在,在引用时,awk会自动创建此元素,并将其值初始化为“空串” 若要判断数组中是否存在某些元素,要使用“index in array”格式进行 weekdays[mon]='Monday' 若要遍历数组中的每个元素,要使用for循环 for(var in array) {for-body} awk 'BEGIN{weekdays["mon"]="Monday";weekdays["tue"]="Tuesday";for(i in weekdays) {print weekdays[i]}}' 注意:var会遍历array的每个索引; state["LISTEN"]++ state["ESTABLISHED"]++ netstat -tan | awk '/^tcp\>/{state[$NF]++}END{for(i in state) {print i,state[i]}}' awk '{ip[$1]++}END{for(i in ip) {print i,ip[i]}}' /var/log/httpd/access_log 练习2:统计指定文件中每个单词出现的次数: awk '{for(i=1;i<=NF;i++){count[$i]++}}END{for(i in count) {print i,count[i]}}'/etc/fstab9、函数 9.1内置函数 数值处理: rand():返回0和1之间一个随机数; 字符串处理: length([s]):返回指定字符串的长度 sub(r,s,[t]):以r表示的模式来查找t所表示的字符中的匹配的内容,并将其第一次出现替换为s所表示的内容 gsub(r,s,[t]):以r表示的模式来查找t所表示的字符中的匹配的内容,并将其所有出线均替换为s所表示的内容 split(s,a[,r]):以r为分隔符切割字符s,并将切割后的结果保持至a所表示的数字中 netstat -tan | awk '/^tcp\>/{split($5,ip,":");count[ip[i]++]}END{for (i in count) {print i,count[i]}}' 9.2 自定义函数